44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
|
import sublime, sublime_plugin
|
||
|
|
||
|
class SetMarkCommand(sublime_plugin.TextCommand):
|
||
|
def run(self, edit):
|
||
|
mark = [s for s in self.view.sel()]
|
||
|
self.view.add_regions("mark", mark, "mark", "dot",
|
||
|
sublime.HIDDEN | sublime.PERSISTENT)
|
||
|
|
||
|
class SwapWithMarkCommand(sublime_plugin.TextCommand):
|
||
|
def run(self, edit):
|
||
|
old_mark = self.view.get_regions("mark")
|
||
|
|
||
|
mark = [s for s in self.view.sel()]
|
||
|
self.view.add_regions("mark", mark, "mark", "dot",
|
||
|
sublime.HIDDEN | sublime.PERSISTENT)
|
||
|
|
||
|
if len(old_mark):
|
||
|
self.view.sel().clear()
|
||
|
for r in old_mark:
|
||
|
self.view.sel().add(r)
|
||
|
|
||
|
class SelectToMarkCommand(sublime_plugin.TextCommand):
|
||
|
def run(self, edit):
|
||
|
mark = self.view.get_regions("mark")
|
||
|
|
||
|
num = min(len(mark), len(self.view.sel()))
|
||
|
|
||
|
regions = []
|
||
|
for i in xrange(num):
|
||
|
regions.append(self.view.sel()[i].cover(mark[i]))
|
||
|
|
||
|
for i in xrange(num, len(self.view.sel())):
|
||
|
regions.append(self.view.sel()[i])
|
||
|
|
||
|
self.view.sel().clear()
|
||
|
for r in regions:
|
||
|
self.view.sel().add(r)
|
||
|
|
||
|
class DeleteToMark(sublime_plugin.TextCommand):
|
||
|
def run(self, edit):
|
||
|
self.view.run_command("select_to_mark")
|
||
|
self.view.run_command("add_to_kill_ring", {"forward": False})
|
||
|
self.view.run_command("left_delete")
|