xref: /vim-8.2.3635/runtime/syntax/python.vim (revision 9faec4e3)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	Python
3541f92d6SBram Moolenaar" Maintainer:	Zvezdan Petkovic <[email protected]>
4*9faec4e3SBram Moolenaar" Last Change:	2021 Feb 15
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
3989bcfda6SBram Moolenaar" quit when a syntax file was already loaded.
4089bcfda6SBram Moolenaarif exists("b:current_syntax")
41071d4279SBram Moolenaar  finish
42071d4279SBram Moolenaarendif
43071d4279SBram Moolenaar
4400659069SBram Moolenaar" We need nocompatible mode in order to continue lines with backslashes.
4500659069SBram Moolenaar" Original setting will be restored.
4600659069SBram Moolenaarlet s:cpo_save = &cpo
4700659069SBram Moolenaarset cpo&vim
4800659069SBram Moolenaar
49b4ada79aSBram Moolenaarif exists("python_no_doctest_highlight")
50b4ada79aSBram Moolenaar  let python_no_doctest_code_highlight = 1
51b4ada79aSBram Moolenaarendif
52b4ada79aSBram Moolenaar
53b4ada79aSBram Moolenaarif exists("python_highlight_all")
54b4ada79aSBram Moolenaar  if exists("python_no_builtin_highlight")
55b4ada79aSBram Moolenaar    unlet python_no_builtin_highlight
56b4ada79aSBram Moolenaar  endif
57b4ada79aSBram Moolenaar  if exists("python_no_doctest_code_highlight")
58b4ada79aSBram Moolenaar    unlet python_no_doctest_code_highlight
59b4ada79aSBram Moolenaar  endif
60b4ada79aSBram Moolenaar  if exists("python_no_doctest_highlight")
61b4ada79aSBram Moolenaar    unlet python_no_doctest_highlight
62b4ada79aSBram Moolenaar  endif
63b4ada79aSBram Moolenaar  if exists("python_no_exception_highlight")
64b4ada79aSBram Moolenaar    unlet python_no_exception_highlight
65b4ada79aSBram Moolenaar  endif
66b4ada79aSBram Moolenaar  if exists("python_no_number_highlight")
67b4ada79aSBram Moolenaar    unlet python_no_number_highlight
68b4ada79aSBram Moolenaar  endif
69b4ada79aSBram Moolenaar  let python_space_error_highlight = 1
70b4ada79aSBram Moolenaarendif
71b4ada79aSBram Moolenaar
725c73622aSBram Moolenaar" Keep Python keywords in alphabetical order inside groups for easy
735c73622aSBram Moolenaar" comparison with the table in the 'Python Language Reference'
74*9faec4e3SBram Moolenaar" https://docs.python.org/reference/lexical_analysis.html#keywords.
755c73622aSBram Moolenaar" Groups are in the order presented in NAMING CONVENTIONS in syntax.txt.
765c73622aSBram Moolenaar" Exceptions come last at the end of each group (class and def below).
775c73622aSBram Moolenaar"
78*9faec4e3SBram Moolenaar" The list can be checked using:
795c73622aSBram Moolenaar"
80*9faec4e3SBram Moolenaar" python3 -c 'import keyword, pprint; pprint.pprint(keyword.kwlist, compact=True)'
815c73622aSBram Moolenaar"
826f1d9a09SBram Moolenaarsyn keyword pythonStatement	False None True
83*9faec4e3SBram Moolenaarsyn keyword pythonStatement	as assert break continue del global
84*9faec4e3SBram Moolenaarsyn keyword pythonStatement	lambda nonlocal pass return with yield
855c73622aSBram Moolenaarsyn keyword pythonStatement	class def nextgroup=pythonFunction skipwhite
865c73622aSBram Moolenaarsyn keyword pythonConditional	elif else if
87071d4279SBram Moolenaarsyn keyword pythonRepeat	for while
88071d4279SBram Moolenaarsyn keyword pythonOperator	and in is not or
895c73622aSBram Moolenaarsyn keyword pythonException	except finally raise try
905c73622aSBram Moolenaarsyn keyword pythonInclude	from import
91ca63501fSBram Moolenaarsyn keyword pythonAsync		async await
92071d4279SBram Moolenaar
93*9faec4e3SBram Moolenaar" Decorators
945c73622aSBram Moolenaar" A dot must be allowed because of @MyClass.myfunc decorators.
95b4ada79aSBram Moolenaarsyn match   pythonDecorator	"@" display contained
96b4ada79aSBram Moolenaarsyn match   pythonDecoratorName	"@\s*\h\%(\w\|\.\)*" display contains=pythonDecorator
97e4a3bcf2SBram Moolenaar
98b4ada79aSBram Moolenaar" Python 3.5 introduced the use of the same symbol for matrix multiplication:
99b4ada79aSBram Moolenaar" https://www.python.org/dev/peps/pep-0465/.  We now have to exclude the
100b4ada79aSBram Moolenaar" symbol from highlighting when used in that context.
101b4ada79aSBram Moolenaar" Single line multiplication.
102b4ada79aSBram Moolenaarsyn match   pythonMatrixMultiply
103b4ada79aSBram Moolenaar      \ "\%(\w\|[])]\)\s*@"
104b4ada79aSBram Moolenaar      \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue
105b4ada79aSBram Moolenaar      \ transparent
106b4ada79aSBram Moolenaar" Multiplication continued on the next line after backslash.
107b4ada79aSBram Moolenaarsyn match   pythonMatrixMultiply
108b4ada79aSBram Moolenaar      \ "[^\\]\\\s*\n\%(\s*\.\.\.\s\)\=\s\+@"
109b4ada79aSBram Moolenaar      \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue
110b4ada79aSBram Moolenaar      \ transparent
111b4ada79aSBram Moolenaar" Multiplication in a parenthesized expression over multiple lines with @ at
112b4ada79aSBram Moolenaar" the start of each continued line; very similar to decorators and complex.
113b4ada79aSBram Moolenaarsyn match   pythonMatrixMultiply
114b4ada79aSBram Moolenaar      \ "^\s*\%(\%(>>>\|\.\.\.\)\s\+\)\=\zs\%(\h\|\%(\h\|[[(]\).\{-}\%(\w\|[])]\)\)\s*\n\%(\s*\.\.\.\s\)\=\s\+@\%(.\{-}\n\%(\s*\.\.\.\s\)\=\s\+@\)*"
115b4ada79aSBram Moolenaar      \ contains=ALLBUT,pythonDecoratorName,pythonDecorator,pythonFunction,pythonDoctestValue
116b4ada79aSBram Moolenaar      \ transparent
117b4ada79aSBram Moolenaar
118b4ada79aSBram Moolenaarsyn match   pythonFunction	"\h\w*" display contained
1199c102387SBram Moolenaar
1205c73622aSBram Moolenaarsyn match   pythonComment	"#.*$" contains=pythonTodo,@Spell
1215c73622aSBram Moolenaarsyn keyword pythonTodo		FIXME NOTE NOTES TODO XXX contained
1225c73622aSBram Moolenaar
1235c73622aSBram Moolenaar" Triple-quoted strings can contain doctests.
124541f92d6SBram Moolenaarsyn region  pythonString matchgroup=pythonQuotes
1255c73622aSBram Moolenaar      \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
1265c73622aSBram Moolenaar      \ contains=pythonEscape,@Spell
127541f92d6SBram Moolenaarsyn region  pythonString matchgroup=pythonTripleQuotes
1285c73622aSBram Moolenaar      \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
1295c73622aSBram Moolenaar      \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell
130541f92d6SBram Moolenaarsyn region  pythonRawString matchgroup=pythonQuotes
1315c73622aSBram Moolenaar      \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
1325c73622aSBram Moolenaar      \ contains=@Spell
133541f92d6SBram Moolenaarsyn region  pythonRawString matchgroup=pythonTripleQuotes
1345c73622aSBram Moolenaar      \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend
1355c73622aSBram Moolenaar      \ contains=pythonSpaceError,pythonDoctest,@Spell
1365c73622aSBram Moolenaar
137071d4279SBram Moolenaarsyn match   pythonEscape	+\\[abfnrtv'"\\]+ contained
138071d4279SBram Moolenaarsyn match   pythonEscape	"\\\o\{1,3}" contained
139071d4279SBram Moolenaarsyn match   pythonEscape	"\\x\x\{2}" contained
1405c73622aSBram Moolenaarsyn match   pythonEscape	"\%(\\u\x\{4}\|\\U\x\{8}\)" contained
1415c73622aSBram Moolenaar" Python allows case-insensitive Unicode IDs: http://www.unicode.org/charts/
142541f92d6SBram Moolenaarsyn match   pythonEscape	"\\N{\a\+\%(\s\a\+\)*}" contained
143071d4279SBram Moolenaarsyn match   pythonEscape	"\\$"
144071d4279SBram Moolenaar
1455c73622aSBram Moolenaar" It is very important to understand all details before changing the
1465c73622aSBram Moolenaar" regular expressions below or their order.
1475c73622aSBram Moolenaar" The word boundaries are *not* the floating-point number boundaries
1485c73622aSBram Moolenaar" because of a possible leading or trailing decimal point.
1495c73622aSBram Moolenaar" The expressions below ensure that all valid number literals are
1505c73622aSBram Moolenaar" highlighted, and invalid number literals are not.  For example,
1515c73622aSBram Moolenaar"
1525c73622aSBram Moolenaar" - a decimal point in '4.' at the end of a line is highlighted,
1535c73622aSBram Moolenaar" - a second dot in 1.0.0 is not highlighted,
1545c73622aSBram Moolenaar" - 08 is not highlighted,
1555c73622aSBram Moolenaar" - 08e0 or 08j are highlighted,
1565c73622aSBram Moolenaar"
1575c73622aSBram Moolenaar" and so on, as specified in the 'Python Language Reference'.
158*9faec4e3SBram Moolenaar" https://docs.python.org/reference/lexical_analysis.html#numeric-literals
1595c73622aSBram Moolenaarif !exists("python_no_number_highlight")
160071d4279SBram Moolenaar  " numbers (including longs and complex)
1615c73622aSBram Moolenaar  syn match   pythonNumber	"\<0[oO]\=\o\+[Ll]\=\>"
1625c73622aSBram Moolenaar  syn match   pythonNumber	"\<0[xX]\x\+[Ll]\=\>"
1635c73622aSBram Moolenaar  syn match   pythonNumber	"\<0[bB][01]\+[Ll]\=\>"
1645c73622aSBram Moolenaar  syn match   pythonNumber	"\<\%([1-9]\d*\|0\)[Ll]\=\>"
1655c73622aSBram Moolenaar  syn match   pythonNumber	"\<\d\+[jJ]\>"
1665c73622aSBram Moolenaar  syn match   pythonNumber	"\<\d\+[eE][+-]\=\d\+[jJ]\=\>"
1675c73622aSBram Moolenaar  syn match   pythonNumber
1685c73622aSBram Moolenaar	\ "\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@="
1695c73622aSBram Moolenaar  syn match   pythonNumber
170f9132810SBram Moolenaar	\ "\%(^\|\W\)\zs\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>"
171071d4279SBram Moolenaarendif
172071d4279SBram Moolenaar
1735c73622aSBram Moolenaar" Group the built-ins in the order in the 'Python Library Reference' for
1745c73622aSBram Moolenaar" easier comparison.
175*9faec4e3SBram Moolenaar" https://docs.python.org/library/constants.html
176*9faec4e3SBram Moolenaar" http://docs.python.org/library/functions.html
1775c73622aSBram Moolenaar" Python built-in functions are in alphabetical order.
178*9faec4e3SBram Moolenaar"
179*9faec4e3SBram Moolenaar" The list can be checked using:
180*9faec4e3SBram Moolenaar"
181*9faec4e3SBram Moolenaar" python3 -c 'import builtins, pprint; pprint.pprint(dir(builtins), compact=True)'
182*9faec4e3SBram Moolenaar"
183*9faec4e3SBram Moolenaar" The constants added by the `site` module are not listed below because they
184*9faec4e3SBram Moolenaar" should not be used in programs, only in interactive interpreter.
185*9faec4e3SBram Moolenaar" Similarly for some other attributes and functions `__`-enclosed from the
186*9faec4e3SBram Moolenaar" output of the above command.
187*9faec4e3SBram Moolenaar"
1885c73622aSBram Moolenaarif !exists("python_no_builtin_highlight")
1895c73622aSBram Moolenaar  " built-in constants
190f9132810SBram Moolenaar  " 'False', 'True', and 'None' are also reserved words in Python 3
1915c73622aSBram Moolenaar  syn keyword pythonBuiltin	False True None
1925c73622aSBram Moolenaar  syn keyword pythonBuiltin	NotImplemented Ellipsis __debug__
193*9faec4e3SBram Moolenaar  " constants added by the `site` module
194*9faec4e3SBram Moolenaar  syn keyword pythonBuiltin	quit exit copyright credits license
1955c73622aSBram Moolenaar  " built-in functions
196*9faec4e3SBram Moolenaar  syn keyword pythonBuiltin	abs all any ascii bin bool breakpoint bytearray
197*9faec4e3SBram Moolenaar  syn keyword pythonBuiltin	bytes callable chr classmethod compile complex
198*9faec4e3SBram Moolenaar  syn keyword pythonBuiltin	delattr dict dir divmod enumerate eval exec
199*9faec4e3SBram Moolenaar  syn keyword pythonBuiltin	filter float format frozenset getattr globals
200*9faec4e3SBram Moolenaar  syn keyword pythonBuiltin	hasattr hash help hex id input int isinstance
2015c73622aSBram Moolenaar  syn keyword pythonBuiltin	issubclass iter len list locals map max
202f9132810SBram Moolenaar  syn keyword pythonBuiltin	memoryview min next object oct open ord pow
203f9132810SBram Moolenaar  syn keyword pythonBuiltin	print property range repr reversed round set
204*9faec4e3SBram Moolenaar  syn keyword pythonBuiltin	setattr slice sorted staticmethod str sum super
205*9faec4e3SBram Moolenaar  syn keyword pythonBuiltin	tuple type vars zip __import__
20677cdfd10SBram Moolenaar  " avoid highlighting attributes as builtins
207b4ada79aSBram Moolenaar  syn match   pythonAttribute	/\.\h\w*/hs=s+1
208b4ada79aSBram Moolenaar	\ contains=ALLBUT,pythonBuiltin,pythonFunction,pythonAsync
209b4ada79aSBram Moolenaar	\ transparent
210071d4279SBram Moolenaarendif
211071d4279SBram Moolenaar
2125c73622aSBram Moolenaar" From the 'Python Library Reference' class hierarchy at the bottom.
213*9faec4e3SBram Moolenaar" http://docs.python.org/library/exceptions.html
2145c73622aSBram Moolenaarif !exists("python_no_exception_highlight")
215f9132810SBram Moolenaar  " builtin base exceptions (used mostly as base classes for other exceptions)
2165c73622aSBram Moolenaar  syn keyword pythonExceptions	BaseException Exception
217*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	ArithmeticError BufferError LookupError
2185c73622aSBram Moolenaar  " builtin exceptions (actually raised)
219*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	AssertionError AttributeError EOFError
220*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	FloatingPointError GeneratorExit ImportError
221*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	IndentationError IndexError KeyError
222*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	KeyboardInterrupt MemoryError
223*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	ModuleNotFoundError NameError
224*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	NotImplementedError OSError OverflowError
225*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	RecursionError ReferenceError RuntimeError
226*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	StopAsyncIteration StopIteration SyntaxError
2275c73622aSBram Moolenaar  syn keyword pythonExceptions	SystemError SystemExit TabError TypeError
228*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	UnboundLocalError UnicodeDecodeError
229*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	UnicodeEncodeError UnicodeError
230f9132810SBram Moolenaar  syn keyword pythonExceptions	UnicodeTranslateError ValueError
231f9132810SBram Moolenaar  syn keyword pythonExceptions	ZeroDivisionError
232*9faec4e3SBram Moolenaar  " builtin exception aliases for OSError
233*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	EnvironmentError IOError WindowsError
234f9132810SBram Moolenaar  " builtin OS exceptions in Python 3
235f9132810SBram Moolenaar  syn keyword pythonExceptions	BlockingIOError BrokenPipeError
236f9132810SBram Moolenaar  syn keyword pythonExceptions	ChildProcessError ConnectionAbortedError
237f9132810SBram Moolenaar  syn keyword pythonExceptions	ConnectionError ConnectionRefusedError
238f9132810SBram Moolenaar  syn keyword pythonExceptions	ConnectionResetError FileExistsError
239f9132810SBram Moolenaar  syn keyword pythonExceptions	FileNotFoundError InterruptedError
240f9132810SBram Moolenaar  syn keyword pythonExceptions	IsADirectoryError NotADirectoryError
241*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	PermissionError ProcessLookupError TimeoutError
2425c73622aSBram Moolenaar  " builtin warnings
2435c73622aSBram Moolenaar  syn keyword pythonExceptions	BytesWarning DeprecationWarning FutureWarning
2445c73622aSBram Moolenaar  syn keyword pythonExceptions	ImportWarning PendingDeprecationWarning
245*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	ResourceWarning RuntimeWarning
246*9faec4e3SBram Moolenaar  syn keyword pythonExceptions	SyntaxWarning UnicodeWarning
2475c73622aSBram Moolenaar  syn keyword pythonExceptions	UserWarning Warning
248071d4279SBram Moolenaarendif
249071d4279SBram Moolenaar
2505c73622aSBram Moolenaarif exists("python_space_error_highlight")
251071d4279SBram Moolenaar  " trailing whitespace
2525c73622aSBram Moolenaar  syn match   pythonSpaceError	display excludenl "\s\+$"
253071d4279SBram Moolenaar  " mixed tabs and spaces
254071d4279SBram Moolenaar  syn match   pythonSpaceError	display " \+\t"
255071d4279SBram Moolenaar  syn match   pythonSpaceError	display "\t\+ "
256071d4279SBram Moolenaarendif
257071d4279SBram Moolenaar
2585c73622aSBram Moolenaar" Do not spell doctests inside strings.
2595c73622aSBram Moolenaar" Notice that the end of a string, either ''', or """, will end the contained
2605c73622aSBram Moolenaar" doctest too.  Thus, we do *not* need to have it as an end pattern.
2615c73622aSBram Moolenaarif !exists("python_no_doctest_highlight")
26234700a6aSBram Moolenaar  if !exists("python_no_doctest_code_highlight")
2635c73622aSBram Moolenaar    syn region pythonDoctest
2645c73622aSBram Moolenaar	  \ start="^\s*>>>\s" end="^\s*$"
265b4ada79aSBram Moolenaar	  \ contained contains=ALLBUT,pythonDoctest,pythonFunction,@Spell
2665c73622aSBram Moolenaar    syn region pythonDoctestValue
2675c73622aSBram Moolenaar	  \ start=+^\s*\%(>>>\s\|\.\.\.\s\|"""\|'''\)\@!\S\++ end="$"
2685c73622aSBram Moolenaar	  \ contained
2695c73622aSBram Moolenaar  else
2705c73622aSBram Moolenaar    syn region pythonDoctest
2715c73622aSBram Moolenaar	  \ start="^\s*>>>" end="^\s*$"
2725c73622aSBram Moolenaar	  \ contained contains=@NoSpell
2735c73622aSBram Moolenaar  endif
2745c73622aSBram Moolenaarendif
2755c73622aSBram Moolenaar
2765c73622aSBram Moolenaar" Sync at the beginning of class, function, or method definition.
277b4ada79aSBram Moolenaarsyn sync match pythonSync grouphere NONE "^\%(def\|class\)\s\+\h\w*\s*[(:]"
278071d4279SBram Moolenaar
2795c73622aSBram Moolenaar" The default highlight links.  Can be overridden later.
280f37506f6SBram Moolenaarhi def link pythonStatement		Statement
281f37506f6SBram Moolenaarhi def link pythonConditional		Conditional
282f37506f6SBram Moolenaarhi def link pythonRepeat		Repeat
283f37506f6SBram Moolenaarhi def link pythonOperator		Operator
284f37506f6SBram Moolenaarhi def link pythonException		Exception
285f37506f6SBram Moolenaarhi def link pythonInclude		Include
286f37506f6SBram Moolenaarhi def link pythonAsync			Statement
287f37506f6SBram Moolenaarhi def link pythonDecorator		Define
288f37506f6SBram Moolenaarhi def link pythonDecoratorName		Function
289f37506f6SBram Moolenaarhi def link pythonFunction		Function
290f37506f6SBram Moolenaarhi def link pythonComment		Comment
291f37506f6SBram Moolenaarhi def link pythonTodo			Todo
292f37506f6SBram Moolenaarhi def link pythonString		String
293f37506f6SBram Moolenaarhi def link pythonRawString		String
294f37506f6SBram Moolenaarhi def link pythonQuotes		String
295f37506f6SBram Moolenaarhi def link pythonTripleQuotes		pythonQuotes
296f37506f6SBram Moolenaarhi def link pythonEscape		Special
2975c73622aSBram Moolenaarif !exists("python_no_number_highlight")
298f37506f6SBram Moolenaar  hi def link pythonNumber		Number
299071d4279SBram Moolenaarendif
3005c73622aSBram Moolenaarif !exists("python_no_builtin_highlight")
301f37506f6SBram Moolenaar  hi def link pythonBuiltin		Function
302071d4279SBram Moolenaarendif
3035c73622aSBram Moolenaarif !exists("python_no_exception_highlight")
304f37506f6SBram Moolenaar  hi def link pythonExceptions		Structure
305071d4279SBram Moolenaarendif
3065c73622aSBram Moolenaarif exists("python_space_error_highlight")
307f37506f6SBram Moolenaar  hi def link pythonSpaceError		Error
308071d4279SBram Moolenaarendif
3095c73622aSBram Moolenaarif !exists("python_no_doctest_highlight")
310f37506f6SBram Moolenaar  hi def link pythonDoctest		Special
311f37506f6SBram Moolenaar  hi def link pythonDoctestValue	Define
3125c73622aSBram Moolenaarendif
313071d4279SBram Moolenaar
314071d4279SBram Moolenaarlet b:current_syntax = "python"
315071d4279SBram Moolenaar
31600659069SBram Moolenaarlet &cpo = s:cpo_save
31700659069SBram Moolenaarunlet s:cpo_save
31800659069SBram Moolenaar
3195c73622aSBram Moolenaar" vim:set sw=2 sts=2 ts=8 noet:
320