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" |