|
18 | 18 |
|
19 | 19 | DEFAULT_MAX_FILE_SIZE = 1048576 |
20 | 20 | DEFAULT_IS_ENABLED = True |
| 21 | +DEFAULT_NON_VISIBLE_HIGHLIGHTING = 500 |
21 | 22 | DEFAULT_UPDATE_INTERVAL = 250 |
22 | 23 | DEFAULT_MODIFIED_LINES_ONLY = False |
23 | 24 |
|
|
27 | 28 | ts_settings_filename = "trailing_spaces.sublime-settings" |
28 | 29 | ts_settings = None |
29 | 30 | trailing_spaces_live_matching = DEFAULT_IS_ENABLED |
| 31 | +trailing_spaces_non_visible_highlighting = DEFAULT_NON_VISIBLE_HIGHLIGHTING |
30 | 32 | trailing_spaces_update_interval = DEFAULT_UPDATE_INTERVAL |
31 | 33 | trim_modified_lines_only = DEFAULT_MODIFIED_LINES_ONLY |
32 | 34 | trailing_spaces_syntax_ignore = [] |
|
42 | 44 | # Returns nothing. |
43 | 45 | def plugin_loaded(): |
44 | 46 | global ts_settings_filename, ts_settings, trailing_spaces_live_matching |
45 | | - global trailing_spaces_update_interval |
| 47 | + global trailing_spaces_non_visible_highlighting, trailing_spaces_update_interval |
46 | 48 | global current_highlighting_scope, trim_modified_lines_only, startup_queue |
47 | 49 | global DEFAULT_COLOR_SCOPE_NAME, trailing_spaces_syntax_ignore |
48 | 50 |
|
49 | 51 | ts_settings = sublime.load_settings(ts_settings_filename) |
50 | 52 | trailing_spaces_live_matching = bool(ts_settings.get("trailing_spaces_enabled", |
51 | 53 | DEFAULT_IS_ENABLED)) |
| 54 | + trailing_spaces_non_visible_highlighting = int(ts_settings.get("trailing_spaces_non_visible_highlighting", |
| 55 | + DEFAULT_UPDATE_INTERVAL)) |
52 | 56 | trailing_spaces_update_interval = int(ts_settings.get("trailing_spaces_update_interval", |
53 | 57 | DEFAULT_UPDATE_INTERVAL)) |
54 | 58 | current_highlighting_scope = ts_settings.get("trailing_spaces_highlight_color", |
@@ -118,8 +122,14 @@ def find_trailing_spaces(view): |
118 | 122 | if not include_empty_lines: |
119 | 123 | regexp = "(?<=\\S)%s$" % regexp |
120 | 124 |
|
121 | | - # find all matches in the currently visible region |
122 | | - offending_lines = view_find_all_in_region(view, view.visible_region(), regexp) |
| 125 | + # find all matches in the currently visible region plus a little before and after |
| 126 | + searched_region = view.visible_region() |
| 127 | + searched_region.a = max(searched_region.a - trailing_spaces_non_visible_highlighting, 0) |
| 128 | + searched_region.b = min(searched_region.b + trailing_spaces_non_visible_highlighting, view.size()) |
| 129 | + |
| 130 | + searched_region = view.line(searched_region) # align to line start and end |
| 131 | + offending_lines = view_find_all_in_region(view, searched_region, regexp) |
| 132 | + |
123 | 133 | ignored_scopes = ",".join(ts_settings.get("trailing_spaces_scope_ignore", [])) |
124 | 134 | filtered_lines = [] |
125 | 135 | for region in offending_lines: |
|
0 commit comments