Mercurial > dotfiles
comparison .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 |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:c30d68fbd368 |
|---|---|
| 1 " Vim syntax file | |
| 2 " Language: Python | |
| 3 " Maintainer: Dmitry Vasiliev <dima@hlabs.spb.ru> | |
| 4 " URL: http://www.hlabs.spb.ru/vim/python.vim | |
| 5 " Last Change: 2008-09-29 | |
| 6 " Filenames: *.py | |
| 7 " Version: 2.6.3 | |
| 8 " | |
| 9 " Based on python.vim (from Vim 6.1 distribution) | |
| 10 " by Neil Schemenauer <nas@python.ca> | |
| 11 " | |
| 12 " Thanks: | |
| 13 " | |
| 14 " Jeroen Ruigrok van der Werven | |
| 15 " for the idea to highlight erroneous operators | |
| 16 " Pedro Algarvio | |
| 17 " for the patch to enable spell checking only for the right spots | |
| 18 " (strings and comments) | |
| 19 " John Eikenberry | |
| 20 " for the patch fixing small typo | |
| 21 | |
| 22 " | |
| 23 " Options: | |
| 24 " | |
| 25 " For set option do: let OPTION_NAME = 1 | |
| 26 " For clear option do: let OPTION_NAME = 0 | |
| 27 " | |
| 28 " Option names: | |
| 29 " | |
| 30 " For highlight builtin functions: | |
| 31 " python_highlight_builtins | |
| 32 " | |
| 33 " For highlight standard exceptions: | |
| 34 " python_highlight_exceptions | |
| 35 " | |
| 36 " For highlight string formatting: | |
| 37 " python_highlight_string_formatting | |
| 38 " | |
| 39 " For highlight str.format syntax: | |
| 40 " python_highlight_string_format | |
| 41 " | |
| 42 " For highlight string.Template syntax: | |
| 43 " python_highlight_string_templates | |
| 44 " | |
| 45 " For highlight indentation errors: | |
| 46 " python_highlight_indent_errors | |
| 47 " | |
| 48 " For highlight trailing spaces: | |
| 49 " python_highlight_space_errors | |
| 50 " | |
| 51 " For highlight doc-tests: | |
| 52 " python_highlight_doctests | |
| 53 " | |
| 54 " If you want all Python highlightings above: | |
| 55 " python_highlight_all | |
| 56 " (This option not override previously set options) | |
| 57 " | |
| 58 " For fast machines: | |
| 59 " python_slow_sync | |
| 60 " | |
| 61 " For "print" builtin as function: | |
| 62 " python_print_as_function | |
| 63 | |
| 64 " For version 5.x: Clear all syntax items | |
| 65 " For version 6.x: Quit when a syntax file was already loaded | |
| 66 if version < 600 | |
| 67 syntax clear | |
| 68 elseif exists("b:current_syntax") | |
| 69 finish | |
| 70 endif | |
| 71 | |
| 72 if exists("python_highlight_all") && python_highlight_all != 0 | |
| 73 " Not override previously set options | |
| 74 if !exists("python_highlight_builtins") | |
| 75 let python_highlight_builtins = 1 | |
| 76 endif | |
| 77 if !exists("python_highlight_exceptions") | |
| 78 let python_highlight_exceptions = 1 | |
| 79 endif | |
| 80 if !exists("python_highlight_string_formatting") | |
| 81 let python_highlight_string_formatting = 1 | |
| 82 endif | |
| 83 if !exists("python_highlight_string_format") | |
| 84 let python_highlight_string_format = 1 | |
| 85 endif | |
| 86 if !exists("python_highlight_string_templates") | |
| 87 let python_highlight_string_templates = 1 | |
| 88 endif | |
| 89 if !exists("python_highlight_indent_errors") | |
| 90 let python_highlight_indent_errors = 1 | |
| 91 endif | |
| 92 if !exists("python_highlight_space_errors") | |
| 93 let python_highlight_space_errors = 1 | |
| 94 endif | |
| 95 if !exists("python_highlight_doctests") | |
| 96 let python_highlight_doctests = 1 | |
| 97 endif | |
| 98 endif | |
| 99 | |
| 100 " Keywords | |
| 101 syn keyword pythonStatement break continue del | |
| 102 syn keyword pythonStatement exec return | |
| 103 syn keyword pythonStatement pass raise | |
| 104 syn keyword pythonStatement global assert | |
| 105 syn keyword pythonStatement lambda yield | |
| 106 syn keyword pythonStatement with | |
| 107 syn keyword pythonStatement def class nextgroup=pythonFunction skipwhite | |
| 108 syn match pythonFunction "[a-zA-Z_][a-zA-Z0-9_]*" display contained | |
| 109 syn keyword pythonRepeat for while | |
| 110 syn keyword pythonConditional if elif else | |
| 111 syn keyword pythonImport import from as | |
| 112 syn keyword pythonException try except finally | |
| 113 syn keyword pythonOperator and in is not or | |
| 114 | |
| 115 if !exists("python_print_as_function") || python_print_as_function == 0 | |
| 116 syn keyword pythonStatement print | |
| 117 endif | |
| 118 | |
| 119 " Decorators (new in Python 2.4) | |
| 120 syn match pythonDecorator "@" display nextgroup=pythonFunction skipwhite | |
| 121 | |
| 122 " Comments | |
| 123 syn match pythonComment "#.*$" display contains=pythonTodo,@Spell | |
| 124 syn match pythonRun "\%^#!.*$" | |
| 125 syn match pythonCoding "\%^.*\(\n.*\)\?#.*coding[:=]\s*[0-9A-Za-z-_.]\+.*$" | |
| 126 syn keyword pythonTodo TODO FIXME XXX contained | |
| 127 | |
| 128 " Errors | |
| 129 syn match pythonError "\<\d\+\D\+\>" display | |
| 130 syn match pythonError "[$?]" display | |
| 131 syn match pythonError "[&|]\{2,}" display | |
| 132 syn match pythonError "[=]\{3,}" display | |
| 133 | |
| 134 " TODO: Mixing spaces and tabs also may be used for pretty formatting multiline | |
| 135 " statements. For now I don't know how to work around this. | |
| 136 if exists("python_highlight_indent_errors") && python_highlight_indent_errors != 0 | |
| 137 syn match pythonIndentError "^\s*\( \t\|\t \)\s*\S"me=e-1 display | |
| 138 endif | |
| 139 | |
| 140 " Trailing space errors | |
| 141 if exists("python_highlight_space_errors") && python_highlight_space_errors != 0 | |
| 142 syn match pythonSpaceError "\s\+$" display | |
| 143 endif | |
| 144 | |
| 145 " Strings | |
| 146 syn region pythonString start=+[bB]\='+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell | |
| 147 syn region pythonString start=+[bB]\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell | |
| 148 syn region pythonString start=+[bB]\="""+ end=+"""+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest2,pythonSpaceError,@Spell | |
| 149 syn region pythonString start=+[bB]\='''+ end=+'''+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest,pythonSpaceError,@Spell | |
| 150 | |
| 151 syn match pythonEscape +\\[abfnrtv'"\\]+ display contained | |
| 152 syn match pythonEscape "\\\o\o\=\o\=" display contained | |
| 153 syn match pythonEscapeError "\\\o\{,2}[89]" display contained | |
| 154 syn match pythonEscape "\\x\x\{2}" display contained | |
| 155 syn match pythonEscapeError "\\x\x\=\X" display contained | |
| 156 syn match pythonEscape "\\$" | |
| 157 | |
| 158 " Unicode strings | |
| 159 syn region pythonUniString start=+[uU]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,@Spell | |
| 160 syn region pythonUniString start=+[uU]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,@Spell | |
| 161 syn region pythonUniString start=+[uU]"""+ end=+"""+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell | |
| 162 syn region pythonUniString start=+[uU]'''+ end=+'''+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell | |
| 163 | |
| 164 syn match pythonUniEscape "\\u\x\{4}" display contained | |
| 165 syn match pythonUniEscapeError "\\u\x\{,3}\X" display contained | |
| 166 syn match pythonUniEscape "\\U\x\{8}" display contained | |
| 167 syn match pythonUniEscapeError "\\U\x\{,7}\X" display contained | |
| 168 syn match pythonUniEscape "\\N{[A-Z ]\+}" display contained | |
| 169 syn match pythonUniEscapeError "\\N{[^A-Z ]\+}" display contained | |
| 170 | |
| 171 " Raw strings | |
| 172 syn region pythonRawString start=+[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell | |
| 173 syn region pythonRawString start=+[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell | |
| 174 syn region pythonRawString start=+[rR]"""+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell | |
| 175 syn region pythonRawString start=+[rR]'''+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell | |
| 176 | |
| 177 syn match pythonRawEscape +\\['"]+ display transparent contained | |
| 178 | |
| 179 " Unicode raw strings | |
| 180 syn region pythonUniRawString start=+[uU][rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell | |
| 181 syn region pythonUniRawString start=+[uU][rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell | |
| 182 syn region pythonUniRawString start=+[uU][rR]"""+ end=+"""+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest2,pythonSpaceError,@Spell | |
| 183 syn region pythonUniRawString start=+[uU][rR]'''+ end=+'''+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest,pythonSpaceError,@Spell | |
| 184 | |
| 185 syn match pythonUniRawEscape "\([^\\]\(\\\\\)*\)\@<=\\u\x\{4}" display contained | |
| 186 syn match pythonUniRawEscapeError "\([^\\]\(\\\\\)*\)\@<=\\u\x\{,3}\X" display contained | |
| 187 | |
| 188 if exists("python_highlight_string_formatting") && python_highlight_string_formatting != 0 | |
| 189 " String formatting | |
| 190 syn match pythonStrFormatting "%\(([^)]\+)\)\=[-#0 +]*\d*\(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString | |
| 191 syn match pythonStrFormatting "%[-#0 +]*\(\*\|\d\+\)\=\(\.\(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString | |
| 192 endif | |
| 193 | |
| 194 if exists("python_highlight_string_format") && python_highlight_string_format != 0 | |
| 195 " str.format syntax | |
| 196 syn match pythonStrFormat "{{\|}}" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString | |
| 197 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 | |
| 198 endif | |
| 199 | |
| 200 if exists("python_highlight_string_templates") && python_highlight_string_templates != 0 | |
| 201 " String templates | |
| 202 syn match pythonStrTemplate "\$\$" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString | |
| 203 syn match pythonStrTemplate "\${[a-zA-Z_][a-zA-Z0-9_]*}" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString | |
| 204 syn match pythonStrTemplate "\$[a-zA-Z_][a-zA-Z0-9_]*" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString | |
| 205 endif | |
| 206 | |
| 207 if exists("python_highlight_doctests") && python_highlight_doctests != 0 | |
| 208 " DocTests | |
| 209 syn region pythonDocTest start="^\s*>>>" end=+'''+he=s-1 end="^\s*$" contained | |
| 210 syn region pythonDocTest2 start="^\s*>>>" end=+"""+he=s-1 end="^\s*$" contained | |
| 211 endif | |
| 212 | |
| 213 " Numbers (ints, longs, floats, complex) | |
| 214 syn match pythonHexError "\<0[xX]\x*[g-zG-Z]\x*[lL]\=\>" display | |
| 215 | |
| 216 syn match pythonHexNumber "\<0[xX]\x\+[lL]\=\>" display | |
| 217 syn match pythonOctNumber "\<0[oO]\o\+[lL]\=\>" display | |
| 218 syn match pythonBinNumber "\<0[bB][01]\+[lL]\=\>" display | |
| 219 | |
| 220 syn match pythonNumber "\<\d\+[lLjJ]\=\>" display | |
| 221 | |
| 222 syn match pythonFloat "\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" display | |
| 223 syn match pythonFloat "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" display | |
| 224 syn match pythonFloat "\<\d\+\.\d*\([eE][+-]\=\d\+\)\=[jJ]\=" display | |
| 225 | |
| 226 syn match pythonOctError "\<0[oO]\=\o*[8-9]\d*[lL]\=\>" display | |
| 227 syn match pythonBinError "\<0[bB][01]*[2-9]\d*[lL]\=\>" display | |
| 228 | |
| 229 if exists("python_highlight_builtins") && python_highlight_builtins != 0 | |
| 230 " Builtin functions, types and objects | |
| 231 syn keyword pythonBuiltinObj True False Ellipsis None NotImplemented | |
| 232 syn keyword pythonBuiltinObj __debug__ __doc__ __file__ __name__ __package__ | |
| 233 | |
| 234 syn keyword pythonBuiltinFunc __import__ abs all any apply | |
| 235 syn keyword pythonBuiltinFunc basestring bin bool buffer bytearray bytes callable | |
| 236 syn keyword pythonBuiltinFunc chr classmethod cmp coerce compile complex | |
| 237 syn keyword pythonBuiltinFunc delattr dict dir divmod enumerate eval | |
| 238 syn keyword pythonBuiltinFunc execfile file filter float format frozenset getattr | |
| 239 syn keyword pythonBuiltinFunc globals hasattr hash help hex id | |
| 240 syn keyword pythonBuiltinFunc input int intern isinstance | |
| 241 syn keyword pythonBuiltinFunc issubclass iter len list locals long map max | |
| 242 syn keyword pythonBuiltinFunc min next object oct open ord | |
| 243 syn keyword pythonBuiltinFunc pow property range | |
| 244 syn keyword pythonBuiltinFunc raw_input reduce reload repr | |
| 245 syn keyword pythonBuiltinFunc reversed round set setattr | |
| 246 syn keyword pythonBuiltinFunc slice sorted staticmethod str sum super tuple | |
| 247 syn keyword pythonBuiltinFunc type unichr unicode vars xrange zip | |
| 248 | |
| 249 if exists("python_print_as_function") && python_print_as_function != 0 | |
| 250 syn keyword pythonBuiltinFunc print | |
| 251 endif | |
| 252 endif | |
| 253 | |
| 254 if exists("python_highlight_exceptions") && python_highlight_exceptions != 0 | |
| 255 " Builtin exceptions and warnings | |
| 256 syn keyword pythonExClass BaseException | |
| 257 syn keyword pythonExClass Exception StandardError ArithmeticError | |
| 258 syn keyword pythonExClass LookupError EnvironmentError | |
| 259 | |
| 260 syn keyword pythonExClass AssertionError AttributeError BufferError EOFError | |
| 261 syn keyword pythonExClass FloatingPointError GeneratorExit IOError | |
| 262 syn keyword pythonExClass ImportError IndexError KeyError | |
| 263 syn keyword pythonExClass KeyboardInterrupt MemoryError NameError | |
| 264 syn keyword pythonExClass NotImplementedError OSError OverflowError | |
| 265 syn keyword pythonExClass ReferenceError RuntimeError StopIteration | |
| 266 syn keyword pythonExClass SyntaxError IndentationError TabError | |
| 267 syn keyword pythonExClass SystemError SystemExit TypeError | |
| 268 syn keyword pythonExClass UnboundLocalError UnicodeError | |
| 269 syn keyword pythonExClass UnicodeEncodeError UnicodeDecodeError | |
| 270 syn keyword pythonExClass UnicodeTranslateError ValueError VMSError | |
| 271 syn keyword pythonExClass WindowsError ZeroDivisionError | |
| 272 | |
| 273 syn keyword pythonExClass Warning UserWarning BytesWarning DeprecationWarning | |
| 274 syn keyword pythonExClass PendingDepricationWarning SyntaxWarning | |
| 275 syn keyword pythonExClass RuntimeWarning FutureWarning | |
| 276 syn keyword pythonExClass ImportWarning UnicodeWarning | |
| 277 endif | |
| 278 | |
| 279 if exists("python_slow_sync") && python_slow_sync != 0 | |
| 280 syn sync minlines=2000 | |
| 281 else | |
| 282 " This is fast but code inside triple quoted strings screws it up. It | |
| 283 " is impossible to fix because the only way to know if you are inside a | |
| 284 " triple quoted string is to start from the beginning of the file. | |
| 285 syn sync match pythonSync grouphere NONE "):$" | |
| 286 syn sync maxlines=200 | |
| 287 endif | |
| 288 | |
| 289 if version >= 508 || !exists("did_python_syn_inits") | |
| 290 if version <= 508 | |
| 291 let did_python_syn_inits = 1 | |
| 292 command -nargs=+ HiLink hi link <args> | |
| 293 else | |
| 294 command -nargs=+ HiLink hi def link <args> | |
| 295 endif | |
| 296 | |
| 297 HiLink pythonStatement Statement | |
| 298 HiLink pythonImport Statement | |
| 299 HiLink pythonFunction Function | |
| 300 HiLink pythonConditional Conditional | |
| 301 HiLink pythonRepeat Repeat | |
| 302 HiLink pythonException Exception | |
| 303 HiLink pythonOperator Operator | |
| 304 | |
| 305 HiLink pythonDecorator Define | |
| 306 | |
| 307 HiLink pythonComment Comment | |
| 308 HiLink pythonCoding Special | |
| 309 HiLink pythonRun Special | |
| 310 HiLink pythonTodo Todo | |
| 311 | |
| 312 HiLink pythonError Error | |
| 313 HiLink pythonIndentError Error | |
| 314 HiLink pythonSpaceError Error | |
| 315 | |
| 316 HiLink pythonString String | |
| 317 HiLink pythonUniString String | |
| 318 HiLink pythonRawString String | |
| 319 HiLink pythonUniRawString String | |
| 320 | |
| 321 HiLink pythonEscape Special | |
| 322 HiLink pythonEscapeError Error | |
| 323 HiLink pythonUniEscape Special | |
| 324 HiLink pythonUniEscapeError Error | |
| 325 HiLink pythonUniRawEscape Special | |
| 326 HiLink pythonUniRawEscapeError Error | |
| 327 | |
| 328 HiLink pythonStrFormatting Special | |
| 329 HiLink pythonStrFormat Special | |
| 330 HiLink pythonStrTemplate Special | |
| 331 | |
| 332 HiLink pythonDocTest Special | |
| 333 HiLink pythonDocTest2 Special | |
| 334 | |
| 335 HiLink pythonNumber Number | |
| 336 HiLink pythonHexNumber Number | |
| 337 HiLink pythonOctNumber Number | |
| 338 HiLink pythonBinNumber Number | |
| 339 HiLink pythonFloat Float | |
| 340 HiLink pythonOctError Error | |
| 341 HiLink pythonHexError Error | |
| 342 HiLink pythonBinError Error | |
| 343 | |
| 344 HiLink pythonBuiltinObj Structure | |
| 345 HiLink pythonBuiltinFunc Function | |
| 346 | |
| 347 HiLink pythonExClass Structure | |
| 348 | |
| 349 delcommand HiLink | |
| 350 endif | |
| 351 | |
| 352 let b:current_syntax = "python" |
