From 488e793fc56f9aa3282f6ba002e81f1402a09242 Mon Sep 17 00:00:00 2001 From: facelessuser Date: Tue, 18 Oct 2011 17:00:42 -0600 Subject: [PATCH] -Add on_load and on_activated to find trailing spaces without being forced to edit file -Add Command to toggle on/off searching for trailing spaces -Initiate trailing space search on toggle "on" -Clear highlights on toggle "off" -Simplify find_trailing_spaces function --- trailing_spaces.py | 61 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 45 insertions(+), 16 deletions(-) diff --git a/trailing_spaces.py b/trailing_spaces.py index 2ec6e99..72b1beb 100644 --- a/trailing_spaces.py +++ b/trailing_spaces.py @@ -19,35 +19,64 @@ Config summary (see README.md for details): import sublime, sublime_plugin -DEFAULT_MAX_FILE_SIZE = 1048576 +DEFAULT_MAX_FILE_SIZE = 1048576 DEFAULT_COLOR_SCOPE_NAME = "invalid" +DEFAULT_IS_ENABLED = False + +#Set whether the plugin is on or off +TrailingSpacesEnabled = DEFAULT_IS_ENABLED # Return an array of regions matching trailing spaces. def find_trailing_spaces(view): - trails = view.find_all('[ \t]+$') - regions = [] - for trail in trails: - regions.append(trail) - return regions + return view.find_all('[ \t]+$') + +# Highlight trailing spaces +def highlight_trailing_spaces(view): + max_size = view.settings().get('trailing_spaces_file_max_size', + DEFAULT_MAX_FILE_SIZE) + color_scope_name = view.settings().get('trailing_spaces_highlight_color', + DEFAULT_COLOR_SCOPE_NAME) + if view.size() <= max_size: + regions = find_trailing_spaces(view) + view.add_regions('TrailingSpacesHighlightListener', + regions, color_scope_name, + sublime.DRAW_EMPTY) + +# Clear all trailing spaces +def clear_trailing_spaces_highlight(window): + for view in window.views(): + view.erase_regions('TrailingSpacesHighlightListener') + +# Toggle the event listner on or off +class ToggleTrailingSpacesCommand(sublime_plugin.WindowCommand): + def run(self): + global TrailingSpacesEnabled + TrailingSpacesEnabled = False if(TrailingSpacesEnabled) else True + + # If toggling on go ahead and perform a pass, if not clear the highlighting in all views + if(TrailingSpacesEnabled): + highlight_trailing_spaces(self.window.active_view()) + else: + clear_trailing_spaces_highlight(self.window) # Highlight matching regions. class TrailingSpacesHighlightListener(sublime_plugin.EventListener): def on_modified(self, view): - max_size = view.settings().get('trailing_spaces_file_max_size', - DEFAULT_MAX_FILE_SIZE) - color_scope_name = view.settings().get('trailing_spaces_highlight_color', - DEFAULT_COLOR_SCOPE_NAME) - if view.size() <= max_size: - regions = find_trailing_spaces(view) - view.add_regions('TrailingSpacesHighlightListener', - regions, color_scope_name, - sublime.DRAW_EMPTY) + if(TrailingSpacesEnabled): + highlight_trailing_spaces(view) + + def on_activated(self,view): + if(TrailingSpacesEnabled): + highlight_trailing_spaces(view) + + def on_load(self,view): + if(TrailingSpacesEnabled): + highlight_trailing_spaces(view) # Allows to erase matching regions. class DeleteTrailingSpacesCommand(sublime_plugin.TextCommand): def run(self, edit): regions = find_trailing_spaces(self.view) - if regions: # deleting a region changes the other regions positions, so we # handle this maintaining an offset