def highlighting(self, left, right, scope_bracket=False): """ Adjust region to highlight. This is done after all methods that need to know actual bracket region. At this point, we no longer care about the actual bracket's region, and we change the highlight region to something completely different. """ if left is not None: if scope_bracket: bracket = self.rules.scopes[left.scope]["brackets"][left.type] bracket_scope = left.scope else: bracket = self.rules.brackets[left.type] bracket_type = left.type elif right is not None: if scope_bracket: bracket = self.rules.scopes[right.scope]["brackets"][right.type] bracket_scope = right.scope else: bracket = self.rules.brackets[right.type] bracket_type = right.type else: return left, right if not self.rules.highlighting: return left, right if bracket.highlighting is not None: lbracket, rbracket = bracket.highlighting( self.view, bracket.name, self.bracket_style, bh_plugin.BracketRegion(left.begin, left.end) if left is not None else None, bh_plugin.BracketRegion(right.begin, right.end) if right is not None else None ) if scope_bracket: if lbracket is not None: left = bh_search.ScopeEntry(lbracket.begin, lbracket.end, bracket_scope, bracket_type) else: left = None if rbracket is not None: right = bh_search.ScopeEntry(rbracket.begin, rbracket.end, bracket_scope, bracket_type) else: right = None else: if lbracket is not None: left = bh_search.BracketEntry(lbracket.begin, lbracket.end, bracket_type) else: left = None if rbracket is not None: right = bh_search.BracketEntry(rbracket.begin, rbracket.end, bracket_type) else: right = None return left, right
def post_match(self, left, right, center, scope_bracket=False): """ Peform special logic after a match has been made. This function allows bracket plugins to add aditional logic. """ if left is not None: if scope_bracket: bracket = self.rules.scopes[left.scope]["brackets"][left.type] bracket_scope = left.scope else: bracket = self.rules.brackets[left.type] bracket_type = left.type elif right is not None: if scope_bracket: bracket = self.rules.scopes[right.scope]["brackets"][ right.type] bracket_scope = right.scope else: bracket = self.rules.brackets[right.type] bracket_type = right.type else: return left, right self.bracket_style = bracket.style if not self.rules.check_post_match: return left, right if bracket.post_match is not None: try: lbracket, rbracket, self.bracket_style = bracket.post_match( self.view, bracket.name, bracket.style, bh_plugin.BracketRegion(left.begin, left.end) if left is not None else None, bh_plugin.BracketRegion(right.begin, right.end) if right is not None else None, center, self.search.get_buffer(), self.search.search_window) if scope_bracket: left = bh_search.ScopeEntry( lbracket.begin, lbracket.end, bracket_scope, bracket_type) if lbracket is not None else None right = bh_search.ScopeEntry( rbracket.begin, rbracket.end, bracket_scope, bracket_type) if rbracket is not None else None else: left = bh_search.BracketEntry( lbracket.begin, lbracket.end, bracket_type) if lbracket is not None else None right = bh_search.BracketEntry( rbracket.begin, rbracket.end, bracket_type) if rbracket is not None else None except: log("Plugin Post Match Error:\n%s" % str(traceback.format_exc())) return left, right