def do_linting(self): """Highlight all unknown settings keys.""" unknown_regions = None file_name = self.view.file_name() or "" if ( self.known_settings and (USER_PATH in file_name or file_name.endswith(".sublime-project")) and get_setting('settings.linting') ): unknown_regions = [ region for region in self.view.find_by_selector(KEY_SCOPE) if self.view.substr(region) not in self.known_settings ] if unknown_regions: styles = get_setting( 'settings.highlight_styles', ['DRAW_SOLID_UNDERLINE', 'DRAW_NO_FILL', 'DRAW_NO_OUTLINE'] ) self.view.add_regions( 'unknown_settings_keys', unknown_regions, scope=get_setting('settings.highlight_scope', "text"), icon='dot', flags=RegionOption(*styles) ) else: self.view.erase_regions('unknown_settings_keys')
def on_selection_modified(self): prefs = sublime.load_settings('PackageDev.sublime-settings') scope = prefs.get('syntax.captures_highlight_scope', "text") styles = prefs.get('syntax.captures_highlight_styles', ['DRAW_NO_FILL']) style_flags = RegionOption(*styles) self.view.add_regions( key='captures', regions=list(self.get_regex_regions()), scope=scope, flags=style_flags, )
def on_selection_modified_async(self): """Update highlighting of what the current line's test assertions point at.""" if not self.header or len(self.view.sel()) == 0: return lines, line = self.get_details_of_line_being_tested() if not lines or not lines[0].assertion_colrange: self.view.erase_regions('current_syntax_test') return cursor = self.view.sel()[0] highlight_only_cursor = False if cursor.empty(): cursor = sublime.Region(cursor.begin(), cursor.end() + 1) else: highlight_only_cursor = re.match( r'^\^+$', self.view.substr(cursor)) is not None col_start, col_end = lines[0].assertion_colrange if highlight_only_cursor: col_start = self.view.rowcol(cursor.begin())[1] col_end = self.view.rowcol(cursor.end())[1] elif col_end == col_start: col_end += 1 # if the tests extend past the newline character, stop highlighting at the \n # as this is what these tests will assert against pos_start = min(line.begin() + col_start, line.end()) pos_end = min(line.begin() + col_end, line.end() + 1) region = sublime.Region(pos_start, pos_end) scope = get_setting('syntax_test.highlight_scope', 'text') styles = get_setting('syntax_test.highlight_styles', ['DRAW_NO_FILL']) style_flags = RegionOption(*styles) self.view.add_regions('current_syntax_test', [region], scope, '', style_flags)