python3.0.vim 14KB

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