Skip to content

Commit

Permalink
For some reason sublime dispatch on_selection_modified twice with sam…
Browse files Browse the repository at this point in the history
…e view.sel(). For this reason we avoid double-processing of same values by caching the selection.
  • Loading branch information
titoBouzout committed Jan 8, 2012
1 parent 96335af commit 0b01e7d
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions word_highlight.py
Expand Up @@ -17,6 +17,8 @@ def load(self):
Pref.file_size_limit = int(settings.get('file_size_limit', 4194304))
Pref.timing = time.time()
Pref.enabled = True
Pref.prev_selections = None
Pref.prev_regions = None

Pref().load()

Expand Down Expand Up @@ -49,9 +51,9 @@ def run(self, edit):


class WordHighlightListener(sublime_plugin.EventListener):
prev_regions = []

def on_activated(self, view):
Pref.prev_selections = None
if not view.is_loading():
Pref.word_separators = view.settings().get('word_separators') or settings_base.get('word_separators')
if not Pref.enabled:
Expand All @@ -70,9 +72,13 @@ def highlight_occurences(self, view):
if not Pref.highlight_when_selection_is_empty and not view.has_non_empty_selection_region():
view.erase_status("WordHighlight")
view.erase_regions("WordHighlight")
self.prev_regions = None
Pref.prev_regions = None
return

prev_selections = str(view.sel())
if Pref.prev_selections == prev_selections:
return
else:
Pref.prev_selections = prev_selections
regions = []
occurrencesMessage = []
occurrencesCount = 0
Expand All @@ -94,11 +100,11 @@ def highlight_occurences(self, view):
if occurrences > 0:
occurrencesMessage.append(str(occurrences) + ' occurrence' + ('s' if occurrences != 1 else '') + ' of "' + string + '"')
occurrencesCount = occurrencesCount + occurrences
if self.prev_regions != regions:
if Pref.prev_regions != regions:
view.erase_regions("WordHighlight")
if regions:
view.add_regions("WordHighlight", regions, Pref.color_scope_name, Pref.draw_outlined)
view.set_status("WordHighlight", ", ".join(list(set(occurrencesMessage))))
else:
view.erase_status("WordHighlight")
self.prev_regions = regions
Pref.prev_regions = regions

0 comments on commit 0b01e7d

Please sign in to comment.