Mercurial > hg > RemoteEditor > vim7
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