dotfiles/vim/plugins/pythonsyntax/folding-ideas/python.vim.1.14
2018-04-05 13:06:54 +02:00

237 lines
9.7 KiB
Plaintext

" Vim syntax file
" Language: Python
" Maintainer: Neil Schemenauer <nas at python dot ca>
" Updated: $Date: 2003/01/12 15:35:02 $
" Updated by: Dmitry Vasiliev <dima at hlabs dot org>
" Filenames: *.py
" $Revision: 1.14 $
"
" Options:
" For folded functions and classes:
"
" let python_folding = 1
"
" For highlighted builtin functions:
"
" let python_highlight_builtins = 1
"
" For highlighted standard exceptions:
"
" let python_highlight_exceptions = 1
"
" For highlighted string formatting:
"
" let python_highlight_string_formatting = 1
"
" If you want all possible Python highlighting:
"
" let python_highlight_all = 1
"
" TODO: Check more errors?
" 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")
let python_folding = 1
let python_highlight_builtins = 1
let python_highlight_exceptions = 1
let python_highlight_string_formatting = 1
endif
" Keywords
syn keyword pythonStatement break continue del
syn keyword pythonStatement exec return
syn keyword pythonStatement pass print raise
syn keyword pythonStatement global assert
syn keyword pythonStatement lambda yield
if exists("python_folding") && has("folding")
syn match pythonStatement "\<\(def\|class\)\>" display nextgroup=pythonFunction skipwhite
else
syn keyword pythonStatement def class nextgroup=pythonFunction skipwhite
endif
syn match pythonFunction "\h\w*" 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
" Comments
syn match pythonComment "#.*$" display contains=pythonTodo
syn keyword pythonTodo TODO FIXME XXX contained
" Erroneous characters that cannont be in a python program
syn match pythonError "[@$?]" display
" Mixing spaces and tabs is bad
syn match pythonError "^\s*\(\t \| \t\)\s*" display
" Strings
syn region pythonString start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ contains=pythonEscape,pythonEscapeError
syn region pythonString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ contains=pythonEscape,pythonEscapeError
syn region pythonString start=+"""+ end=+"""+ contains=pythonEscape,pythonEscapeError
syn region pythonString start=+'''+ end=+'''+ contains=pythonEscape,pythonEscapeError
syn match pythonEscape +\\[abfnrtv'"\\]+ display contained
syn match pythonEscapeError +\\[^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=+$+ contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError
syn region pythonUniString start=+[uU]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError
syn region pythonUniString start=+[uU]"""+ end=+"""+ contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError
syn region pythonUniString start=+[uU]'''+ end=+'''+ contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError
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=+$+ contains=pythonRawEscape
syn region pythonRawString start=+[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ contains=pythonRawEscape
syn region pythonRawString start=+[rR]"""+ end=+"""+
syn region pythonRawString start=+[rR]'''+ end=+'''+
syn match pythonRawEscape +\\['"]+ display transparent contained
" Unicode raw strings
syn region pythonUniRawString start=+[uU][rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError
syn region pythonUniRawString start=+[uU][rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError
syn region pythonUniRawString start=+[uU][rR]"""+ end=+"""+ contains=pythonUniRawEscape,pythonUniRawEscapeError
syn region pythonUniRawString start=+[uU][rR]'''+ end=+'''+ contains=pythonUniRawEscape,pythonUniRawEscapeError
syn match pythonUniRawEscape "\([^\\]\(\\\\\)*\)\@<=\\u\x\{4}" display contained
syn match pythonUniRawEscapeError "\([^\\]\(\\\\\)*\)\@<=\\u\x\{,3}\X" display contained
if exists("python_highlight_string_formatting")
" String formatting
syn match pythonStrFormat "%\(([^)]\+)\)\=[-#0 +]\=\d*\(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonRawString
syn match pythonStrFormat "%[-#0 +]\=\(\*\|\d\+\)\=\(\.\(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonRawString
endif
" Numbers (ints, longs, floats, complex)
syn match pythonNumber "\<0[xX]\x\+[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 pythonOctalError "\<0\o*[89]\d*[lLjJ]\=\>" display
if exists("python_highlight_builtins")
" Builtin functions, types and objects, not really part of the syntax
syn keyword pythonBuiltinObj True False Ellipsis None NotImplemented
syn keyword pythonBuiltinFunc bool __import__ abs
syn keyword pythonBuiltinFunc apply buffer callable chr classmethod cmp
syn keyword pythonBuiltinFunc coerce compile complex delattr dict dir divmod
syn keyword pythonBuiltinFunc eval execfile file filter float getattr globals
syn keyword pythonBuiltinFunc hasattr hash hex id input int intern isinstance
syn keyword pythonBuiltinFunc issubclass iter len list locals long map max
syn keyword pythonBuiltinFunc min object oct open ord pow property range
syn keyword pythonBuiltinFunc raw_input reduce reload repr round setattr
syn keyword pythonBuiltinFunc slice staticmethod str super tuple type unichr
syn keyword pythonBuiltinFunc unicode vars xrange zip
endif
if exists("python_highlight_exceptions")
" Builtin exceptions and warnings
syn keyword pythonExClass ArithmeticError AssertionError AttributeError
syn keyword pythonExClass DeprecationWarning EOFError EnvironmentError
syn keyword pythonExClass Exception FloatingPointError IOError
syn keyword pythonExClass ImportError IndentiationError IndexError
syn keyword pythonExClass KeyError KeyboardInterrupt LookupError
syn keyword pythonExClass MemoryError NameError NotImplementedError
syn keyword pythonExClass OSError OverflowError OverflowWarning
syn keyword pythonExClass ReferenceError RuntimeError RuntimeWarning
syn keyword pythonExClass StandardError StopIteration SyntaxError
syn keyword pythonExClass SyntaxWarning SystemError SystemExit TabError
syn keyword pythonExClass TypeError UnboundLocalError UnicodeError
syn keyword pythonExClass UserWarning ValueError Warning WindowsError
syn keyword pythonExClass ZeroDivisionError
endif
syn sync clear
if exists("python_folding") && has("folding")
syn sync fromstart
"syn match pythonFold "^\(\s*\)\(class\|def\)\s.*\(\(\n\s*\)*\n\1\s\+\S.*\)\+" transparent fold
syn region pythonFold start="^\z(\s*\)\(class\|def\)\s" skip="\(\s*\n\)\+\z1\s\+\(\S\|\%$\)" end="\(\s*\n\)\+\s*\(\S\|\%$\)"me=s-1 transparent fold
syn region pythonFold start="{" end="}" transparent fold
syn region pythonFold start="\[" end="\]" transparent fold
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. 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
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 pythonComment Comment
HiLink pythonTodo Todo
HiLink pythonError 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
if exists("python_highlight_string_formatting")
HiLink pythonStrFormat Special
endif
HiLink pythonNumber Number
HiLink pythonFloat Float
HiLink pythonOctalError Error
if exists("python_highlight_builtins")
HiLink pythonBuiltinObj Structure
HiLink pythonBuiltinFunc Function
endif
if exists("python_highlight_exceptions")
HiLink pythonExClass Structure
endif
delcommand HiLink
endif
let b:current_syntax = "python"