@@ -163,9 +163,19 @@ syn keyword pythonConditional if elif else
163163" we provide a dummy group here to avoid crashing pyrex.vim.
164164syn keyword pythonInclude import
165165syn keyword pythonImport import
166+ syn match pythonIdentifier " \v [a-zA-Z_][a-zA-Z0-9_]*" nextgroup =FunctionParameters
166167syn keyword pythonException try except finally
167168syn keyword pythonOperator and in is not or
168169
170+ " TODO: contain pythonTypeAnno in assignments and non-assigning variable type defs
171+ syn match pythonTypeAnno " :\s *[a-zA-Z0-9_\[\] ,\s ]\+ " display contained contains =pythonType
172+ syn keyword pythonType Any AnyStr Callable ClassVar Tuple Union Optional Type TypeVar contained
173+ syn keyword pythonType AbstractSet MutableSet Mapping MutableMapping Sequence MutableSequence ByteString Deque List contained
174+ syn keyword pythonType Set FrozenSet MappingView KeysView ItemsView ValuesView Awaitable Coroutine AsyncIterable contained
175+ syn keyword pythonType AsyncIterator ContextManager Dict DefaultDict Generator AsyncGenerator Text NamedTuple contained
176+ syn keyword pythonType Iterable Iterator Reversible SupportsInt SupportsFloat SupportsAbs SupportsRound Container contained
177+ syn keyword pythonType Hashable Sized Collection contained
178+
169179syn match pythonStatement " \< yield\> " display
170180syn match pythonImport " \< from\> " display
171181
@@ -179,13 +189,39 @@ else
179189 syn keyword pythonStatement as nonlocal
180190 syn match pythonStatement " \< yield\s\+ from\> " display
181191 syn keyword pythonBuiltinObj None True False
182- syn match pythonFunction " \% ([^[:cntrl:][:space:][:punct:][:digit:]] \| _ \)\% ([^[:cntrl:][:punct:][:space:]] \| _ \) * " display contained
192+ syn match pythonFunction " [a-zA-Z_][a-zA-Z0-9_]* " nextgroup = FunctionParameters display contained
183193 syn keyword pythonStatement await async
184194 syn match pythonStatement " \< async\s\+ def\> " nextgroup =pythonFunction skipwhite
185195 syn match pythonStatement " \< async\s\+ with\> " display
186196 syn match pythonStatement " \< async\s\+ for\> " display
187197endif
188198
199+ syn region FunctionParameters start =' (' end =' )' display contains =
200+ \ FunctionParameters,
201+ \ pythonRepeat,
202+ \ pythonConditional,
203+ \ pythonComment,
204+ \ pythonOperator,
205+ \ pythonNumber,
206+ \ pythonNumberError,
207+ \ pythonFloat,
208+ \ pythonHexNumber,
209+ \ pythonStatement,
210+ \ pythonOctNumber,
211+ \ pythonString,
212+ \ pythonRawString,
213+ \ pythonUniString,
214+ \ pythonExClass,
215+ \ pythonUniRawString,
216+ \ pythonNumber,
217+ \ pythonRawString,
218+ \ pythonBytes,
219+ \ pythonBuiltinObj,
220+ \ pythonNone,
221+ \ pythonBuiltinFunc,
222+ \ pythonTypeAnno,
223+ \ pythonBoolean nextgroup= pythonRaiseFromStatement display contained
224+
189225syn cluster pythonExpression contains =pythonStatement,pythonRepeat,pythonConditional,pythonOperator,pythonNumber,pythonHexNumber,pythonOctNumber,pythonBinNumber,pythonFloat,pythonString,pythonBytes,pythonBoolean,pythonBuiltinObj,pythonBuiltinFunc
190226
191227"
@@ -425,28 +461,28 @@ endif
425461
426462if s: Enabled (" g:python_highlight_builtin_funcs" )
427463 if s: Python2Syntax ()
428- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(apply|basestring|buffer|callable|coerce)>'
429- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(execfile|file|help|intern|long|raw_input)>'
430- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(reduce|reload|unichr|unicode|xrange)>'
464+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(apply|basestring|buffer|callable|coerce)>\z e \( ' nextgroup = FunctionParameters
465+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(execfile|file|help|intern|long|raw_input)>\z e \( ' nextgroup = FunctionParameters
466+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(reduce|reload|unichr|unicode|xrange)>\z e \( ' nextgroup = FunctionParameters
431467 if s: Enabled (" g:python_print_as_function" )
432- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(print)>'
468+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(print)>\z e \( ' nextgroup = FunctionParameters
433469 endif
434470 else
435- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(ascii|exec|memoryview|print)> '
471+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(ascii|exec|memoryview|print)\z e \( > ' nextgroup = FunctionParameters
436472 endif
437- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(__import__|abs|all|any)>'
438- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(bin|bool|bytearray|bytes)>'
439- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(chr|classmethod|cmp|compile|complex)>'
440- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(delattr|dict|dir|divmod|enumerate|eval)>'
441- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(filter|float|format|frozenset|getattr)>'
442- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(globals|hasattr|hash|hex|id)>'
443- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(input|int|isinstance)>'
444- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(issubclass|iter|len|list|locals|map|max)>'
445- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(min|next|object|oct|open|ord)>'
446- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(pow|property|range)>'
447- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(repr|reversed|round|set|setattr)>'
448- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(slice|sorted|staticmethod|str|sum|super|tuple)>'
449- syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(type|vars|zip)>'
473+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(__import__|abs|all|any)>\z e \( ' nextgroup = FunctionParameters
474+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(bin|bool|bytearray|bytes)>\z e \( ' nextgroup = FunctionParameters
475+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(chr|classmethod|cmp|compile|complex)>\z e \( ' nextgroup = FunctionParameters
476+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(delattr|dict|dir|divmod|enumerate|eval)>\z e \( ' nextgroup = FunctionParameters
477+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(filter|float|format|frozenset|getattr)>\z e \( ' nextgroup = FunctionParameters
478+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(globals|hasattr|hash|hex|id)>\z e \( ' nextgroup = FunctionParameters
479+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(input|int|isinstance)>\z e \( ' nextgroup = FunctionParameters
480+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(issubclass|iter|len|list|locals|map|max)>\z e \( ' nextgroup = FunctionParameters
481+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(min|next|object|oct|open|ord)>\z e \( ' nextgroup = FunctionParameters
482+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(pow|property|range)>\z e \( ' nextgroup = FunctionParameters
483+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(repr|reversed|round|set|setattr)>\z e \( ' nextgroup = FunctionParameters
484+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(slice|sorted|staticmethod|str|sum|super|tuple)>\z e \( ' nextgroup = FunctionParameters
485+ syn match pythonBuiltinFunc ' \v (\. )@<!\z s<(type|vars|zip)>\z e \( ' nextgroup = FunctionParameters
450486endif
451487
452488"
@@ -455,39 +491,39 @@ endif
455491
456492if s: Enabled (" g:python_highlight_exceptions" )
457493 if s: Python2Syntax ()
458- syn keyword pythonExClass StandardError
494+ syn keyword pythonExClass StandardError nextgroup = FunctionParameters
459495 else
460- syn keyword pythonExClass BlockingIOError ChildProcessError
461- syn keyword pythonExClass ConnectionError BrokenPipeError
462- syn keyword pythonExClass ConnectionAbortedError ConnectionRefusedError
463- syn keyword pythonExClass ConnectionResetError FileExistsError
464- syn keyword pythonExClass FileNotFoundError InterruptedError
465- syn keyword pythonExClass IsADirectoryError NotADirectoryError
466- syn keyword pythonExClass PermissionError ProcessLookupError TimeoutError
467-
468- syn keyword pythonExClass ResourceWarning
496+ syn keyword pythonExClass BlockingIOError ChildProcessError nextgroup = FunctionParameters
497+ syn keyword pythonExClass ConnectionError BrokenPipeError nextgroup = FunctionParameters
498+ syn keyword pythonExClass ConnectionAbortedError ConnectionRefusedError nextgroup = FunctionParameters
499+ syn keyword pythonExClass ConnectionResetError FileExistsError nextgroup = FunctionParameters
500+ syn keyword pythonExClass FileNotFoundError InterruptedError nextgroup = FunctionParameters
501+ syn keyword pythonExClass IsADirectoryError NotADirectoryError nextgroup = FunctionParameters
502+ syn keyword pythonExClass PermissionError ProcessLookupError TimeoutError nextgroup = FunctionParameters
503+
504+ syn keyword pythonExClass ResourceWarning nextgroup = FunctionParameters
469505 endif
470- syn keyword pythonExClass BaseException
471- syn keyword pythonExClass Exception ArithmeticError
472- syn keyword pythonExClass LookupError EnvironmentError
473-
474- syn keyword pythonExClass AssertionError AttributeError BufferError EOFError
475- syn keyword pythonExClass FloatingPointError GeneratorExit IOError
476- syn keyword pythonExClass ImportError IndexError KeyError
477- syn keyword pythonExClass KeyboardInterrupt MemoryError NameError
478- syn keyword pythonExClass NotImplementedError OSError OverflowError
479- syn keyword pythonExClass ReferenceError RuntimeError StopIteration
480- syn keyword pythonExClass SyntaxError IndentationError TabError
481- syn keyword pythonExClass SystemError SystemExit TypeError
482- syn keyword pythonExClass UnboundLocalError UnicodeError
483- syn keyword pythonExClass UnicodeEncodeError UnicodeDecodeError
484- syn keyword pythonExClass UnicodeTranslateError ValueError VMSError
485- syn keyword pythonExClass WindowsError ZeroDivisionError
486-
487- syn keyword pythonExClass Warning UserWarning BytesWarning DeprecationWarning
488- syn keyword pythonExClass PendingDepricationWarning SyntaxWarning
489- syn keyword pythonExClass RuntimeWarning FutureWarning
490- syn keyword pythonExClass ImportWarning UnicodeWarning
506+ syn keyword pythonExClass BaseException nextgroup = FunctionParameters
507+ syn keyword pythonExClass Exception ArithmeticError nextgroup = FunctionParameters
508+ syn keyword pythonExClass LookupError EnvironmentError nextgroup = FunctionParameters
509+
510+ syn keyword pythonExClass AssertionError AttributeError BufferError EOFError nextgroup = FunctionParameters
511+ syn keyword pythonExClass FloatingPointError GeneratorExit IOError nextgroup = FunctionParameters
512+ syn keyword pythonExClass ImportError IndexError KeyError nextgroup = FunctionParameters
513+ syn keyword pythonExClass KeyboardInterrupt MemoryError NameError nextgroup = FunctionParameters
514+ syn keyword pythonExClass NotImplementedError OSError OverflowError nextgroup = FunctionParameters
515+ syn keyword pythonExClass ReferenceError RuntimeError StopIteration nextgroup = FunctionParameters
516+ syn keyword pythonExClass SyntaxError IndentationError TabError nextgroup = FunctionParameters
517+ syn keyword pythonExClass SystemError SystemExit TypeError nextgroup = FunctionParameters
518+ syn keyword pythonExClass UnboundLocalError UnicodeError nextgroup = FunctionParameters
519+ syn keyword pythonExClass UnicodeEncodeError UnicodeDecodeError nextgroup = FunctionParameters
520+ syn keyword pythonExClass UnicodeTranslateError ValueError VMSError nextgroup = FunctionParameters
521+ syn keyword pythonExClass WindowsError ZeroDivisionError nextgroup = FunctionParameters
522+
523+ syn keyword pythonExClass Warning UserWarning BytesWarning DeprecationWarning nextgroup = FunctionParameters
524+ syn keyword pythonExClass PendingDepricationWarning SyntaxWarning nextgroup = FunctionParameters
525+ syn keyword pythonExClass RuntimeWarning FutureWarning nextgroup = FunctionParameters
526+ syn keyword pythonExClass ImportWarning UnicodeWarning nextgroup = FunctionParameters
491527endif
492528
493529if s: Enabled (" g:python_slow_sync" )
@@ -577,6 +613,9 @@ if version >= 508 || !exists("did_python_syn_inits")
577613
578614 HiLink pythonExClass Structure
579615
616+ HiLink pythonTypeAnno Optional
617+ HiLink pythonType Special
618+
580619 delcommand HiLink
581620endif
582621
0 commit comments