Skip to content

Commit

Permalink
Changes to commands and settings
Browse files Browse the repository at this point in the history
- Convert bh commands from text to windows
- Also namespace settings in views
  • Loading branch information
facelessuser committed Jun 13, 2016
1 parent f977ed0 commit 36a8e53
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 32 deletions.
45 changes: 28 additions & 17 deletions bh_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -357,13 +357,13 @@ def match(self, view, force_match=True):
return

# Ensure nothing else calls BH until done
view.settings().set("BracketHighlighterBusy", True)
view.settings().set("bracket_highlighter.busy", True)

# Abort if disabled
if not GLOBAL_ENABLE:
for region_key in view.settings().get("bh_regions", []):
for region_key in view.settings().get("bracket_highlighter.regions", []):
view.erase_regions(region_key)
view.settings().set("BracketHighlighterBusy", False)
view.settings().set("bracket_highlighter.busy", False)
return

# Handle key command quirks
Expand All @@ -385,7 +385,7 @@ def match(self, view, force_match=True):
if self.use_selection_threshold and num_sels > self.auto_selection_threshold:
self.regions.reset(view, num_sels)
self.regions.highlight(HIGH_VISIBILITY)
view.settings().set("BracketHighlighterBusy", False)
view.settings().set("bracket_highlighter.busy", False)
return

# Initialize
Expand All @@ -395,7 +395,7 @@ def match(self, view, force_match=True):

# Nothing to search for
if not self.rules.enabled:
view.settings().set("BracketHighlighterBusy", False)
view.settings().set("bracket_highlighter.busy", False)
return

# Process selections.
Expand Down Expand Up @@ -438,7 +438,7 @@ def match(self, view, force_match=True):
bh_thread.modified = True
bh_thread.time = time()

view.settings().set("BracketHighlighterBusy", False)
view.settings().set("bracket_highlighter.busy", False)

def sub_search(self, sel, scope=None):
"""Search a scope bracket match for bracekts within."""
Expand Down Expand Up @@ -721,11 +721,11 @@ def run(self, edit):
"""Perform string escape toggling."""

default_mode = sublime.load_settings("bh_core.sublime-settings").get('bracket_string_escape_mode', 'string')
if self.view.settings().get('bracket_string_escape_mode', default_mode) == "regex":
self.view.settings().set('bracket_string_escape_mode', "string")
if self.view.settings().get('bracket_highlighter.bracket_string_escape_mode', default_mode) == "regex":
self.view.settings().set('bracket_highlighter.bracket_string_escape_mode', "string")
sublime.status_message("Bracket String Escape Mode: string")
else:
self.view.settings().set('bracket_string_escape_mode', "regex")
self.view.settings().set('bracket_highlighter.bracket_string_escape_mode', "regex")
sublime.status_message("Bracket String Escape Mode: regex")


Expand All @@ -739,7 +739,10 @@ def run(self, edit):
"BracketHighlighter.sublime-settings"
).get('bracket_string_escape_mode', 'string')
sublime.status_message(
"Bracket String Escape Mode: %s" % self.view.settings().get('bracket_string_escape_mode', default_mode)
"Bracket String Escape Mode: %s" % self.view.settings().get(
'bracket_highlighter.bracket_string_escape_mode',
default_mode
)
)


Expand Down Expand Up @@ -770,15 +773,15 @@ def run(self):
bh_regions.clear_all_regions()


class BhKeyCommand(sublime_plugin.WindowCommand):
class BhKeyCommand(sublime_plugin.TextCommand):
"""
Command to process shortcuts, menu calls, and command palette calls.
This is how BhCore is called with different options.
"""

def run(
self, threshold=True, lines=False, adjacent=False,
self, edit, threshold=True, lines=False, adjacent=False,
no_outside_adj=False, no_block_mode=False, ignore=None, plugin=None
):
"""Run BH key command."""
Expand All @@ -801,7 +804,6 @@ def run(
plugin,
True
)
self.view = self.window.active_view()
self.execute()

def execute(self):
Expand Down Expand Up @@ -880,6 +882,7 @@ def on_load(self, view):
if self.ignore_event(view):
return
bh_thread.type = BH_MATCH_TYPE_SELECTION
bh_thread.view = view
sublime.set_timeout(bh_thread.payload, 0)

def on_modified(self, view):
Expand All @@ -889,6 +892,7 @@ def on_modified(self, view):
return
bh_thread.type = BH_MATCH_TYPE_EDIT
bh_thread.modified = True
bh_thread.view = view
bh_thread.time = time()

def on_activated(self, view):
Expand All @@ -897,6 +901,7 @@ def on_activated(self, view):
if self.ignore_event(view):
return
bh_thread.type = BH_MATCH_TYPE_SELECTION
bh_thread.view = view
sublime.set_timeout(bh_thread.payload, 0)

