42 lines
1.7 KiB
Python
42 lines
1.7 KiB
Python
import bh_plugin
|
|
import re
|
|
import sublime
|
|
|
|
|
|
class BracketRemove(bh_plugin.BracketPluginCommand):
|
|
def decrease_indent_level(self, edit, row_first, row_last):
|
|
tab_size = self.view.settings().get("tab_size", 4)
|
|
indents = re.compile(r"^(?:\t| {%d}| *)((?:\t| {%d}| )*)([\s\S]*)" % (tab_size, tab_size))
|
|
if not self.single_line:
|
|
for x in reversed(range(row_first, row_last + 1)):
|
|
line = self.view.full_line(self.view.text_point(x, 0))
|
|
text = self.view.substr(line)
|
|
m = indents.match(text)
|
|
if m:
|
|
self.view.replace(edit, line, m.group(1) + m.group(2))
|
|
|
|
def run(self, edit, name, remove_content=False, remove_indent=False, remove_block=False):
|
|
if remove_content:
|
|
self.view.replace(edit, sublime.Region(self.left.begin, self.right.end), "")
|
|
else:
|
|
row_first = self.view.rowcol(self.left.end)[0] + 1
|
|
row_last = self.view.rowcol(self.right.begin)[0] - 1
|
|
self.single_line = not row_first <= row_last
|
|
if remove_block and not self.single_line:
|
|
self.view.replace(edit, self.view.full_line(self.right.toregion()), "")
|
|
else:
|
|
self.view.replace(edit, self.right.toregion(), "")
|
|
if remove_indent:
|
|
self.decrease_indent_level(edit, row_first, row_last)
|
|
if remove_block and not self.single_line:
|
|
self.view.replace(edit, self.view.full_line(self.left.toregion()), "")
|
|
else:
|
|
self.view.replace(edit, self.left.toregion(), "")
|
|
|
|
self.left = None
|
|
self.right = None
|
|
|
|
|
|
def plugin():
|
|
return BracketRemove
|