@@ -45,10 +45,8 @@ def __init__(self, editwin):
4545 # and deactivate_restore (which calls event_delete).
4646 editwin .text .bind (self .RESTORE_VIRTUAL_EVENT_NAME ,
4747 self .restore_event )
48- self .bell = self .text .bell if self .BELL else lambda : None
4948 self .counter = 0
5049 self .is_restore_active = 0
51- self .set_style (self .STYLE )
5250
5351 @classmethod
5452 def reload (cls ):
@@ -75,27 +73,11 @@ def deactivate_restore(self):
7573 self .text .event_delete (self .RESTORE_VIRTUAL_EVENT_NAME , seq )
7674 self .is_restore_active = False
7775
78- def set_style (self , style ):
79- "Set tag and timeout functions."
80- self .STYLE = style
81- self .create_tag = (
82- self .create_tag_opener if style in {"opener" , "default" } else
83- self .create_tag_parens if style == "parens" else
84- self .create_tag_expression ) # "expression" or unknown
85-
86- self .set_timeout = (self .set_timeout_last if self .FLASH_DELAY else
87- self .set_timeout_none )
88-
8976 def flash_paren_event (self , event ):
9077 "Handle editor 'show surrounding parens' event (menu or shortcut)."
9178 indices = (HyperParser (self .editwin , "insert" )
9279 .get_surrounding_brackets ())
93- if indices is None :
94- self .bell ()
95- return "break"
96- self .activate_restore ()
97- self .create_tag (indices )
98- self .set_timeout ()
80+ self .finish_paren_event (indices )
9981 return "break"
10082
10183 def paren_closed_event (self , event ):
@@ -108,13 +90,19 @@ def paren_closed_event(self, event):
10890 if not hp .is_in_code ():
10991 return
11092 indices = hp .get_surrounding_brackets (_openers [closer ], True )
111- if indices is None :
112- self .bell ()
93+ self .finish_paren_event (indices )
94+ return # Allow calltips to see ')'
95+
96+ def finish_paren_event (self , indices ):
97+ if indices is None and self .BELL :
98+ self .text .bell ()
11399 return
114100 self .activate_restore ()
115- self .create_tag (indices )
116- self .set_timeout ()
117- return
101+ # self.create_tag(indices)
102+ self .tagfuncs .get (self .STYLE , self .create_tag_expression )(self , indices )
103+ # self.set_timeout()
104+ (self .set_timeout_last if self .FLASH_DELAY else
105+ self .set_timeout_none )()
118106
119107 def restore_event (self , event = None ):
120108 "Remove effect of doing match."
@@ -152,6 +140,13 @@ def create_tag_expression(self, indices):
152140 self .text .tag_add ("paren" , indices [0 ], rightindex )
153141 self .text .tag_config ("paren" , self .HILITE_CONFIG )
154142
143+ tagfuncs = {
144+ 'opener' : create_tag_opener ,
145+ 'default' : create_tag_opener ,
146+ 'parens' : create_tag_parens ,
147+ 'expression' : create_tag_expression ,
148+ }
149+
155150 # any one of the set_timeout_XXX methods can be used depending on
156151 # the style
157152
0 commit comments