def on_selection_modified(self, view):
Expand All @@ -907,6 +912,7 @@ def on_selection_modified(self, view):
if bh_thread.type != BH_MATCH_TYPE_EDIT:
bh_thread.type = BH_MATCH_TYPE_SELECTION
now = time()
bh_thread.view = view
if now - bh_thread.time > bh_thread.wait_time:
sublime.set_timeout(bh_thread.payload, 0)
else:
Expand All @@ -921,7 +927,12 @@ def ignore_event(self, view):
or if it is too soon to accept an event.
"""

return (view.settings().get('is_widget') or bh_thread.ignore_all)
return (
(
view.settings().get('is_widget')
) or
bh_thread.ignore_all
)


class BhThread(threading.Thread):
Expand All @@ -931,6 +942,7 @@ def __init__(self):
"""Setup the thread."""

self.reset()
self.view = None
threading.Thread.__init__(self)

def reset(self):
Expand All @@ -947,11 +959,10 @@ def payload(self):
"""Code to run."""

self.modified = False
window = sublime.active_window()
view = window.active_view() if window is not None else None
self.ignore_all = True
if bh_match is not None:
bh_match(view, self.type == BH_MATCH_TYPE_EDIT)
bh_match(self.view, self.type == BH_MATCH_TYPE_EDIT)
self.view = None
self.ignore_all = False
self.time = time()

Expand Down
6 changes: 3 additions & 3 deletions bh_regions.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def clear_all_regions():

for window in sublime.windows():
for view in window.views():
for region_key in view.settings().get("bh_regions", []):
for region_key in view.settings().get("bracket_highlighter.regions", []):
view.erase_regions(region_key)


Expand Down Expand Up @@ -489,7 +489,7 @@ def highlight(self, high_visibility):

self.change_sel()

for region_key in self.view.settings().get("bh_regions", []):
for region_key in self.view.settings().get("bracket_highlighter.regions", []):
self.view.erase_regions(region_key)

regions = []
Expand Down Expand Up @@ -517,7 +517,7 @@ def highlight(self, high_visibility):
"bh_" + name + "_content", "no_icon", "content_selections", r, regions, high_visibility
)
# Track which regions were set in the view so that they can be cleaned up later.
self.view.settings().set("bh_regions", regions)
self.view.settings().set("bracket_highlighter.regions", regions)

if self.count_lines:
sublime.status_message('In Block: Lines ' + str(self.lines) + ', Chars ' + str(self.chars))
7 changes: 4 additions & 3 deletions bh_remove.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
)


class BhRemoveBracketsCommand(sublime_plugin.WindowCommand):
class BhRemoveBracketsCommand(sublime_plugin.TextCommand):
"""Command to remove current highlighted brackets and optionally content."""

def remove_brackets(self, value):
Expand All @@ -27,7 +27,7 @@ def remove_brackets(self, value):
block = menu_item == MENU.block or menu_item == MENU.block_indent
content = menu_item == MENU.content

self.window.run_command(
self.view.run_command(
"bh_key",
{
"plugin": {
Expand All @@ -42,9 +42,10 @@ def remove_brackets(self, value):
}
)

def run(self):
def run(self, edit):
"""Show menu of removal options."""

self.window = self.view.window()
self.window.show_quick_panel(
list(MENU),
self.remove_brackets
Expand Down
2 changes: 1 addition & 1 deletion bh_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ def string_escaped(self, pt):
first = False
if (
self.search.view.settings().get(
"bracket_string_escape_mode", self.search.rules.string_escape_mode
"bracket_highlighter.bracket_string_escape_mode", self.search.rules.string_escape_mode
) == "string"
):
first = True
Expand Down
14 changes: 6 additions & 8 deletions bh_swapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@ def wrap(self, wrap_entry):
self.wrap_brackets(0)


class SwapBracketsCommand(sublime_plugin.WindowCommand):
class SwapBracketsCommand(sublime_plugin.TextCommand):
"""Swap bracket command."""

def finalize(self, callback):
"""Execute post wrap callback."""

if self.view is not None:
if not self.view.settings().get("BracketHighlighterBusy", False):
if not self.view.settings().get("bracket_highlighter.busy", False):
callback()
else:
sublime.set_timeout(lambda: self.finalize(callback), 100)
Expand All @@ -48,7 +48,7 @@ def swap_brackets(self, value):

self.brackets = self.wrap._brackets[value]

self.window.run_command(
self.view.run_command(
"bh_async_key" if self.async else "bh_key",
{
"plugin": {
Expand All @@ -65,14 +65,12 @@ def swap_brackets(self, value):
else:
self.finalize(self.wrap.wrap(value))

def run(self, async=False):
def run(self, edit, async=False):
"""Initiate the swap."""

self.async = async
view = self.window.active_view()
if view is None:
return
self.wrap = SwapBrackets(view, "bh_swapping.sublime-settings", "swapping")
self.window = self.view.window()
self.wrap = SwapBrackets(self.view, "bh_swapping.sublime-settings", "swapping")

if len(self.wrap._menu):
self.window.show_quick_panel(
Expand Down

0 comments on commit 36a8e53

Please sign in to comment.