diff options
Diffstat (limited to '')
| -rw-r--r-- | syntax/python.vim | 165 | 
1 files changed, 56 insertions, 109 deletions
| diff --git a/syntax/python.vim b/syntax/python.vim index 0e0bb126..7482d076 100644 --- a/syntax/python.vim +++ b/syntax/python.vim @@ -1,27 +1,20 @@  " Vim syntax file -" Language:	Python -" Maintainer:	Dmitry Vasiliev <dima@hlabs.spb.ru> -" URL:		http://www.hlabs.spb.ru/vim/python.vim -" Last Change:	2010-04-09 -" Filenames:	*.py -" Version:	2.6.6  "  " Based on python.vim (from Vim 6.1 distribution)  " by Neil Schemenauer <nas@python.ca>  " +" Notes Armin: +" +"     This version of the syntax file works better for 2.x and 3.x without +"     having to switch modes. +"  " Thanks:  "  "    Jeroen Ruigrok van der Werven -"        for the idea to highlight erroneous operators +"        for the idea of highlighting for erroneous operators  "    Pedro Algarvio  "        for the patch to enable spell checking only for the right spots  "        (strings and comments) -"    John Eikenberry -"        for the patch fixing small typo -"    Caleb Adamantine -"        for the patch fixing highlighting for decorators -"    Andrea Riciputi -"        for the patch with new configuration options  "  " Options: @@ -31,27 +24,15 @@  "  " Option names:  " -"    For highlight builtin functions and objects: +"    For highlight builtin functions:  "       python_highlight_builtins  " -"    For highlight builtin objects: -"       python_highlight_builtin_objs -" -"    For highlight builtin funtions: -"       python_highlight_builtin_funcs -"  "    For highlight standard exceptions:  "       python_highlight_exceptions  "  "    For highlight string formatting:  "       python_highlight_string_formatting  " -"    For highlight str.format syntax: -"       python_highlight_string_format -" -"    For highlight string.Template syntax: -"       python_highlight_string_templates -"  "    For highlight indentation errors:  "       python_highlight_indent_errors  " @@ -61,15 +42,13 @@  "    For highlight doc-tests:  "       python_highlight_doctests  " -"    If you want all Python highlightings above: -"       python_highlight_all +"    If you want all possible Python highlighting:  "    (This option not override previously set options) +"       python_highlight_all  "  "    For fast machines:  "       python_slow_sync  " -"    For "print" builtin as function: -"       python_print_as_function  " For version 5.x: Clear all syntax items  " For version 6.x: Quit when a syntax file was already loaded @@ -82,12 +61,7 @@ endif  if exists("python_highlight_all") && python_highlight_all != 0    " Not override previously set options    if !exists("python_highlight_builtins") -    if !exists("python_highlight_builtin_objs") -      let python_highlight_builtin_objs = 1 -    endif -    if !exists("python_highlight_builtin_funcs") -      let python_highlight_builtin_funcs = 1 -    endif +    let python_highlight_builtins = 1    endif    if !exists("python_highlight_exceptions")      let python_highlight_exceptions = 1 @@ -95,12 +69,6 @@ if exists("python_highlight_all") && python_highlight_all != 0    if !exists("python_highlight_string_formatting")      let python_highlight_string_formatting = 1    endif -  if !exists("python_highlight_string_format") -    let python_highlight_string_format = 1 -  endif -  if !exists("python_highlight_string_templates") -    let python_highlight_string_templates = 1 -  endif    if !exists("python_highlight_indent_errors")      let python_highlight_indent_errors = 1    endif @@ -118,23 +86,20 @@ syn keyword pythonStatement	exec return  syn keyword pythonStatement	pass raise  syn keyword pythonStatement	global assert  syn keyword pythonStatement	lambda yield -syn keyword pythonStatement	with +syn keyword pythonStatement	with nonlocal True False None  syn keyword pythonStatement	def class nextgroup=pythonFunction skipwhite  syn match   pythonFunction	"[a-zA-Z_][a-zA-Z0-9_]*" display contained  syn keyword pythonRepeat	for while  syn keyword pythonConditional	if elif else -syn keyword pythonPreCondit	import from as +syn keyword pythonImport	import from as  syn keyword pythonException	try except finally  syn keyword pythonOperator	and in is not or -if !exists("python_print_as_function") || python_print_as_function == 0 -  syn keyword pythonStatement print -endif +" Print keyword but only if not used as function +syn match pythonStatement "\<print\>\((\)\@!" display  " Decorators (new in Python 2.4) -syn match   pythonDecorator	"@" display nextgroup=pythonDottedName skipwhite -syn match   pythonDottedName "[a-zA-Z_][a-zA-Z0-9_]*\(\.[a-zA-Z_][a-zA-Z0-9_]*\)*" display contained -syn match   pythonDot        "\." display containedin=pythonDottedName +syn match   pythonDecorator	"@" display nextgroup=pythonFunction skipwhite  " Comments  syn match   pythonComment	"#.*$" display contains=pythonTodo,@Spell @@ -145,7 +110,7 @@ syn keyword pythonTodo		TODO FIXME XXX contained  " Errors  syn match pythonError		"\<\d\+\D\+\>" display  syn match pythonError		"[$?]" display -syn match pythonError		"[&|]\{2,}" display +syn match pythonError		"[-+&|]\{2,}" display  syn match pythonError		"[=]\{3,}" display  " TODO: Mixing spaces and tabs also may be used for pretty formatting multiline @@ -160,10 +125,10 @@ if exists("python_highlight_space_errors") && python_highlight_space_errors != 0  endif  " Strings -syn region pythonString		start=+[bB]\='+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell -syn region pythonString		start=+[bB]\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell -syn region pythonString		start=+[bB]\="""+ end=+"""+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest2,pythonSpaceError,@Spell -syn region pythonString		start=+[bB]\='''+ end=+'''+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest,pythonSpaceError,@Spell +syn region pythonString		start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell +syn region pythonString		start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell +syn region pythonString		start=+"""+ end=+"""+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest2,pythonSpaceError,@Spell +syn region pythonString		start=+'''+ end=+'''+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest,pythonSpaceError,@Spell  syn match  pythonEscape		+\\[abfnrtv'"\\]+ display contained  syn match  pythonEscape		"\\\o\o\=\o\=" display contained @@ -172,6 +137,19 @@ syn match  pythonEscape		"\\x\x\{2}" display contained  syn match  pythonEscapeError	"\\x\x\=\X" display contained  syn match  pythonEscape		"\\$" +" Byte-Strings +syn region pythonBString	start=+[bB]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBEscape,pythonBEscapeError,@Spell +syn region pythonBString	start=+[bB]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBEscape,pythonBEscapeError,@Spell +syn region pythonBString	start=+[bB]"""+ end=+"""+ keepend contains=pythonBEscape,pythonBEscapeError,pythonDocTest2,pythonSpaceError,@Spell +syn region pythonBString	start=+[bB]'''+ end=+'''+ keepend contains=pythonBEscape,pythonBEscapeError,pythonDocTest,pythonSpaceError,@Spell + +syn match  pythonBEscape	+\\[abfnrtv'"\\]+ display contained +syn match  pythonBEscape	"\\\o\o\=\o\=" display contained +syn match  pythonBEscapeError	"\\\o\{,2}[89]" display contained +syn match  pythonBEscape	"\\x\x\{2}" display contained +syn match  pythonBEscapeError	"\\x\x\=\X" display contained +syn match  pythonBEscape	"\\$" +  " Unicode strings  syn region pythonUniString	start=+[uU]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,@Spell  syn region pythonUniString	start=+[uU]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,@Spell @@ -204,21 +182,8 @@ syn match  pythonUniRawEscapeError	"\([^\\]\(\\\\\)*\)\@<=\\u\x\{,3}\X" display  if exists("python_highlight_string_formatting") && python_highlight_string_formatting != 0    " String formatting -  syn match pythonStrFormatting	"%\(([^)]\+)\)\=[-#0 +]*\d*\(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString -  syn match pythonStrFormatting	"%[-#0 +]*\(\*\|\d\+\)\=\(\.\(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString -endif - -if exists("python_highlight_string_format") && python_highlight_string_format != 0 -  " str.format syntax -  syn match pythonStrFormat "{{\|}}" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString -  syn match pythonStrFormat	"{\([a-zA-Z_][a-zA-Z0-9_]*\|\d\+\)\(\.[a-zA-Z_][a-zA-Z0-9_]*\|\[\(\d\+\|[^!:\}]\+\)\]\)*\(![rs]\)\=\(:\({\([a-zA-Z_][a-zA-Z0-9_]*\|\d\+\)}\|\([^}]\=[<>=^]\)\=[ +-]\=#\=0\=\d*\(\.\d\+\)\=[bcdeEfFgGnoxX%]\=\)\=\)\=}" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString -endif - -if exists("python_highlight_string_templates") && python_highlight_string_templates != 0 -  " String templates -  syn match pythonStrTemplate	"\$\$" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString -  syn match pythonStrTemplate	"\${[a-zA-Z_][a-zA-Z0-9_]*}" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString -  syn match pythonStrTemplate	"\$[a-zA-Z_][a-zA-Z0-9_]*" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString +  syn match pythonStrFormat	"%\(([^)]\+)\)\=[-#0 +]*\d*\(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonBString,pythonUniString,pythonRawString,pythonUniRawString +  syn match pythonStrFormat	"%[-#0 +]*\(\*\|\d\+\)\=\(\.\(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonBString,pythonUniString,pythonRawString,pythonUniRawString  endif  if exists("python_highlight_doctests") && python_highlight_doctests != 0 @@ -228,47 +193,33 @@ if exists("python_highlight_doctests") && python_highlight_doctests != 0  endif  " Numbers (ints, longs, floats, complex) -syn match   pythonHexError	"\<0[xX]\x*[g-zG-Z]\x*[lL]\=\>" display -  syn match   pythonHexNumber	"\<0[xX]\x\+[lL]\=\>" display -syn match   pythonOctNumber "\<0[oO]\o\+[lL]\=\>" display -syn match   pythonBinNumber "\<0[bB][01]\+[lL]\=\>" display - +syn match   pythonHexNumber	"\<0[xX]\>" display  syn match   pythonNumber	"\<\d\+[lLjJ]\=\>" display -  syn match   pythonFloat		"\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" display  syn match   pythonFloat		"\<\d\+[eE][+-]\=\d\+[jJ]\=\>" display  syn match   pythonFloat		"\<\d\+\.\d*\([eE][+-]\=\d\+\)\=[jJ]\=" display -syn match   pythonOctError	"\<0[oO]\=\o*[8-9]\d*[lL]\=\>" display -syn match   pythonBinError	"\<0[bB][01]*[2-9]\d*[lL]\=\>" display +syn match   pythonOctalError	"\<0\o*[89]\d*[lL]\=\>" display +syn match   pythonHexError	"\<0[xX]\X\+[lL]\=\>" display -if exists("python_highlight_builtin_objs") && python_highlight_builtin_objs != 0 -  " Builtin objects and types -  syn keyword pythonBuiltinObj	True False Ellipsis None NotImplemented -  syn keyword pythonBuiltinObj	__debug__ __doc__ __file__ __name__ __package__ -endif +if exists("python_highlight_builtins") && python_highlight_builtins != 0 +  " Builtin functions, types and objects +  syn keyword pythonBuiltinObj	Ellipsis NotImplemented -if exists("python_highlight_builtin_funcs") && python_highlight_builtin_funcs != 0 -  " Builtin functions    syn keyword pythonBuiltinFunc	__import__ abs all any apply -  syn keyword pythonBuiltinFunc	basestring bin bool buffer bytearray bytes callable +  syn keyword pythonBuiltinFunc	basestring bool buffer callable    syn keyword pythonBuiltinFunc	chr classmethod cmp coerce compile complex    syn keyword pythonBuiltinFunc	delattr dict dir divmod enumerate eval -  syn keyword pythonBuiltinFunc	execfile file filter float format frozenset getattr -  syn keyword pythonBuiltinFunc	globals hasattr hash help hex id +  syn keyword pythonBuiltinFunc	execfile file filter float frozenset getattr +  syn keyword pythonBuiltinfunc globals hasattr hash help hex id     syn keyword pythonBuiltinFunc	input int intern isinstance    syn keyword pythonBuiltinFunc	issubclass iter len list locals long map max -  syn keyword pythonBuiltinFunc	min next object oct open ord -  syn keyword pythonBuiltinFunc	pow property range +  syn keyword pythonBuiltinFunc	min object oct open ord pow property range    syn keyword pythonBuiltinFunc	raw_input reduce reload repr -  syn keyword pythonBuiltinFunc	reversed round set setattr +  syn keyword pythonBuiltinFunc reversed round set setattr    syn keyword pythonBuiltinFunc	slice sorted staticmethod str sum super tuple    syn keyword pythonBuiltinFunc	type unichr unicode vars xrange zip - -  if exists("python_print_as_function") && python_print_as_function != 0 -      syn keyword pythonBuiltinFunc	print -  endif  endif  if exists("python_highlight_exceptions") && python_highlight_exceptions != 0 @@ -277,7 +228,7 @@ if exists("python_highlight_exceptions") && python_highlight_exceptions != 0    syn keyword pythonExClass	Exception StandardError ArithmeticError    syn keyword pythonExClass	LookupError EnvironmentError -  syn keyword pythonExClass	AssertionError AttributeError BufferError EOFError +  syn keyword pythonExClass	AssertionError AttributeError EOFError    syn keyword pythonExClass	FloatingPointError GeneratorExit IOError    syn keyword pythonExClass	ImportError IndexError KeyError    syn keyword pythonExClass	KeyboardInterrupt MemoryError NameError @@ -287,12 +238,12 @@ if exists("python_highlight_exceptions") && python_highlight_exceptions != 0    syn keyword pythonExClass	SystemError SystemExit TypeError    syn keyword pythonExClass	UnboundLocalError UnicodeError    syn keyword pythonExClass	UnicodeEncodeError UnicodeDecodeError -  syn keyword pythonExClass	UnicodeTranslateError ValueError VMSError +  syn keyword pythonExClass	UnicodeTranslateError ValueError    syn keyword pythonExClass	WindowsError ZeroDivisionError -  syn keyword pythonExClass	Warning UserWarning BytesWarning DeprecationWarning +  syn keyword pythonExClass	Warning UserWarning DeprecationWarning    syn keyword pythonExClass	PendingDepricationWarning SyntaxWarning -  syn keyword pythonExClass	RuntimeWarning FutureWarning +  syn keyword pythonExClass	RuntimeWarning FutureWarning OverflowWarning    syn keyword pythonExClass	ImportWarning UnicodeWarning  endif @@ -315,7 +266,7 @@ if version >= 508 || !exists("did_python_syn_inits")    endif    HiLink pythonStatement	Statement -  HiLink pythonPreCondit	Statement +  HiLink pythonImport		Statement    HiLink pythonFunction		Function    HiLink pythonConditional	Conditional    HiLink pythonRepeat		Repeat @@ -323,8 +274,6 @@ if version >= 508 || !exists("did_python_syn_inits")    HiLink pythonOperator		Operator    HiLink pythonDecorator	Define -  HiLink pythonDottedName	Function -  HiLink pythonDot          Normal    HiLink pythonComment		Comment    HiLink pythonCoding		Special @@ -336,32 +285,30 @@ if version >= 508 || !exists("did_python_syn_inits")    HiLink pythonSpaceError	Error    HiLink pythonString		String +  HiLink pythonBString		String    HiLink pythonUniString	String    HiLink pythonRawString	String    HiLink pythonUniRawString	String    HiLink pythonEscape			Special +  HiLink pythonBEscape			Special    HiLink pythonEscapeError		Error +  HiLink pythonBEscapeError		Error    HiLink pythonUniEscape		Special    HiLink pythonUniEscapeError		Error    HiLink pythonUniRawEscape		Special    HiLink pythonUniRawEscapeError	Error -  HiLink pythonStrFormatting	Special -  HiLink pythonStrFormat    	Special -  HiLink pythonStrTemplate	    Special +  HiLink pythonStrFormat	Special    HiLink pythonDocTest		Special    HiLink pythonDocTest2		Special    HiLink pythonNumber		Number    HiLink pythonHexNumber	Number -  HiLink pythonOctNumber	Number -  HiLink pythonBinNumber	Number    HiLink pythonFloat		Float -  HiLink pythonOctError	    Error +  HiLink pythonOctalError	Error    HiLink pythonHexError		Error -  HiLink pythonBinError		Error    HiLink pythonBuiltinObj	Structure    HiLink pythonBuiltinFunc	Function | 
