Merge pull request #1 from facelessuser/master

Add toggle on/off functionality to plugin
This commit is contained in:
Jean-Denis Vauguet 2011-10-20 11:05:19 -07:00
commit a790a620e5
3 changed files with 75 additions and 16 deletions

10
Default.sublime-commands Normal file
View File

@ -0,0 +1,10 @@
[
{
"caption": "Trailing Spaces: Toggle Trailing Spaces",
"command": "toggle_trailing_spaces"
},
{
"caption": "Trailing Spaces: Delete Trailing Spaces",
"command": "delete_trailing_spaces"
}
]

View File

@ -17,37 +17,76 @@ Config summary (see README.md for details):
@since: 2011-02-25 @since: 2011-02-25
''' '''
import sublime, sublime_plugin import sublime
import sublime_plugin
DEFAULT_MAX_FILE_SIZE = 1048576 DEFAULT_MAX_FILE_SIZE = 1048576
DEFAULT_COLOR_SCOPE_NAME = "invalid" DEFAULT_COLOR_SCOPE_NAME = "invalid"
DEFAULT_IS_ENABLED = True
#Set whether the plugin is on or off
ts_settings = sublime.load_settings('trailing_spaces.sublime-settings')
trailing_spaces_enabled = bool(ts_settings.get('trailing_spaces_enabled',
DEFAULT_IS_ENABLED))
# Return an array of regions matching trailing spaces. # Return an array of regions matching trailing spaces.
def find_trailing_spaces(view): def find_trailing_spaces(view):
trails = view.find_all('[ \t]+$') return view.find_all('[ \t]+$')
regions = []
for trail in trails:
regions.append(trail) # Highlight trailing spaces
return regions def highlight_trailing_spaces(view):
max_size = ts_settings.get('trailing_spaces_file_max_size',
DEFAULT_MAX_FILE_SIZE)
color_scope_name = ts_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 trailing_spaces_enabled
trailing_spaces_enabled = False if trailing_spaces_enabled else True
# If toggling on, go ahead and perform a pass,
# else clear the highlighting in all views
if trailing_spaces_enabled:
highlight_trailing_spaces(self.window.active_view())
else:
clear_trailing_spaces_highlight(self.window)
# Highlight matching regions. # Highlight matching regions.
class TrailingSpacesHighlightListener(sublime_plugin.EventListener): class TrailingSpacesHighlightListener(sublime_plugin.EventListener):
def on_modified(self, view): def on_modified(self, view):
max_size = view.settings().get('trailing_spaces_file_max_size', if trailing_spaces_enabled:
DEFAULT_MAX_FILE_SIZE) highlight_trailing_spaces(view)
color_scope_name = view.settings().get('trailing_spaces_highlight_color',
DEFAULT_COLOR_SCOPE_NAME) def on_activated(self, view):
if view.size() <= max_size: if trailing_spaces_enabled:
regions = find_trailing_spaces(view) highlight_trailing_spaces(view)
view.add_regions('TrailingSpacesHighlightListener',
regions, color_scope_name, def on_load(self, view):
sublime.DRAW_EMPTY) if trailing_spaces_enabled:
highlight_trailing_spaces(view)
# Allows to erase matching regions. # Allows to erase matching regions.
class DeleteTrailingSpacesCommand(sublime_plugin.TextCommand): class DeleteTrailingSpacesCommand(sublime_plugin.TextCommand):
def run(self, edit): def run(self, edit):
regions = find_trailing_spaces(self.view) regions = find_trailing_spaces(self.view)
if regions: if regions:
# deleting a region changes the other regions positions, so we # deleting a region changes the other regions positions, so we
# handle this maintaining an offset # handle this maintaining an offset

View File

@ -0,0 +1,10 @@
{
// Color is determined by scope
"trailing_spaces_highlight_color" : "invalid",
// Max file size to search
"trailing_spaces_file_max_size" : 1048576,
// By default plugin is enabled or disabled (true|false)
"trailing_spaces_enabled" : true
}