diff .vim/syntax/python.vim @ 0:c30d68fbd368

Initial import from svn.
author Augie Fackler <durin42@gmail.com>
date Wed, 26 Nov 2008 10:56:09 -0600
parents
children
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/.vim/syntax/python.vim
@@ -0,0 +1,352 @@
+" Vim syntax file
+" Language:	Python
+" Maintainer:	Dmitry Vasiliev <dima@hlabs.spb.ru>
+" URL:		http://www.hlabs.spb.ru/vim/python.vim
+" Last Change:	2008-09-29
+" Filenames:	*.py
+" Version:	2.6.3
+"
+" Based on python.vim (from Vim 6.1 distribution)
+" by Neil Schemenauer <nas@python.ca>
+"
+" Thanks:
+"
+"    Jeroen Ruigrok van der Werven
+"        for the idea to highlight 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
+
+"
+" Options:
+"
+"    For set option do: let OPTION_NAME = 1
+"    For clear option do: let OPTION_NAME = 0
+"
+" Option names:
+"
+"    For highlight builtin functions:
+"       python_highlight_builtins
+"
+"    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
+"
+"    For highlight trailing spaces:
+"       python_highlight_space_errors
+"
+"    For highlight doc-tests:
+"       python_highlight_doctests
+"
+"    If you want all Python highlightings above:
+"       python_highlight_all
+"    (This option not override previously set options)
+"
+"    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
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+if exists("python_highlight_all") && python_highlight_all != 0
+  " Not override previously set options
+  if !exists("python_highlight_builtins")
+    let python_highlight_builtins = 1
+  endif
+  if !exists("python_highlight_exceptions")
+    let python_highlight_exceptions = 1
+  endif
+  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
+  if !exists("python_highlight_space_errors")
+    let python_highlight_space_errors = 1
+  endif
+  if !exists("python_highlight_doctests")
+    let python_highlight_doctests = 1
+  endif
+endif
+
+" Keywords
+syn keyword pythonStatement	break continue del
+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	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 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
+
+" Decorators (new in Python 2.4)
+syn match   pythonDecorator	"@" display nextgroup=pythonFunction skipwhite
+
+" Comments
+syn match   pythonComment	"#.*$" display contains=pythonTodo,@Spell
+syn match   pythonRun		"\%^#!.*$"
+syn match   pythonCoding	"\%^.*\(\n.*\)\?#.*coding[:=]\s*[0-9A-Za-z-_.]\+.*$"
+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		"[=]\{3,}" display
+
+" TODO: Mixing spaces and tabs also may be used for pretty formatting multiline
+" statements. For now I don't know how to work around this.
+if exists("python_highlight_indent_errors") && python_highlight_indent_errors != 0
+  syn match pythonIndentError	"^\s*\( \t\|\t \)\s*\S"me=e-1 display
+endif
+
+" Trailing space errors
+if exists("python_highlight_space_errors") && python_highlight_space_errors != 0
+  syn match pythonSpaceError	"\s\+$" display
+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 match  pythonEscape		+\\[abfnrtv'"\\]+ display contained
+syn match  pythonEscape		"\\\o\o\=\o\=" display contained
+syn match  pythonEscapeError	"\\\o\{,2}[89]" display contained
+syn match  pythonEscape		"\\x\x\{2}" display contained
+syn match  pythonEscapeError	"\\x\x\=\X" display contained
+syn match  pythonEscape		"\\$"
+
+" 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
+syn region pythonUniString	start=+[uU]"""+ end=+"""+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell
+syn region pythonUniString	start=+[uU]'''+ end=+'''+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell
+
+syn match  pythonUniEscape	"\\u\x\{4}" display contained
+syn match  pythonUniEscapeError	"\\u\x\{,3}\X" display contained
+syn match  pythonUniEscape	"\\U\x\{8}" display contained
+syn match  pythonUniEscapeError	"\\U\x\{,7}\X" display contained
+syn match  pythonUniEscape	"\\N{[A-Z ]\+}" display contained
+syn match  pythonUniEscapeError	"\\N{[^A-Z ]\+}" display contained
+
+" Raw strings
+syn region pythonRawString	start=+[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell
+syn region pythonRawString	start=+[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell
+syn region pythonRawString	start=+[rR]"""+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell
+syn region pythonRawString	start=+[rR]'''+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell
+
+syn match pythonRawEscape	+\\['"]+ display transparent contained
+
+" Unicode raw strings
+syn region pythonUniRawString	start=+[uU][rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell
+syn region pythonUniRawString	start=+[uU][rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell
+syn region pythonUniRawString	start=+[uU][rR]"""+ end=+"""+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest2,pythonSpaceError,@Spell
+syn region pythonUniRawString	start=+[uU][rR]'''+ end=+'''+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest,pythonSpaceError,@Spell
+
+syn match  pythonUniRawEscape		"\([^\\]\(\\\\\)*\)\@<=\\u\x\{4}" display contained
+syn match  pythonUniRawEscapeError	"\([^\\]\(\\\\\)*\)\@<=\\u\x\{,3}\X" display contained
+
+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
+endif
+
+if exists("python_highlight_doctests") && python_highlight_doctests != 0
+  " DocTests
+  syn region pythonDocTest	start="^\s*>>>" end=+'''+he=s-1 end="^\s*$" contained
+  syn region pythonDocTest2	start="^\s*>>>" end=+"""+he=s-1 end="^\s*$" contained
+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   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
+
+if exists("python_highlight_builtins") && python_highlight_builtins != 0
+  " Builtin functions, types and objects
+  syn keyword pythonBuiltinObj	True False Ellipsis None NotImplemented
+  syn keyword pythonBuiltinObj	__debug__ __doc__ __file__ __name__ __package__
+
+  syn keyword pythonBuiltinFunc	__import__ abs all any apply
+  syn keyword pythonBuiltinFunc	basestring bin bool buffer bytearray bytes 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	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	raw_input reduce reload repr
+  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
+  " Builtin exceptions and warnings
+  syn keyword pythonExClass	BaseException
+  syn keyword pythonExClass	Exception StandardError ArithmeticError
+  syn keyword pythonExClass	LookupError EnvironmentError
+
+  syn keyword pythonExClass	AssertionError AttributeError BufferError EOFError
+  syn keyword pythonExClass	FloatingPointError GeneratorExit IOError
+  syn keyword pythonExClass	ImportError IndexError KeyError
+  syn keyword pythonExClass	KeyboardInterrupt MemoryError NameError
+  syn keyword pythonExClass	NotImplementedError OSError OverflowError
+  syn keyword pythonExClass	ReferenceError RuntimeError StopIteration
+  syn keyword pythonExClass	SyntaxError IndentationError TabError
+  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	WindowsError ZeroDivisionError
+
+  syn keyword pythonExClass	Warning UserWarning BytesWarning DeprecationWarning
+  syn keyword pythonExClass	PendingDepricationWarning SyntaxWarning
+  syn keyword pythonExClass	RuntimeWarning FutureWarning
+  syn keyword pythonExClass	ImportWarning UnicodeWarning
+endif
+
+if exists("python_slow_sync") && python_slow_sync != 0
+  syn sync minlines=2000
+else
+  " This is fast but code inside triple quoted strings screws it up. It
+  " is impossible to fix because the only way to know if you are inside a
+  " triple quoted string is to start from the beginning of the file.
+  syn sync match pythonSync grouphere NONE "):$"
+  syn sync maxlines=200
+endif
+
+if version >= 508 || !exists("did_python_syn_inits")
+  if version <= 508
+    let did_python_syn_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink pythonStatement	Statement
+  HiLink pythonImport		Statement
+  HiLink pythonFunction		Function
+  HiLink pythonConditional	Conditional
+  HiLink pythonRepeat		Repeat
+  HiLink pythonException	Exception
+  HiLink pythonOperator		Operator
+
+  HiLink pythonDecorator	Define
+
+  HiLink pythonComment		Comment
+  HiLink pythonCoding		Special
+  HiLink pythonRun		Special
+  HiLink pythonTodo		Todo
+
+  HiLink pythonError		Error
+  HiLink pythonIndentError	Error
+  HiLink pythonSpaceError	Error
+
+  HiLink pythonString		String
+  HiLink pythonUniString	String
+  HiLink pythonRawString	String
+  HiLink pythonUniRawString	String
+
+  HiLink pythonEscape			Special
+  HiLink pythonEscapeError		Error
+  HiLink pythonUniEscape		Special
+  HiLink pythonUniEscapeError		Error
+  HiLink pythonUniRawEscape		Special
+  HiLink pythonUniRawEscapeError	Error
+
+  HiLink pythonStrFormatting	Special
+  HiLink pythonStrFormat    	Special
+  HiLink pythonStrTemplate	    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 pythonHexError		Error
+  HiLink pythonBinError		Error
+
+  HiLink pythonBuiltinObj	Structure
+  HiLink pythonBuiltinFunc	Function
+
+  HiLink pythonExClass	Structure
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "python"