Skip to content

Commit

Permalink
Merge pull request #16 from popsikle/master
Browse files Browse the repository at this point in the history
ST3 Fixes and such.
  • Loading branch information
disq committed Jun 12, 2015
2 parents 448392c + da0ffae commit f3c1211
Show file tree
Hide file tree
Showing 4 changed files with 170 additions and 111 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
*.py[cod]
*.pickle
*.pcl

2 changes: 2 additions & 0 deletions .pep8
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[pep8]
ignore=E111,E114,E121,E124,E261
263 changes: 152 additions & 111 deletions highlight_whitespaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,28 @@
Config summary (see README.md for details):
# key binding
{ "keys": ["ctrl+alt+w"], "command": "hws_toggle_whitespaces" }
# file settings
{
"highlight_whitespaces_space_highlight_scope_name": "invalid",
"highlight_whitespaces_tab_highlight_scope_name": "invalid",
"highlight_whitespaces_eol_highlight_scope_name": "invalid",
"highlight_whitespaces_mixed_highlight_scope_name": "invalid",
"highlight_whitespaces_file_max_size": 1048576,
"highlight_whitespaces_enabled": true,
"highlight_whitespaces_check_spaces": true,
"highlight_whitespaces_check_tabs": true,
"highlight_whitespaces_check_eol": true,
"highlight_whitespaces_check_mixed": false,
"highlight_whitespaces_single_space": false,
"highlight_last_whitespace": true
}
Forked from https://github.com/SublimeText/TrailingSpaces/ by Jean-Denis Vauguet <jd@vauguet.fr>, Oktay Acikalin <ok@ryotic.de>
# key binding
{ "keys": ["ctrl+alt+w"], "command": "hws_toggle_whitespaces" }
# file settings
{
"highlight_whitespaces_space_highlight_scope_name": "invalid",
"highlight_whitespaces_tab_highlight_scope_name": "invalid",
"highlight_whitespaces_file_max_size": 1048576,
"highlight_whitespaces_enabled": true,
"highlight_whitespaces_check_spaces": true,
"highlight_whitespaces_check_tabs": true,
"highlight_whitespaces_single_space": false,
"highlight_last_whitespace": true
}
Forked from https://github.com/SublimeText/TrailingSpaces/
by Jean-Denis Vauguet <jd@vauguet.fr>, Oktay Acikalin <ok@ryotic.de>
@author: Kemal Hadimli <disq@sf.net>
@contrib: Salvatore Poliandro III <popsikle@gmail.com>
@license: MIT (http://www.opensource.org/licenses/mit-license.php)
@since: 2012-10-05
@since: 2015-06-05
'''

import sublime
Expand All @@ -42,152 +40,195 @@
DEFAULT_CHECK_MIXED = True
DEFAULT_LAST_WHITESPACE = False

#Set whether the plugin is on or off
hws_settings = sublime.load_settings('highlight_whitespaces.sublime-settings')
hws_enabled = bool(hws_settings.get('highlight_whitespaces_enabled',
DEFAULT_IS_ENABLED))
hws_toggled = False
hws_v3 = (int(sublime.version()) >= 3000)


def plugin_loaded():
global hws_v3

if is_enabled(True) and hws_v3:
highlight_whitespaces(sublime.active_window().active_view())


def is_enabled(init=False):
global hws_toggled

if init:
hws_toggled = bool(get_settings().get('highlight_whitespaces_enabled',
DEFAULT_IS_ENABLED))
return hws_toggled


def get_settings():
s = sublime.load_settings('highlight_whitespaces.sublime-settings')
return s
return sublime.load_settings('highlight_whitespaces.sublime-settings')


# Determine if the view is a find results view
def is_find_results(view):
return view.settings().get('syntax') and "Find Results" in view.settings().get('syntax')
return (view.settings().get('syntax') and
"Find Results" in view.settings().get('syntax'))


# Return an array of regions matching whitespaces.
def find_whitespaces_spaces(view):
hws_settings = get_settings()
last_whitespace = bool(hws_settings.get('highlight_last_whitespace',DEFAULT_LAST_WHITESPACE))
single_space = bool(hws_settings.get('highlight_whitespaces_single_space',DEFAULT_SINGLE_SPACE))
if single_space:
regex = ' +'
else:
regex = ' {2,}|\t | \t'
if last_whitespace:
regex += '| {1,}$'
hws_settings = get_settings()
last_whitespace = bool(hws_settings.get('highlight_last_whitespace',
DEFAULT_LAST_WHITESPACE))
single_space = bool(hws_settings.get('highlight_whitespaces_single_space',
DEFAULT_SINGLE_SPACE))
if single_space:
regex = ' +'
else:
regex = ' {2,}|\t | \t'
if last_whitespace:
regex += '| {1,}$'

return view.find_all(regex)

return view.find_all(regex)

def find_whitespaces_tabs(view):
return view.find_all('\t+')
return view.find_all('\t+')


def find_whitespaces_eol(view):
return view.find_all('[\t ]+$')


def find_whitespaces_mixed(view):
return view.find_all('(\t )|( \t)')


# Highlight whitespaces
def highlight_whitespaces(view):
hws_settings = get_settings()

max_size = hws_settings.get('highlight_whitespaces_file_max_size',
DEFAULT_MAX_FILE_SIZE)
space_scope_name = hws_settings.get('highlight_whitespaces_space_highlight_scope_name',
DEFAULT_COLOR_SCOPE_NAME)
tab_scope_name = hws_settings.get('highlight_whitespaces_tab_highlight_scope_name',
DEFAULT_COLOR_SCOPE_NAME)
eol_scope_name = hws_settings.get('highlight_whitespaces_eol_highlight_scope_name',
DEFAULT_COLOR_SCOPE_NAME)
mixed_scope_name = hws_settings.get('highlight_whitespaces_mixed_highlight_scope_name',
DEFAULT_COLOR_SCOPE_NAME)
if view.size() <= max_size and not is_find_results(view):
if hws_settings.get('highlight_whitespaces_check_spaces', DEFAULT_CHECK_SPACES):
space_regions = find_whitespaces_spaces(view)
view.add_regions('WhitespacesHighlightListener',
space_regions, space_scope_name, '',
sublime.DRAW_EMPTY)
if hws_settings.get('highlight_whitespaces_check_tabs', DEFAULT_CHECK_TABS):
tab_regions = find_whitespaces_tabs(view)
view.add_regions('WhitespacesHighlightListener2',
tab_regions, tab_scope_name, '',
sublime.DRAW_EMPTY)
if hws_settings.get('highlight_whitespaces_check_eol', DEFAULT_CHECK_EOL):
eol_regions = find_whitespaces_eol(view)
view.add_regions('WhitespacesHighlightListener3',
eol_regions, eol_scope_name, '',
sublime.DRAW_EMPTY)
if hws_settings.get('highlight_whitespaces_check_mixed', DEFAULT_CHECK_MIXED):
mixed_regions = find_whitespaces_mixed(view)
view.add_regions('WhitespacesHighlightListener4',
mixed_regions, mixed_scope_name, '',
sublime.DRAW_EMPTY)
hws_settings = get_settings()

max_size = hws_settings.get('highlight_whitespaces_file_max_size',
DEFAULT_MAX_FILE_SIZE)
space_scope_name = \
hws_settings.get('highlight_whitespaces_space_highlight_scope_name',
DEFAULT_COLOR_SCOPE_NAME)
tab_scope_name = \
hws_settings.get('highlight_whitespaces_tab_highlight_scope_name',
DEFAULT_COLOR_SCOPE_NAME)

eol_scope_name = \
hws_settings.get('highlight_whitespaces_eol_highlight_scope_name',
DEFAULT_COLOR_SCOPE_NAME)

mixed_scope_name = \
hws_settings.get('highlight_whitespaces_mixed_highlight_scope_name',
DEFAULT_COLOR_SCOPE_NAME)

if view.size() <= max_size and not is_find_results(view):
if hws_settings.get('highlight_whitespaces_check_spaces',
DEFAULT_CHECK_SPACES):
space_regions = find_whitespaces_spaces(view)
view.add_regions('WhitespacesHighlightListener',
space_regions, space_scope_name, '',
sublime.DRAW_EMPTY)

if hws_settings.get('highlight_whitespaces_check_tabs',
DEFAULT_CHECK_TABS):
tab_regions = find_whitespaces_tabs(view)
view.add_regions('WhitespacesHighlightListener2',
tab_regions, tab_scope_name, '',
sublime.DRAW_EMPTY)

if hws_settings.get('highlight_whitespaces_check_eol', DEFAULT_CHECK_EOL):
eol_regions = find_whitespaces_eol(view)
view.add_regions('WhitespacesHighlightListener3',
eol_regions, eol_scope_name, '',
sublime.DRAW_EMPTY)

if hws_settings.get('highlight_whitespaces_check_mixed',
DEFAULT_CHECK_MIXED):
mixed_regions = find_whitespaces_mixed(view)
view.add_regions('WhitespacesHighlightListener4',
mixed_regions, mixed_scope_name, '',
sublime.DRAW_EMPTY)


# Clear all white spaces
def clear_whitespaces_highlight(window):
for view in window.views():
view.erase_regions('WhitespacesHighlightListener')
view.erase_regions('WhitespacesHighlightListener2')
view.erase_regions('WhitespacesHighlightListener3')
view.erase_regions('WhitespacesHighlightListener4')
for view in window.views():
view.erase_regions('WhitespacesHighlightListener')
view.erase_regions('WhitespacesHighlightListener2')
view.erase_regions('WhitespacesHighlightListener3')
view.erase_regions('WhitespacesHighlightListener4')


# Toggle the event listner on or off
class HwsToggleWhitespacesCommand(sublime_plugin.WindowCommand):
def run(self):
global hws_enabled
hws_enabled = False if hws_enabled else True

# If toggling on, go ahead and perform a pass,
# else clear the highlighting in all views
if hws_enabled:
highlight_whitespaces(self.window.active_view())
else:
clear_whitespaces_highlight(self.window)
def run(self):
global hws_toggled
hws_toggled = False if hws_toggled else True

# If toggling on, go ahead and perform a pass,
# else clear the highlighting in all views
if hws_toggled:
highlight_whitespaces(self.window.active_view())
else:
clear_whitespaces_highlight(self.window)


# Highlight matching regions.
class WhitespacesHighlightListener(sublime_plugin.EventListener):
def on_modified(self, view):
if hws_enabled:
highlight_whitespaces(view)
def on_modified(self, view):
if hws_toggled:
highlight_whitespaces(view)

def on_activated(self, view):
if hws_enabled:
highlight_whitespaces(view)
def on_activated(self, view):
if hws_toggled:
highlight_whitespaces(view)

def on_load(self, view):
if hws_toggled:
highlight_whitespaces(view)

def on_load(self, view):
if hws_enabled:
highlight_whitespaces(view)

class WhitespacesHighlightListener2(sublime_plugin.EventListener):
def on_modified(self, view):
if hws_enabled:
highlight_whitespaces(view)
def on_modified(self, view):
if hws_toggled:
highlight_whitespaces(view)

def on_activated(self, view):
if hws_enabled:
highlight_whitespaces(view)
def on_activated(self, view):
if hws_toggled:
highlight_whitespaces(view)

def on_load(self, view):
if hws_toggled:
highlight_whitespaces(view)

def on_load(self, view):
if hws_enabled:
highlight_whitespaces(view)

class WhitespacesHighlightListener3(sublime_plugin.EventListener):
def on_modified(self, view):
if hws_enabled:
if hws_toggled:
highlight_whitespaces(view)

def on_activated(self, view):
if hws_enabled:
if hws_toggled:
highlight_whitespaces(view)

def on_load(self, view):
if hws_enabled:
if hws_toggled:
highlight_whitespaces(view)


class WhitespacesHighlightListener4(sublime_plugin.EventListener):
def on_modified(self, view):
if hws_enabled:
if hws_toggled:
highlight_whitespaces(view)

def on_activated(self, view):
if hws_enabled:
if hws_toggled:
highlight_whitespaces(view)

def on_load(self, view):
if hws_enabled:
if hws_toggled:
highlight_whitespaces(view)


# pluging init for ST2
if not hws_v3:
plugin_loaded()
12 changes: 12 additions & 0 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[flake8]
; Ignored error codes:
; E111 indentation is not a multiple of four
; E114 indentation is not a multiple of four (comments)
; E121 continuation line indentation is not a multiple of four
; E124 closing bracket does not match visual indentation
; E261 at least two spaces before inline comment
;
; See also: http://pep8.readthedocs.org/en/latest/intro.html#error-codes
; See also: https://flake8.readthedocs.org/en/2.0/warnings.html#error-codes
ignore=E111,E114,E121,E124,E261
max-line-length = 79

0 comments on commit f3c1211

Please sign in to comment.