From 0b67da7b8fe41e26b0b36e0cae76408db0573eae Mon Sep 17 00:00:00 2001 From: Nicholas Buse Date: Thu, 5 Apr 2018 12:40:31 -0500 Subject: [PATCH] Added on_pre_save() event. Fixes #12. Also added more menu items and new setting: 'delete_blank_lines_on_save' --- DeleteBlankLines.py | 33 +++++++---- DeleteBlankLines.sublime-settings | 3 + Main.sublime-menu | 97 +++++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+), 10 deletions(-) create mode 100644 DeleteBlankLines.sublime-settings diff --git a/DeleteBlankLines.py b/DeleteBlankLines.py index 079001a..6f2fdab 100644 --- a/DeleteBlankLines.py +++ b/DeleteBlankLines.py @@ -20,16 +20,22 @@ def run( self, edit, surplus=False): if (st_version == 2): edit = self.view.begin_edit() - # Loop through user selections. - for currentSelection in self.view.sel(): - # Strip blank lines - newSelections.append( self.strip( edit, currentSelection, surplus ) ) - - # Clear selections since they've been modified. - self.view.sel().clear() - - for newSelection in newSelections: - self.view.sel().add( newSelection ) + # If there is no (empty) selection, operate on the whole file. + # else, operate only on each selection (update the selection for changes) + if len(self.view.sel()) == 1 and self.view.substr(self.view.sel()[0]) == "": + self.strip( edit, sublime.Region(0, self.view.size()), surplus ) + else: + # Loop through user selections. + for currentSelection in self.view.sel(): + # Strip blank lines + newSelections.append( self.strip( edit, currentSelection, surplus ) ) + + # Clear selections since they've been modified. + self.view.sel().clear() + + for newSelection in newSelections: + self.view.sel().add( newSelection ) + # END: if len()... # A corresponding call to end_edit() is required. if (st_version == 2): @@ -61,3 +67,10 @@ def strip( self, edit, currentSelection, surplus ): self.view.replace( edit, currentSelection, output ) return sublime.Region( currentSelection.begin(), currentSelection.begin() + len(output) ) + + +class DeleteBlankLines(sublime_plugin.EventListener): + def on_pre_save(self, view): + settings = sublime.load_settings('DeleteBlankLines.sublime-settings') + if settings and settings.has('delete_blank_lines_on_save') and settings.get("delete_blank_lines_on_save") is True: + view.run_command("delete_blank_lines") diff --git a/DeleteBlankLines.sublime-settings b/DeleteBlankLines.sublime-settings new file mode 100644 index 0000000..c714bfa --- /dev/null +++ b/DeleteBlankLines.sublime-settings @@ -0,0 +1,3 @@ +{ + "delete_blank_lines_on_save": false +} \ No newline at end of file diff --git a/Main.sublime-menu b/Main.sublime-menu index 4c5ad08..ff81676 100644 --- a/Main.sublime-menu +++ b/Main.sublime-menu @@ -24,5 +24,102 @@ ] } ] + }, + + { + "caption": "Preferences", + "mnemonic": "n", + "id": "preferences", + "children": + [ + { + "caption": "Package Settings", + "mnemonic": "P", + "id": "package-settings", + "children": + [ + { + "caption": "DeleteBlankLines", + "children": + [ + { + "args": { + "file": "${packages}/DeleteBlankLines/README.md" + }, + "caption": "README", + "command": "open_file" + }, + { + "caption": "-" + }, + { + "command": "open_file", + "args": {"file": "${packages}/DeleteBlankLines/DeleteBlankLines.sublime-settings"}, + "caption": "Settings – Default" + }, + { + "command": "open_file", + "args": {"file": "${packages}/User/DeleteBlankLines.sublime-settings"}, + "caption": "Settings – User" + }, + { + "caption": "-" + }, + { + "args": { + "file": "${packages}/DeleteBlankLines/Default (Windows).sublime-keymap", + "platform": "Windows" + }, + "caption": "Key Bindings \u2013 Default", + "command": "open_file" + }, + { + "args": { + "file": "${packages}/DeleteBlankLines/Default (OSX).sublime-keymap", + "platform": "OSX" + }, + "caption": "Key Bindings \u2013 Default", + "command": "open_file" + }, + { + "args": { + "file": "${packages}/DeleteBlankLines/Default (Linux).sublime-keymap", + "platform": "Linux" + }, + "caption": "Key Bindings \u2013 Default", + "command": "open_file" + }, + { + "args": { + "file": "${packages}/User/Default (Windows).sublime-keymap", + "platform": "Windows" + }, + "caption": "Key Bindings \u2013 User", + "command": "open_file" + }, + { + "args": { + "file": "${packages}/User/Default (OSX).sublime-keymap", + "platform": "OSX" + }, + "caption": "Key Bindings \u2013 User", + "command": "open_file" + }, + { + "args": { + "file": "${packages}/User/Default (Linux).sublime-keymap", + "platform": "Linux" + }, + "caption": "Key Bindings \u2013 User", + "command": "open_file" + }, + { + "caption": "-" + } + ] + } + ] + } + ] } ]