File tree Expand file tree Collapse file tree 2 files changed +28
-6
lines changed Expand file tree Collapse file tree 2 files changed +28
-6
lines changed Original file line number Diff line number Diff line change @@ -85,6 +85,8 @@ class AttributeDict(dict):
8585 "^[0-9A-Fa-f][^0-9A-Fa-f]$" : "^[0-9A-Fa-f][^0-9A-Fa-f]$" ,
8686}
8787
88+ _pat_compiled = {}
89+
8890def viml_add (lst , item ):
8991 lst .append (item )
9092
@@ -100,14 +102,23 @@ def viml_empty(obj):
100102def viml_equalci (a , b ):
101103 return a .lower () == b .lower ()
102104
105+ def _get_compiled_pat (reg , flags ):
106+ key = (reg , flags )
107+ try :
108+ return _pat_compiled [key ]
109+ except KeyError :
110+ pat = re .compile (reg , flags )
111+ _pat_compiled [key ] = pat
112+ return pat
113+
103114def viml_eqreg (s , reg ):
104- return re . search ( pat_vim2py [ reg ], s , re .IGNORECASE )
115+ return _get_compiled_pat ( reg , re .IGNORECASE ). search ( s )
105116
106117def viml_eqregh (s , reg ):
107- return re . search ( pat_vim2py [ reg ], s )
118+ return _get_compiled_pat ( reg , 0 ). search ( s )
108119
109120def viml_eqregq (s , reg ):
110- return re . search ( pat_vim2py [ reg ], s , re .IGNORECASE )
121+ return _get_compiled_pat ( reg , re .IGNORECASE ). search ( s )
111122
112123def viml_escape (s , chars ):
113124 r = ''
Original file line number Diff line number Diff line change @@ -85,6 +85,8 @@ class AttributeDict(dict):
8585 "^[0-9A-Fa-f][^0-9A-Fa-f]$" : "^[0-9A-Fa-f][^0-9A-Fa-f]$" ,
8686}
8787
88+ _pat_compiled = {}
89+
8890def viml_add (lst , item ):
8991 lst .append (item )
9092
@@ -100,14 +102,23 @@ def viml_empty(obj):
100102def viml_equalci (a , b ):
101103 return a .lower () == b .lower ()
102104
105+ def _get_compiled_pat (reg , flags ):
106+ key = (reg , flags )
107+ try :
108+ return _pat_compiled [key ]
109+ except KeyError :
110+ pat = re .compile (pat_vim2py [reg ], flags )
111+ _pat_compiled [key ] = pat
112+ return pat
113+
103114def viml_eqreg (s , reg ):
104- return re . search ( pat_vim2py [ reg ], s , re .IGNORECASE )
115+ return _get_compiled_pat ( reg , re .IGNORECASE ). search ( s )
105116
106117def viml_eqregh (s , reg ):
107- return re . search ( pat_vim2py [ reg ], s )
118+ return _get_compiled_pat ( reg , 0 ). search ( s )
108119
109120def viml_eqregq (s , reg ):
110- return re . search ( pat_vim2py [ reg ], s , re .IGNORECASE )
121+ return _get_compiled_pat ( reg , re .IGNORECASE ). search ( s )
111122
112123def viml_escape (s , chars ):
113124 r = ''
You can’t perform that action at this time.
0 commit comments