1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: Python 3541f92d6SBram Moolenaar" Maintainer: Zvezdan Petkovic <[email protected]> 4*e4a3bcf2SBram Moolenaar" Last Change: 2016 Aug 14 5541f92d6SBram Moolenaar" Credits: Neil Schemenauer <[email protected]> 65c73622aSBram Moolenaar" Dmitry Vasiliev 7071d4279SBram Moolenaar" 85c73622aSBram Moolenaar" This version is a major rewrite by Zvezdan Petkovic. 9071d4279SBram Moolenaar" 105c73622aSBram Moolenaar" - introduced highlighting of doctests 115c73622aSBram Moolenaar" - updated keywords, built-ins, and exceptions 125c73622aSBram Moolenaar" - corrected regular expressions for 13071d4279SBram Moolenaar" 145c73622aSBram Moolenaar" * functions 155c73622aSBram Moolenaar" * decorators 165c73622aSBram Moolenaar" * strings 175c73622aSBram Moolenaar" * escapes 185c73622aSBram Moolenaar" * numbers 195c73622aSBram Moolenaar" * space error 20071d4279SBram Moolenaar" 215c73622aSBram Moolenaar" - corrected synchronization 225c73622aSBram Moolenaar" - more highlighting is ON by default, except 235c73622aSBram Moolenaar" - space error highlighting is OFF by default 24071d4279SBram Moolenaar" 255c73622aSBram Moolenaar" Optional highlighting can be controlled using these variables. 26071d4279SBram Moolenaar" 275c73622aSBram Moolenaar" let python_no_builtin_highlight = 1 285c73622aSBram Moolenaar" let python_no_doctest_code_highlight = 1 295c73622aSBram Moolenaar" let python_no_doctest_highlight = 1 305c73622aSBram Moolenaar" let python_no_exception_highlight = 1 315c73622aSBram Moolenaar" let python_no_number_highlight = 1 325c73622aSBram Moolenaar" let python_space_error_highlight = 1 33071d4279SBram Moolenaar" 345c73622aSBram Moolenaar" All the options above can be switched on together. 35071d4279SBram Moolenaar" 36071d4279SBram Moolenaar" let python_highlight_all = 1 37071d4279SBram Moolenaar" 38071d4279SBram Moolenaar 395c73622aSBram Moolenaar" For version 5.x: Clear all syntax items. 405c73622aSBram Moolenaar" For version 6.x: Quit when a syntax file was already loaded. 41071d4279SBram Moolenaarif version < 600 42071d4279SBram Moolenaar syntax clear 43071d4279SBram Moolenaarelseif exists("b:current_syntax") 44071d4279SBram Moolenaar finish 45071d4279SBram Moolenaarendif 46071d4279SBram Moolenaar 4700659069SBram Moolenaar" We need nocompatible mode in order to continue lines with backslashes. 4800659069SBram Moolenaar" Original setting will be restored. 4900659069SBram Moolenaarlet s:cpo_save = &cpo 5000659069SBram Moolenaarset cpo&vim 5100659069SBram Moolenaar 525c73622aSBram Moolenaar" Keep Python keywords in alphabetical order inside groups for easy 535c73622aSBram Moolenaar" comparison with the table in the 'Python Language Reference' 54f9132810SBram Moolenaar" https://docs.python.org/2/reference/lexical_analysis.html#keywords, 55f9132810SBram Moolenaar" https://docs.python.org/3/reference/lexical_analysis.html#keywords. 565c73622aSBram Moolenaar" Groups are in the order presented in NAMING CONVENTIONS in syntax.txt. 575c73622aSBram Moolenaar" Exceptions come last at the end of each group (class and def below). 585c73622aSBram Moolenaar" 595c73622aSBram Moolenaar" Keywords 'with' and 'as' are new in Python 2.6 605c73622aSBram Moolenaar" (use 'from __future__ import with_statement' in Python 2.5). 615c73622aSBram Moolenaar" 62f9132810SBram Moolenaar" Some compromises had to be made to support both Python 3 and 2. 63f9132810SBram Moolenaar" We include Python 3 features, but when a definition is duplicated, 645c73622aSBram Moolenaar" the last definition takes precedence. 655c73622aSBram Moolenaar" 66f9132810SBram Moolenaar" - 'False', 'None', and 'True' are keywords in Python 3 but they are 67f9132810SBram Moolenaar" built-ins in 2 and will be highlighted as built-ins below. 68f9132810SBram Moolenaar" - 'exec' is a built-in in Python 3 and will be highlighted as 695c73622aSBram Moolenaar" built-in below. 70f9132810SBram Moolenaar" - 'nonlocal' is a keyword in Python 3 and will be highlighted. 71f9132810SBram Moolenaar" - 'print' is a built-in in Python 3 and will be highlighted as 72f9132810SBram Moolenaar" built-in below (use 'from __future__ import print_function' in 2) 73ca63501fSBram Moolenaar" - async and await were added in Python 3.5 and are soft keywords. 745c73622aSBram Moolenaar" 756f1d9a09SBram Moolenaarsyn keyword pythonStatement False None True 765c73622aSBram Moolenaarsyn keyword pythonStatement as assert break continue del exec global 775c73622aSBram Moolenaarsyn keyword pythonStatement lambda nonlocal pass print return with yield 785c73622aSBram Moolenaarsyn keyword pythonStatement class def nextgroup=pythonFunction skipwhite 795c73622aSBram Moolenaarsyn keyword pythonConditional elif else if 80071d4279SBram Moolenaarsyn keyword pythonRepeat for while 81071d4279SBram Moolenaarsyn keyword pythonOperator and in is not or 825c73622aSBram Moolenaarsyn keyword pythonException except finally raise try 835c73622aSBram Moolenaarsyn keyword pythonInclude from import 84ca63501fSBram Moolenaarsyn keyword pythonAsync async await 85071d4279SBram Moolenaar 869c102387SBram Moolenaar" Decorators (new in Python 2.4) 87*e4a3bcf2SBram Moolenaar" Python 3.5 introduced the use of the same symbol for matrix 88*e4a3bcf2SBram Moolenaar" multiplication. We now have to exclude the symbol from being 89*e4a3bcf2SBram Moolenaar" highlighted when used in that context. Hence, the check that it's 90*e4a3bcf2SBram Moolenaar" preceded by empty space only (possibly in a docstring/doctest) and 91*e4a3bcf2SBram Moolenaar" followed by decorator name, optional parenthesized list of arguments, 92*e4a3bcf2SBram Moolenaar" and the next line with either def, class, or another decorator. 93*e4a3bcf2SBram Moolenaarsyn match pythonDecorator 94*e4a3bcf2SBram Moolenaar \ "\%(\%(^\s*\)\%(\%(>>>\|\.\.\.\)\s\+\)\=\)\zs@\%(\s*\h\%(\w\|\.\)*\%(([^)]*)\)\=\s*\n\s*\%(\.\.\.\s\+\)\=\%(@\s*\h\|\%(def\|class\)\s\+\)\)\@=" 95*e4a3bcf2SBram Moolenaar \ display nextgroup=pythonDecoratorName skipwhite 96*e4a3bcf2SBram Moolenaar 975c73622aSBram Moolenaar" A dot must be allowed because of @MyClass.myfunc decorators. 98*e4a3bcf2SBram Moolenaar" It must be preceded by a decorator symbol and on a separate line from 99*e4a3bcf2SBram Moolenaar" a function/class it decorates. 100*e4a3bcf2SBram Moolenaarsyn match pythonDecoratorName 101*e4a3bcf2SBram Moolenaar \ "\%(@\s*\)\@<=\h\%(\w\|\.\)*\%(\%(([^)]*)\)\=\s*\n\)\@=" 102*e4a3bcf2SBram Moolenaar \ contained display nextgroup=pythonFunction skipnl 103*e4a3bcf2SBram Moolenaar 104*e4a3bcf2SBram Moolenaar" The zero-length non-grouping match of def or class before the function 105*e4a3bcf2SBram Moolenaar" name is extremely important in pythonFunction. Without it, everything 106*e4a3bcf2SBram Moolenaar" is interpreted as a function inside the contained environment of 107*e4a3bcf2SBram Moolenaar" doctests. 1085c73622aSBram Moolenaarsyn match pythonFunction 109*e4a3bcf2SBram Moolenaar \ "\%(\%(^\s*\)\%(\%(>>>\|\.\.\.\)\s\+\)\=\%(def\|class\)\s\+\)\@<=\h\w*" 110*e4a3bcf2SBram Moolenaar \ contained 1119c102387SBram Moolenaar 1125c73622aSBram Moolenaarsyn match pythonComment "#.*$" contains=pythonTodo,@Spell 1135c73622aSBram Moolenaarsyn keyword pythonTodo FIXME NOTE NOTES TODO XXX contained 1145c73622aSBram Moolenaar 1155c73622aSBram Moolenaar" Triple-quoted strings can contain doctests. 116541f92d6SBram Moolenaarsyn region pythonString matchgroup=pythonQuotes 1175c73622aSBram Moolenaar \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" 1185c73622aSBram Moolenaar \ contains=pythonEscape,@Spell 119541f92d6SBram Moolenaarsyn region pythonString matchgroup=pythonTripleQuotes 1205c73622aSBram Moolenaar \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend 1215c73622aSBram Moolenaar \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell 122541f92d6SBram Moolenaarsyn region pythonRawString matchgroup=pythonQuotes 1235c73622aSBram Moolenaar \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1" 1245c73622aSBram Moolenaar \ contains=@Spell 125541f92d6SBram Moolenaarsyn region pythonRawString matchgroup=pythonTripleQuotes 1265c73622aSBram Moolenaar \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend 1275c73622aSBram Moolenaar \ contains=pythonSpaceError,pythonDoctest,@Spell 1285c73622aSBram Moolenaar 129071d4279SBram Moolenaarsyn match pythonEscape +\\[abfnrtv'"\\]+ contained 130071d4279SBram Moolenaarsyn match pythonEscape "\\\o\{1,3}" contained 131071d4279SBram Moolenaarsyn match pythonEscape "\\x\x\{2}" contained 1325c73622aSBram Moolenaarsyn match pythonEscape "\%(\\u\x\{4}\|\\U\x\{8}\)" contained 1335c73622aSBram Moolenaar" Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/ 134541f92d6SBram Moolenaarsyn match pythonEscape "\\N{\a\+\%(\s\a\+\)*}" contained 135071d4279SBram Moolenaarsyn match pythonEscape "\\$" 136071d4279SBram Moolenaar 137071d4279SBram Moolenaarif exists("python_highlight_all") 1385c73622aSBram Moolenaar if exists("python_no_builtin_highlight") 1395c73622aSBram Moolenaar unlet python_no_builtin_highlight 1405c73622aSBram Moolenaar endif 1415c73622aSBram Moolenaar if exists("python_no_doctest_code_highlight") 1425c73622aSBram Moolenaar unlet python_no_doctest_code_highlight 1435c73622aSBram Moolenaar endif 1445c73622aSBram Moolenaar if exists("python_no_doctest_highlight") 1455c73622aSBram Moolenaar unlet python_no_doctest_highlight 1465c73622aSBram Moolenaar endif 1475c73622aSBram Moolenaar if exists("python_no_exception_highlight") 1485c73622aSBram Moolenaar unlet python_no_exception_highlight 1495c73622aSBram Moolenaar endif 1505c73622aSBram Moolenaar if exists("python_no_number_highlight") 1515c73622aSBram Moolenaar unlet python_no_number_highlight 1525c73622aSBram Moolenaar endif 1535c73622aSBram Moolenaar let python_space_error_highlight = 1 154071d4279SBram Moolenaarendif 155071d4279SBram Moolenaar 1565c73622aSBram Moolenaar" It is very important to understand all details before changing the 1575c73622aSBram Moolenaar" regular expressions below or their order. 1585c73622aSBram Moolenaar" The word boundaries are *not* the floating-point number boundaries 1595c73622aSBram Moolenaar" because of a possible leading or trailing decimal point. 1605c73622aSBram Moolenaar" The expressions below ensure that all valid number literals are 1615c73622aSBram Moolenaar" highlighted, and invalid number literals are not. For example, 1625c73622aSBram Moolenaar" 1635c73622aSBram Moolenaar" - a decimal point in '4.' at the end of a line is highlighted, 1645c73622aSBram Moolenaar" - a second dot in 1.0.0 is not highlighted, 1655c73622aSBram Moolenaar" - 08 is not highlighted, 1665c73622aSBram Moolenaar" - 08e0 or 08j are highlighted, 1675c73622aSBram Moolenaar" 1685c73622aSBram Moolenaar" and so on, as specified in the 'Python Language Reference'. 169f9132810SBram Moolenaar" https://docs.python.org/2/reference/lexical_analysis.html#numeric-literals 170f9132810SBram Moolenaar" https://docs.python.org/3/reference/lexical_analysis.html#numeric-literals 1715c73622aSBram Moolenaarif !exists("python_no_number_highlight") 172071d4279SBram Moolenaar " numbers (including longs and complex) 1735c73622aSBram Moolenaar syn match pythonNumber "\<0[oO]\=\o\+[Ll]\=\>" 1745c73622aSBram Moolenaar syn match pythonNumber "\<0[xX]\x\+[Ll]\=\>" 1755c73622aSBram Moolenaar syn match pythonNumber "\<0[bB][01]\+[Ll]\=\>" 1765c73622aSBram Moolenaar syn match pythonNumber "\<\%([1-9]\d*\|0\)[Ll]\=\>" 1775c73622aSBram Moolenaar syn match pythonNumber "\<\d\+[jJ]\>" 1785c73622aSBram Moolenaar syn match pythonNumber "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" 1795c73622aSBram Moolenaar syn match pythonNumber 1805c73622aSBram Moolenaar \ "\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@=" 1815c73622aSBram Moolenaar syn match pythonNumber 182f9132810SBram Moolenaar \ "\%(^\|\W\)\zs\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>" 183071d4279SBram Moolenaarendif 184071d4279SBram Moolenaar 1855c73622aSBram Moolenaar" Group the built-ins in the order in the 'Python Library Reference' for 1865c73622aSBram Moolenaar" easier comparison. 187f9132810SBram Moolenaar" https://docs.python.org/2/library/constants.html 188f9132810SBram Moolenaar" https://docs.python.org/3/library/constants.html 189f9132810SBram Moolenaar" http://docs.python.org/2/library/functions.html 190f9132810SBram Moolenaar" http://docs.python.org/3/library/functions.html 191f9132810SBram Moolenaar" http://docs.python.org/2/library/functions.html#non-essential-built-in-functions 192f9132810SBram Moolenaar" http://docs.python.org/3/library/functions.html#non-essential-built-in-functions 1935c73622aSBram Moolenaar" Python built-in functions are in alphabetical order. 1945c73622aSBram Moolenaarif !exists("python_no_builtin_highlight") 1955c73622aSBram Moolenaar " built-in constants 196f9132810SBram Moolenaar " 'False', 'True', and 'None' are also reserved words in Python 3 1975c73622aSBram Moolenaar syn keyword pythonBuiltin False True None 1985c73622aSBram Moolenaar syn keyword pythonBuiltin NotImplemented Ellipsis __debug__ 1995c73622aSBram Moolenaar " built-in functions 200f9132810SBram Moolenaar syn keyword pythonBuiltin abs all any bin bool bytearray callable chr 201f9132810SBram Moolenaar syn keyword pythonBuiltin classmethod compile complex delattr dict dir 202f9132810SBram Moolenaar syn keyword pythonBuiltin divmod enumerate eval filter float format 2035c73622aSBram Moolenaar syn keyword pythonBuiltin frozenset getattr globals hasattr hash 2045c73622aSBram Moolenaar syn keyword pythonBuiltin help hex id input int isinstance 2055c73622aSBram Moolenaar syn keyword pythonBuiltin issubclass iter len list locals map max 206f9132810SBram Moolenaar syn keyword pythonBuiltin memoryview min next object oct open ord pow 207f9132810SBram Moolenaar syn keyword pythonBuiltin print property range repr reversed round set 2085c73622aSBram Moolenaar syn keyword pythonBuiltin setattr slice sorted staticmethod str 2095c73622aSBram Moolenaar syn keyword pythonBuiltin sum super tuple type vars zip __import__ 210f9132810SBram Moolenaar " Python 2 only 211f9132810SBram Moolenaar syn keyword pythonBuiltin basestring cmp execfile file 2125c73622aSBram Moolenaar syn keyword pythonBuiltin long raw_input reduce reload unichr 2135c73622aSBram Moolenaar syn keyword pythonBuiltin unicode xrange 214f9132810SBram Moolenaar " Python 3 only 215f9132810SBram Moolenaar syn keyword pythonBuiltin ascii bytes exec 216f9132810SBram Moolenaar " non-essential built-in functions; Python 2 only 2175c73622aSBram Moolenaar syn keyword pythonBuiltin apply buffer coerce intern 21877cdfd10SBram Moolenaar " avoid highlighting attributes as builtins 21977cdfd10SBram Moolenaar syn match pythonAttribute /\.\h\w*/hs=s+1 contains=ALLBUT,pythonBuiltin transparent 220071d4279SBram Moolenaarendif 221071d4279SBram Moolenaar 2225c73622aSBram Moolenaar" From the 'Python Library Reference' class hierarchy at the bottom. 223f9132810SBram Moolenaar" http://docs.python.org/2/library/exceptions.html 224f9132810SBram Moolenaar" http://docs.python.org/3/library/exceptions.html 2255c73622aSBram Moolenaarif !exists("python_no_exception_highlight") 226f9132810SBram Moolenaar " builtin base exceptions (used mostly as base classes for other exceptions) 2275c73622aSBram Moolenaar syn keyword pythonExceptions BaseException Exception 228f9132810SBram Moolenaar syn keyword pythonExceptions ArithmeticError BufferError 2295c73622aSBram Moolenaar syn keyword pythonExceptions LookupError 230f9132810SBram Moolenaar " builtin base exceptions removed in Python 3 231f9132810SBram Moolenaar syn keyword pythonExceptions EnvironmentError StandardError 2325c73622aSBram Moolenaar " builtin exceptions (actually raised) 233f9132810SBram Moolenaar syn keyword pythonExceptions AssertionError AttributeError 2345c73622aSBram Moolenaar syn keyword pythonExceptions EOFError FloatingPointError GeneratorExit 235f9132810SBram Moolenaar syn keyword pythonExceptions ImportError IndentationError 2365c73622aSBram Moolenaar syn keyword pythonExceptions IndexError KeyError KeyboardInterrupt 2375c73622aSBram Moolenaar syn keyword pythonExceptions MemoryError NameError NotImplementedError 2385c73622aSBram Moolenaar syn keyword pythonExceptions OSError OverflowError ReferenceError 2395c73622aSBram Moolenaar syn keyword pythonExceptions RuntimeError StopIteration SyntaxError 2405c73622aSBram Moolenaar syn keyword pythonExceptions SystemError SystemExit TabError TypeError 2415c73622aSBram Moolenaar syn keyword pythonExceptions UnboundLocalError UnicodeError 2425c73622aSBram Moolenaar syn keyword pythonExceptions UnicodeDecodeError UnicodeEncodeError 243f9132810SBram Moolenaar syn keyword pythonExceptions UnicodeTranslateError ValueError 244f9132810SBram Moolenaar syn keyword pythonExceptions ZeroDivisionError 245f9132810SBram Moolenaar " builtin OS exceptions in Python 3 246f9132810SBram Moolenaar syn keyword pythonExceptions BlockingIOError BrokenPipeError 247f9132810SBram Moolenaar syn keyword pythonExceptions ChildProcessError ConnectionAbortedError 248f9132810SBram Moolenaar syn keyword pythonExceptions ConnectionError ConnectionRefusedError 249f9132810SBram Moolenaar syn keyword pythonExceptions ConnectionResetError FileExistsError 250f9132810SBram Moolenaar syn keyword pythonExceptions FileNotFoundError InterruptedError 251f9132810SBram Moolenaar syn keyword pythonExceptions IsADirectoryError NotADirectoryError 252f9132810SBram Moolenaar syn keyword pythonExceptions PermissionError ProcessLookupError 253ca63501fSBram Moolenaar syn keyword pythonExceptions RecursionError StopAsyncIteration 254f9132810SBram Moolenaar syn keyword pythonExceptions TimeoutError 255f9132810SBram Moolenaar " builtin exceptions deprecated/removed in Python 3 256f9132810SBram Moolenaar syn keyword pythonExceptions IOError VMSError WindowsError 2575c73622aSBram Moolenaar " builtin warnings 2585c73622aSBram Moolenaar syn keyword pythonExceptions BytesWarning DeprecationWarning FutureWarning 2595c73622aSBram Moolenaar syn keyword pythonExceptions ImportWarning PendingDeprecationWarning 2605c73622aSBram Moolenaar syn keyword pythonExceptions RuntimeWarning SyntaxWarning UnicodeWarning 2615c73622aSBram Moolenaar syn keyword pythonExceptions UserWarning Warning 262f9132810SBram Moolenaar " builtin warnings in Python 3 263f9132810SBram Moolenaar syn keyword pythonExceptions ResourceWarning 264071d4279SBram Moolenaarendif 265071d4279SBram Moolenaar 2665c73622aSBram Moolenaarif exists("python_space_error_highlight") 267071d4279SBram Moolenaar " trailing whitespace 2685c73622aSBram Moolenaar syn match pythonSpaceError display excludenl "\s\+$" 269071d4279SBram Moolenaar " mixed tabs and spaces 270071d4279SBram Moolenaar syn match pythonSpaceError display " \+\t" 271071d4279SBram Moolenaar syn match pythonSpaceError display "\t\+ " 272071d4279SBram Moolenaarendif 273071d4279SBram Moolenaar 2745c73622aSBram Moolenaar" Do not spell doctests inside strings. 2755c73622aSBram Moolenaar" Notice that the end of a string, either ''', or """, will end the contained 2765c73622aSBram Moolenaar" doctest too. Thus, we do *not* need to have it as an end pattern. 2775c73622aSBram Moolenaarif !exists("python_no_doctest_highlight") 27834700a6aSBram Moolenaar if !exists("python_no_doctest_code_highlight") 2795c73622aSBram Moolenaar syn region pythonDoctest 2805c73622aSBram Moolenaar \ start="^\s*>>>\s" end="^\s*$" 2815c73622aSBram Moolenaar \ contained contains=ALLBUT,pythonDoctest,@Spell 2825c73622aSBram Moolenaar syn region pythonDoctestValue 2835c73622aSBram Moolenaar \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$" 2845c73622aSBram Moolenaar \ contained 2855c73622aSBram Moolenaar else 2865c73622aSBram Moolenaar syn region pythonDoctest 2875c73622aSBram Moolenaar \ start="^\s*>>>" end="^\s*$" 2885c73622aSBram Moolenaar \ contained contains=@NoSpell 2895c73622aSBram Moolenaar endif 2905c73622aSBram Moolenaarendif 2915c73622aSBram Moolenaar 2925c73622aSBram Moolenaar" Sync at the beginning of class, function, or method definition. 2935c73622aSBram Moolenaarsyn sync match pythonSync grouphere NONE "^\s*\%(def\|class\)\s\+\h\w*\s*(" 294071d4279SBram Moolenaar 295071d4279SBram Moolenaarif version >= 508 || !exists("did_python_syn_inits") 296071d4279SBram Moolenaar if version <= 508 297071d4279SBram Moolenaar let did_python_syn_inits = 1 298071d4279SBram Moolenaar command -nargs=+ HiLink hi link <args> 299071d4279SBram Moolenaar else 300071d4279SBram Moolenaar command -nargs=+ HiLink hi def link <args> 301071d4279SBram Moolenaar endif 302071d4279SBram Moolenaar 3035c73622aSBram Moolenaar " The default highlight links. Can be overridden later. 304071d4279SBram Moolenaar HiLink pythonStatement Statement 305071d4279SBram Moolenaar HiLink pythonConditional Conditional 306071d4279SBram Moolenaar HiLink pythonRepeat Repeat 3075c73622aSBram Moolenaar HiLink pythonOperator Operator 3085c73622aSBram Moolenaar HiLink pythonException Exception 3095c73622aSBram Moolenaar HiLink pythonInclude Include 310ca63501fSBram Moolenaar HiLink pythonAsync Statement 3115c73622aSBram Moolenaar HiLink pythonDecorator Define 312*e4a3bcf2SBram Moolenaar HiLink pythonDecoratorName Function 3135c73622aSBram Moolenaar HiLink pythonFunction Function 3145c73622aSBram Moolenaar HiLink pythonComment Comment 3155c73622aSBram Moolenaar HiLink pythonTodo Todo 316071d4279SBram Moolenaar HiLink pythonString String 317071d4279SBram Moolenaar HiLink pythonRawString String 318541f92d6SBram Moolenaar HiLink pythonQuotes String 319541f92d6SBram Moolenaar HiLink pythonTripleQuotes pythonQuotes 320071d4279SBram Moolenaar HiLink pythonEscape Special 3215c73622aSBram Moolenaar if !exists("python_no_number_highlight") 322071d4279SBram Moolenaar HiLink pythonNumber Number 323071d4279SBram Moolenaar endif 3245c73622aSBram Moolenaar if !exists("python_no_builtin_highlight") 325071d4279SBram Moolenaar HiLink pythonBuiltin Function 326071d4279SBram Moolenaar endif 3275c73622aSBram Moolenaar if !exists("python_no_exception_highlight") 3285c73622aSBram Moolenaar HiLink pythonExceptions Structure 329071d4279SBram Moolenaar endif 3305c73622aSBram Moolenaar if exists("python_space_error_highlight") 331071d4279SBram Moolenaar HiLink pythonSpaceError Error 332071d4279SBram Moolenaar endif 3335c73622aSBram Moolenaar if !exists("python_no_doctest_highlight") 3345c73622aSBram Moolenaar HiLink pythonDoctest Special 3355c73622aSBram Moolenaar HiLink pythonDoctestValue Define 3365c73622aSBram Moolenaar endif 337071d4279SBram Moolenaar 338071d4279SBram Moolenaar delcommand HiLink 339071d4279SBram Moolenaarendif 340071d4279SBram Moolenaar 341071d4279SBram Moolenaarlet b:current_syntax = "python" 342071d4279SBram Moolenaar 34300659069SBram Moolenaarlet &cpo = s:cpo_save 34400659069SBram Moolenaarunlet s:cpo_save 34500659069SBram Moolenaar 3465c73622aSBram Moolenaar" vim:set sw=2 sts=2 ts=8 noet: 347