diff runtime/syntax/python.vim @ 0:76efa0be13f1

Initial revision
author atsuki
date Sat, 10 Nov 2007 15:07:22 +0900
parents
children c16898406ff2
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtime/syntax/python.vim	Sat Nov 10 15:07:22 2007 +0900
@@ -0,0 +1,181 @@
+" Vim syntax file
+" Language:	Python
+" Maintainer:	Neil Schemenauer <nas@python.ca>
+" Updated:	2006-10-15
+"		Added Python 2.4 features 2006 May 4 (Dmitry Vasiliev)
+"
+" Options to control Python syntax highlighting:
+"
+" For highlighted numbers:
+"
+"    let python_highlight_numbers = 1
+"
+" For highlighted builtin functions:
+"
+"    let python_highlight_builtins = 1
+"
+" For highlighted standard exceptions:
+"
+"    let python_highlight_exceptions = 1
+"
+" Highlight erroneous whitespace:
+"
+"    let python_highlight_space_errors = 1
+"
+" If you want all possible Python highlighting (the same as setting the
+" preceding options):
+"
+"    let python_highlight_all = 1
+"
+
+" 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
+
+
+syn keyword pythonStatement	break continue del
+syn keyword pythonStatement	except exec finally
+syn keyword pythonStatement	pass print raise
+syn keyword pythonStatement	return try with
+syn keyword pythonStatement	global assert
+syn keyword pythonStatement	lambda yield
+syn keyword pythonStatement	def class nextgroup=pythonFunction skipwhite
+syn match   pythonFunction	"[a-zA-Z_][a-zA-Z0-9_]*" contained
+syn keyword pythonRepeat	for while
+syn keyword pythonConditional	if elif else
+syn keyword pythonOperator	and in is not or
+" AS will be a keyword in Python 3
+syn keyword pythonPreCondit	import from as
+syn match   pythonComment	"#.*$" contains=pythonTodo,@Spell
+syn keyword pythonTodo		TODO FIXME XXX contained
+
+" Decorators (new in Python 2.4)
+syn match   pythonDecorator	"@" display nextgroup=pythonFunction skipwhite
+
+" strings
+syn region pythonString		matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=pythonEscape,@Spell
+syn region pythonString		matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=pythonEscape,@Spell
+syn region pythonString		matchgroup=Normal start=+[uU]\="""+ end=+"""+ contains=pythonEscape,@Spell
+syn region pythonString		matchgroup=Normal start=+[uU]\='''+ end=+'''+ contains=pythonEscape,@Spell
+syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]'+ end=+'+ skip=+\\\\\|\\'+ contains=@Spell
+syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]"+ end=+"+ skip=+\\\\\|\\"+ contains=@Spell
+syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]"""+ end=+"""+ contains=@Spell
+syn region pythonRawString	matchgroup=Normal start=+[uU]\=[rR]'''+ end=+'''+ contains=@Spell
+syn match  pythonEscape		+\\[abfnrtv'"\\]+ contained
+syn match  pythonEscape		"\\\o\{1,3}" contained
+syn match  pythonEscape		"\\x\x\{2}" contained
+syn match  pythonEscape		"\(\\u\x\{4}\|\\U\x\{8}\)" contained
+syn match  pythonEscape		"\\$"
+
+if exists("python_highlight_all")
+  let python_highlight_numbers = 1
+  let python_highlight_builtins = 1
+  let python_highlight_exceptions = 1
+  let python_highlight_space_errors = 1
+endif
+
+if exists("python_highlight_numbers")
+  " numbers (including longs and complex)
+  syn match   pythonNumber	"\<0x\x\+[Ll]\=\>"
+  syn match   pythonNumber	"\<\d\+[LljJ]\=\>"
+  syn match   pythonNumber	"\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>"
+  syn match   pythonNumber	"\<\d\+\.\([eE][+-]\=\d\+\)\=[jJ]\=\>"
+  syn match   pythonNumber	"\<\d\+\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>"
+endif
+
+if exists("python_highlight_builtins")
+  " builtin functions, types and objects, not really part of the syntax
+  syn keyword pythonBuiltin	True False bool enumerate set frozenset help
+  syn keyword pythonBuiltin	reversed sorted sum
+  syn keyword pythonBuiltin	Ellipsis None NotImplemented __import__ abs
+  syn keyword pythonBuiltin	apply buffer callable chr classmethod cmp
+  syn keyword pythonBuiltin	coerce compile complex delattr dict dir divmod
+  syn keyword pythonBuiltin	eval execfile file filter float getattr globals
+  syn keyword pythonBuiltin	hasattr hash hex id input int intern isinstance
+  syn keyword pythonBuiltin	issubclass iter len list locals long map max
+  syn keyword pythonBuiltin	min object oct open ord pow property range
+  syn keyword pythonBuiltin	raw_input reduce reload repr round setattr
+  syn keyword pythonBuiltin	slice staticmethod str super tuple type unichr
+  syn keyword pythonBuiltin	unicode vars xrange zip
+endif
+
+if exists("python_highlight_exceptions")
+  " builtin exceptions and warnings
+  syn keyword pythonException	ArithmeticError AssertionError AttributeError
+  syn keyword pythonException	DeprecationWarning EOFError EnvironmentError
+  syn keyword pythonException	Exception FloatingPointError IOError
+  syn keyword pythonException	ImportError IndentationError IndexError
+  syn keyword pythonException	KeyError KeyboardInterrupt LookupError
+  syn keyword pythonException	MemoryError NameError NotImplementedError
+  syn keyword pythonException	OSError OverflowError OverflowWarning
+  syn keyword pythonException	ReferenceError RuntimeError RuntimeWarning
+  syn keyword pythonException	StandardError StopIteration SyntaxError
+  syn keyword pythonException	SyntaxWarning SystemError SystemExit TabError
+  syn keyword pythonException	TypeError UnboundLocalError UnicodeError
+  syn keyword pythonException	UnicodeEncodeError UnicodeDecodeError
+  syn keyword pythonException	UnicodeTranslateError
+  syn keyword pythonException	UserWarning ValueError Warning WindowsError
+  syn keyword pythonException	ZeroDivisionError
+endif
+
+if exists("python_highlight_space_errors")
+  " trailing whitespace
+  syn match   pythonSpaceError   display excludenl "\S\s\+$"ms=s+1
+  " mixed tabs and spaces
+  syn match   pythonSpaceError   display " \+\t"
+  syn match   pythonSpaceError   display "\t\+ "
+endif
+
+" 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. If
+" you have a fast machine you can try uncommenting the "sync minlines"
+" and commenting out the rest.
+syn sync match pythonSync grouphere NONE "):$"
+syn sync maxlines=200
+"syn sync minlines=2000
+
+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
+
+  " The default methods for highlighting.  Can be overridden later
+  HiLink pythonStatement	Statement
+  HiLink pythonFunction		Function
+  HiLink pythonConditional	Conditional
+  HiLink pythonRepeat		Repeat
+  HiLink pythonString		String
+  HiLink pythonRawString	String
+  HiLink pythonEscape		Special
+  HiLink pythonOperator		Operator
+  HiLink pythonPreCondit	PreCondit
+  HiLink pythonComment		Comment
+  HiLink pythonTodo		Todo
+  HiLink pythonDecorator	Define
+  if exists("python_highlight_numbers")
+    HiLink pythonNumber	Number
+  endif
+  if exists("python_highlight_builtins")
+    HiLink pythonBuiltin	Function
+  endif
+  if exists("python_highlight_exceptions")
+    HiLink pythonException	Exception
+  endif
+  if exists("python_highlight_space_errors")
+    HiLink pythonSpaceError	Error
+  endif
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "python"
+
+" vim: ts=8