Skip to content

Commit f5b242e

Browse files
committed
syntax: Combine regexes
Improves performance
1 parent 750e4f1 commit f5b242e

File tree

2 files changed

+15
-45
lines changed

2 files changed

+15
-45
lines changed

syntax/python.vim

Lines changed: 14 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -367,66 +367,36 @@ endif
367367
"
368368

369369
if s:Enabled('g:python_highlight_builtin_funcs')
370+
let s:funcs_re = '__import__|abs|all|any|bin|chr|classmethod|cmp|compile|complex|delattr|dir|divmod|enumerate|eval|filter|format|getattr|globals|hasattr|hash|hex|id|input|isinstance|issubclass|iter|len|locals|map|max|min|next|oct|open|ord|pow|property|range|repr|reversed|round|setattr|slice|sorted|staticmethod|sum|super|type|vars|zip'
371+
370372
if s:Python2Syntax()
371-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(apply|basestring|buffer|callable|coerce)>\ze\(' nextgroup=FunctionParameters
372-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(execfile|file|help|intern|long|raw_input)>\ze\(' nextgroup=FunctionParameters
373-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(reduce|reload|unichr|unicode|xrange)>\ze\(' nextgroup=FunctionParameters
373+
let s:funcs_re .= '|apply|basestring|buffer|callable|coerce|execfile|file|help|intern|long|raw_input|reduce|reload|unichr|unicode|xrange'
374374
if s:Enabled('g:python_print_as_function')
375-
syn match pythonBuiltinFunc '\v\.@<!\zs<print>\ze\(' nextgroup=FunctionParameters
375+
let s:funcs_re .= '|print'
376376
endif
377377
else
378-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(ascii|exec|memoryview|print)>\ze\(' nextgroup=FunctionParameters
378+
let s:funcs_re .= '|ascii|exec|memoryview|print'
379379
endif
380-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(__import__|abs|all|any)>\ze\(' nextgroup=FunctionParameters
381-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(bin|chr|classmethod|cmp|compile|complex)>\ze\(' nextgroup=FunctionParameters
382-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(delattr|dir|divmod|enumerate|eval)>\ze\(' nextgroup=FunctionParameters
383-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(filter|format|getattr)>\ze\(' nextgroup=FunctionParameters
384-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(globals|hasattr|hash|hex|id)>\ze\(' nextgroup=FunctionParameters
385-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(input|isinstance)>\ze\(' nextgroup=FunctionParameters
386-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(issubclass|iter|len|locals|map|max)>\ze\(' nextgroup=FunctionParameters
387-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(min|next|oct|open|ord)>\ze\(' nextgroup=FunctionParameters
388-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(pow|property|range)>\ze\(' nextgroup=FunctionParameters
389-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(repr|reversed|round|setattr)>\ze\(' nextgroup=FunctionParameters
390-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(slice|sorted|staticmethod|sum|super)>\ze\(' nextgroup=FunctionParameters
391-
syn match pythonBuiltinFunc '\v\.@<!\zs<%(type|vars|zip)>\ze\(' nextgroup=FunctionParameters
380+
381+
execute 'syn match pythonBuiltinFunc ''\v\.@<!\zs<%(' . s:funcs_re . ')>\ze\('' nextgroup=FunctionParameters'
382+
unlet s:funcs_re
392383
endif
393384

394385
"
395386
" Builtin exceptions and warnings
396387
"
397388

398389
if s:Enabled('g:python_highlight_exceptions')
390+
let s:exs_re = 'BaseException|Exception|ArithmeticError|LookupError|EnvironmentError|AssertionError|AttributeError|BufferError|EOFError|FloatingPointError|GeneratorExit|IOError|ImportError|IndexError|KeyError|KeyboardInterrupt|MemoryError|NameError|NotImplementedError|OSError|OverflowError|ReferenceError|RuntimeError|StopIteration|SyntaxError|IndentationError|TabError|SystemError|SystemExit|TypeError|UnboundLocalError|UnicodeError|UnicodeEncodeError|UnicodeDecodeError|UnicodeTranslateError|ValueError|VMSError|WindowsError|ZeroDivisionError|Warning|UserWarning|BytesWarning|DeprecationWarning|PendingDepricationWarning|SyntaxWarning|RuntimeWarning|FutureWarning|ImportWarning|UnicodeWarning'
391+
399392
if s:Python2Syntax()
400-
syn match pythonExClass '\v\.@<!\zs<%(StandardError)>' nextgroup=FunctionParameters
393+
let s:exs_re .= '|StandardError'
401394
else
402-
syn match pythonExClass '\v\.@<!\zs<%(BlockingIOError|ChildProcessError)>' nextgroup=FunctionParameters
403-
syn match pythonExClass '\v\.@<!\zs<%(ConnectionError|BrokenPipeError)>' nextgroup=FunctionParameters
404-
syn match pythonExClass '\v\.@<!\zs<%(ConnectionAbortedError|ConnectionRefusedError)>' nextgroup=FunctionParameters
405-
syn match pythonExClass '\v\.@<!\zs<%(ConnectionResetError|FileExistsError)>' nextgroup=FunctionParameters
406-
syn match pythonExClass '\v\.@<!\zs<%(FileNotFoundError|InterruptedError)>' nextgroup=FunctionParameters
407-
syn match pythonExClass '\v\.@<!\zs<%(IsADirectoryError|NotADirectoryError)>' nextgroup=FunctionParameters
408-
syn match pythonExClass '\v\.@<!\zs<%(PermissionError|ProcessLookupError TimeoutError)>' nextgroup=FunctionParameters
409-
syn match pythonExClass '\v\.@<!\zs<%(StopAsyncIteration|ResourceWarning)>' nextgroup=FunctionParameters
395+
let s:exs_re .= '|BlockingIOError|ChildProcessError|ConnectionError|BrokenPipeError|ConnectionAbortedError|ConnectionRefusedError|ConnectionResetError|FileExistsError|FileNotFoundError|InterruptedError|IsADirectoryError|NotADirectoryError|PermissionError|ProcessLookupError|TimeoutError|StopAsyncIteration|ResourceWarning'
410396
endif
411397

412-
syn match pythonExClass '\v\.@<!<%(BaseException|Exception|ArithmeticError)>' nextgroup=FunctionParameters
413-
syn match pythonExClass '\v\.@<!\zs<%(LookupError|EnvironmentError|AssertionError)>' nextgroup=FunctionParameters
414-
syn match pythonExClass '\v\.@<!\zs<%(AttributeError|BufferError|EOFError)>' nextgroup=FunctionParameters
415-
syn match pythonExClass '\v\.@<!\zs<%(FloatingPointError|GeneratorExit|IOError)>' nextgroup=FunctionParameters
416-
syn match pythonExClass '\v\.@<!\zs<%(ImportError|IndexError|KeyError)>' nextgroup=FunctionParameters
417-
syn match pythonExClass '\v\.@<!\zs<%(KeyboardInterrupt|MemoryError|NameError)>' nextgroup=FunctionParameters
418-
syn match pythonExClass '\v\.@<!\zs<%(NotImplementedError|OSError|OverflowError)>' nextgroup=FunctionParameters
419-
syn match pythonExClass '\v\.@<!\zs<%(ReferenceError|RuntimeError|StopIteration)>' nextgroup=FunctionParameters
420-
syn match pythonExClass '\v\.@<!\zs<%(SyntaxError|IndentationError|TabError)>' nextgroup=FunctionParameters
421-
syn match pythonExClass '\v\.@<!\zs<%(SystemError|SystemExit|TypeError)>' nextgroup=FunctionParameters
422-
syn match pythonExClass '\v\.@<!\zs<%(UnboundLocalError|UnicodeError)>' nextgroup=FunctionParameters
423-
syn match pythonExClass '\v\.@<!\zs<%(UnicodeEncodeError|UnicodeDecodeError)>' nextgroup=FunctionParameters
424-
syn match pythonExClass '\v\.@<!\zs<%(UnicodeTranslateError|ValueError|VMSError)>' nextgroup=FunctionParameters
425-
syn match pythonExClass '\v\.@<!\zs<%(WindowsError|ZeroDivisionError)>' nextgroup=FunctionParameters
426-
syn match pythonExClass '\v\.@<!\zs<%(Warning|UserWarning|BytesWarning|DeprecationWarning)>' nextgroup=FunctionParameters
427-
syn match pythonExClass '\v\.@<!\zs<%(PendingDepricationWarning|SyntaxWarning)>' nextgroup=FunctionParameters
428-
syn match pythonExClass '\v\.@<!\zs<%(RuntimeWarning|FutureWarning)>' nextgroup=FunctionParameters
429-
syn match pythonExClass '\v\.@<!\zs<%(ImportWarning|UnicodeWarning)>' nextgroup=FunctionParameters
398+
execute 'syn match pythonExClass ''\v\.@<!\zs<%(' . s:exs_re . ')>'' nextgroup=FunctionParameters'
399+
unlet s:exs_re
430400
endif
431401

432402
if s:Enabled('g:python_slow_sync')

tests/test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ async def Test
4040
__import__() abs() all() any() apply() basestring() buffer() callable() chr() classmethod()
4141
cmp() coerce() compile() complex() delattr() dir() divmod() enumerate() eval() execfile() file()
4242
filter() getattr() globals() hasattr() hash() help() hex() id() input() intern() isinstance()
43-
issubclass() iter() len() locals() long() map() max() min() oct() open() ord() pow() property()
43+
issubclass() iter() len() locals() long() map() max() min() oct() open() ord() pow() print() property()
4444
range() raw_input() reduce() reload() repr() reversed() round() setattr() slice() sorted()
4545
staticmethod() sum() super() type() unichr() unicode() vars() xrange() zip()
4646

0 commit comments

Comments
 (0)