summaryrefslogtreecommitdiff
path: root/runtime/syntax/python.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/python.vim')
-rw-r--r--runtime/syntax/python.vim171
1 files changed, 171 insertions, 0 deletions
diff --git a/runtime/syntax/python.vim b/runtime/syntax/python.vim
new file mode 100644
index 000000000..a73dfa73e
--- /dev/null
+++ b/runtime/syntax/python.vim
@@ -0,0 +1,171 @@
+" Vim syntax file
+" Language: Python
+" Maintainer: Neil Schemenauer <nas@python.ca>
+" Updated: 2002-10-18
+"
+" 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
+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
+syn keyword pythonPreCondit import from
+syn match pythonComment "#.*$" contains=pythonTodo
+syn keyword pythonTodo TODO FIXME XXX contained
+
+" strings
+syn region pythonString matchgroup=Normal start=+[uU]\='+ end=+'+ skip=+\\\\\|\\'+ contains=pythonEscape
+syn region pythonString matchgroup=Normal start=+[uU]\="+ end=+"+ skip=+\\\\\|\\"+ contains=pythonEscape
+syn region pythonString matchgroup=Normal start=+[uU]\="""+ end=+"""+ contains=pythonEscape
+syn region pythonString matchgroup=Normal start=+[uU]\='''+ end=+'''+ contains=pythonEscape
+syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]'+ end=+'+ skip=+\\\\\|\\'+
+syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]"+ end=+"+ skip=+\\\\\|\\"+
+syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]"""+ end=+"""+
+syn region pythonRawString matchgroup=Normal start=+[uU]\=[rR]'''+ end=+'''+
+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 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 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
+ 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