python.vim 24KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. " Vim syntax file
  2. " Language: Python
  3. " Maintainer: Dmitry Vasiliev <dima at hlabs dot org>
  4. " URL: https://github.com/hdima/python-syntax
  5. " Last Change: 2013-08-11
  6. " Filenames: *.py
  7. " Version: 3.3.4
  8. "
  9. " Based on python.vim (from Vim 6.1 distribution)
  10. " by Neil Schemenauer <nas at python dot ca>
  11. "
  12. " Please use the following channels for reporting bugs, offering suggestions or
  13. " feedback:
  14. " - python.vim issue tracker: https://github.com/hdima/python-syntax/issues
  15. " - Email: Dmitry Vasiliev (dima at hlabs.org)
  16. " - Send a message or follow me for updates on Twitter: `@hdima
  17. " <https://twitter.com/hdima>`__
  18. "
  19. " Contributors
  20. " ============
  21. "
  22. " List of the contributors in alphabetical order:
  23. "
  24. " Andrea Riciputi
  25. " Anton Butanaev
  26. " Caleb Adamantine
  27. " Jeroen Ruigrok van der Werven
  28. " John Eikenberry
  29. " Marc Weber
  30. " Pedro Algarvio
  31. " Will Gray
  32. " Yuri Habrusiev
  33. "
  34. " Options
  35. " =======
  36. "
  37. " :let OPTION_NAME = 1 Enable option
  38. " :let OPTION_NAME = 0 Disable option
  39. "
  40. "
  41. " Option to select Python version
  42. " -------------------------------
  43. "
  44. " python_version_2 Enable highlighting for Python 2
  45. " (Python 3 highlighting is enabled
  46. " by default). Can also be set as
  47. " a buffer (b:python_version_2)
  48. " variable.
  49. "
  50. " You can also use the following local to buffer commands to switch
  51. " between two highlighting modes:
  52. "
  53. " :Python2Syntax Switch to Python 2 highlighting
  54. " mode
  55. " :Python3Syntax Switch to Python 3 highlighting
  56. " mode
  57. "
  58. " Option names used by the script
  59. " -------------------------------
  60. "
  61. " python_highlight_builtins Highlight builtin functions and
  62. " objects
  63. " python_highlight_builtin_objs Highlight builtin objects only
  64. " python_highlight_builtin_funcs Highlight builtin functions only
  65. " python_highlight_exceptions Highlight standard exceptions
  66. " python_highlight_string_formatting Highlight % string formatting
  67. " python_highlight_string_format Highlight str.format syntax
  68. " python_highlight_string_templates Highlight string.Template syntax
  69. " python_highlight_indent_errors Highlight indentation errors
  70. " python_highlight_space_errors Highlight trailing spaces
  71. " python_highlight_doctests Highlight doc-tests
  72. " python_print_as_function Highlight 'print' statement as
  73. " function for Python 2
  74. "
  75. " python_highlight_all Enable all the options above
  76. " NOTE: This option don't override
  77. " any previously set options
  78. "
  79. " python_slow_sync Can be set to 0 for slow machines
  80. "
  81. " For version 5.x: Clear all syntax items
  82. " For versions greater than 6.x: Quit when a syntax file was already loaded
  83. if version < 600
  84. syntax clear
  85. elseif exists("b:current_syntax")
  86. finish
  87. endif
  88. "
  89. " Commands
  90. "
  91. command! -buffer Python2Syntax let b:python_version_2 = 1 | let &syntax=&syntax
  92. command! -buffer Python3Syntax let b:python_version_2 = 0 | let &syntax=&syntax
  93. " Enable option if it's not defined
  94. function! s:EnableByDefault(name)
  95. if !exists(a:name)
  96. let {a:name} = 1
  97. endif
  98. endfunction
  99. " Check if option is enabled
  100. function! s:Enabled(name)
  101. return exists(a:name) && {a:name}
  102. endfunction
  103. " Is it Python 2 syntax?
  104. function! s:Python2Syntax()
  105. if exists("b:python_version_2")
  106. return b:python_version_2
  107. endif
  108. return s:Enabled("g:python_version_2")
  109. endfunction
  110. "
  111. " Default options
  112. "
  113. call s:EnableByDefault("g:python_slow_sync")
  114. if s:Enabled("g:python_highlight_all")
  115. call s:EnableByDefault("g:python_highlight_builtins")
  116. if s:Enabled("g:python_highlight_builtins")
  117. call s:EnableByDefault("g:python_highlight_builtin_objs")
  118. call s:EnableByDefault("g:python_highlight_builtin_funcs")
  119. endif
  120. call s:EnableByDefault("g:python_highlight_exceptions")
  121. call s:EnableByDefault("g:python_highlight_string_formatting")
  122. call s:EnableByDefault("g:python_highlight_string_format")
  123. call s:EnableByDefault("g:python_highlight_string_templates")
  124. call s:EnableByDefault("g:python_highlight_indent_errors")
  125. call s:EnableByDefault("g:python_highlight_space_errors")
  126. call s:EnableByDefault("g:python_highlight_doctests")
  127. call s:EnableByDefault("g:python_print_as_function")
  128. endif
  129. "
  130. " Keywords
  131. "
  132. syn keyword pythonStatement break continue del
  133. syn keyword pythonStatement exec return
  134. syn keyword pythonStatement pass raise
  135. syn keyword pythonStatement global assert
  136. syn keyword pythonStatement lambda yield
  137. syn keyword pythonStatement with
  138. syn keyword pythonStatement def class nextgroup=pythonFunction skipwhite
  139. syn keyword pythonRepeat for while
  140. syn keyword pythonConditional if elif else
  141. syn keyword pythonImport import from
  142. syn keyword pythonException try except finally
  143. syn keyword pythonOperator and in is not or
  144. if s:Python2Syntax()
  145. if !s:Enabled("g:python_print_as_function")
  146. syn keyword pythonStatement print
  147. endif
  148. syn keyword pythonImport as
  149. syn match pythonFunction "[a-zA-Z_][a-zA-Z0-9_]*" display contained
  150. else
  151. syn keyword pythonStatement as nonlocal None
  152. syn keyword pythonBoolean True False
  153. syn match pythonFunction "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained
  154. endif
  155. "
  156. " Decorators (new in Python 2.4)
  157. "
  158. syn match pythonDecorator "@" display nextgroup=pythonDottedName skipwhite
  159. syn match pythonDottedName "[a-zA-Z_][a-zA-Z0-9_]*\%(\.[a-zA-Z_][a-zA-Z0-9_]*\)*" display contained
  160. syn match pythonDot "\." display containedin=pythonDottedName
  161. "
  162. " Comments
  163. "
  164. syn match pythonComment "#.*$" display contains=pythonTodo,@Spell
  165. syn match pythonRun "\%^#!.*$"
  166. syn match pythonCoding "\%^.*\%(\n.*\)\?#.*coding[:=]\s*[0-9A-Za-z-_.]\+.*$"
  167. syn keyword pythonTodo TODO FIXME XXX contained
  168. "
  169. " Errors
  170. "
  171. syn match pythonError "\<\d\+\D\+\>" display
  172. syn match pythonError "[$?]" display
  173. syn match pythonError "[&|]\{2,}" display
  174. syn match pythonError "[=]\{3,}" display
  175. " Mixing spaces and tabs also may be used for pretty formatting multiline
  176. " statements
  177. if s:Enabled("g:python_highlight_indent_errors")
  178. syn match pythonIndentError "^\s*\%( \t\|\t \)\s*\S"me=e-1 display
  179. endif
  180. " Trailing space errors
  181. if s:Enabled("g:python_highlight_space_errors")
  182. syn match pythonSpaceError "\s\+$" display
  183. endif
  184. "
  185. " Strings
  186. "
  187. if s:Python2Syntax()
  188. " Python 2 strings
  189. syn region pythonString start=+[bB]\='+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell
  190. syn region pythonString start=+[bB]\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell
  191. syn region pythonString start=+[bB]\="""+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell
  192. syn region pythonString start=+[bB]\='''+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell
  193. else
  194. " Python 3 byte strings
  195. syn region pythonBytes start=+[bB]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesError,pythonBytesContent,@Spell
  196. syn region pythonBytes start=+[bB]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesError,pythonBytesContent,@Spell
  197. syn region pythonBytes start=+[bB]"""+ end=+"""+ keepend contains=pythonBytesError,pythonBytesContent,pythonDocTest2,pythonSpaceError,@Spell
  198. syn region pythonBytes start=+[bB]'''+ end=+'''+ keepend contains=pythonBytesError,pythonBytesContent,pythonDocTest,pythonSpaceError,@Spell
  199. syn match pythonBytesError ".\+" display contained
  200. syn match pythonBytesContent "[\u0000-\u00ff]\+" display contained contains=pythonBytesEscape,pythonBytesEscapeError
  201. endif
  202. syn match pythonBytesEscape +\\[abfnrtv'"\\]+ display contained
  203. syn match pythonBytesEscape "\\\o\o\=\o\=" display contained
  204. syn match pythonBytesEscapeError "\\\o\{,2}[89]" display contained
  205. syn match pythonBytesEscape "\\x\x\{2}" display contained
  206. syn match pythonBytesEscapeError "\\x\x\=\X" display contained
  207. syn match pythonBytesEscape "\\$"
  208. syn match pythonUniEscape "\\u\x\{4}" display contained
  209. syn match pythonUniEscapeError "\\u\x\{,3}\X" display contained
  210. syn match pythonUniEscape "\\U\x\{8}" display contained
  211. syn match pythonUniEscapeError "\\U\x\{,7}\X" display contained
  212. syn match pythonUniEscape "\\N{[A-Z ]\+}" display contained
  213. syn match pythonUniEscapeError "\\N{[^A-Z ]\+}" display contained
  214. if s:Python2Syntax()
  215. " Python 2 Unicode strings
  216. syn region pythonUniString start=+[uU]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell
  217. syn region pythonUniString start=+[uU]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell
  218. syn region pythonUniString start=+[uU]"""+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell
  219. syn region pythonUniString start=+[uU]'''+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell
  220. else
  221. " Python 3 strings
  222. syn region pythonString start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell
  223. syn region pythonString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell
  224. syn region pythonString start=+"""+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell
  225. syn region pythonString start=+'''+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell
  226. endif
  227. if s:Python2Syntax()
  228. " Python 2 Unicode raw strings
  229. syn region pythonUniRawString start=+[uU][rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell
  230. syn region pythonUniRawString start=+[uU][rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell
  231. syn region pythonUniRawString start=+[uU][rR]"""+ end=+"""+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest2,pythonSpaceError,@Spell
  232. syn region pythonUniRawString start=+[uU][rR]'''+ end=+'''+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest,pythonSpaceError,@Spell
  233. syn match pythonUniRawEscape "\([^\\]\(\\\\\)*\)\@<=\\u\x\{4}" display contained
  234. syn match pythonUniRawEscapeError "\([^\\]\(\\\\\)*\)\@<=\\u\x\{,3}\X" display contained
  235. endif
  236. " Python 2/3 raw strings
  237. if s:Python2Syntax()
  238. syn region pythonRawString start=+[bB]\=[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell
  239. syn region pythonRawString start=+[bB]\=[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell
  240. syn region pythonRawString start=+[bB]\=[rR]"""+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell
  241. syn region pythonRawString start=+[bB]\=[rR]'''+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell
  242. else
  243. syn region pythonRawString start=+[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell
  244. syn region pythonRawString start=+[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell
  245. syn region pythonRawString start=+[rR]"""+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell
  246. syn region pythonRawString start=+[rR]'''+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell
  247. syn region pythonRawBytes start=+[bB][rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell
  248. syn region pythonRawBytes start=+[bB][rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell
  249. syn region pythonRawBytes start=+[bB][rR]"""+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell
  250. syn region pythonRawBytes start=+[bB][rR]'''+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell
  251. endif
  252. syn match pythonRawEscape +\\['"]+ display transparent contained
  253. if s:Enabled("g:python_highlight_string_formatting")
  254. " % operator string formatting
  255. if s:Python2Syntax()
  256. syn match pythonStrFormatting "%\%(([^)]\+)\)\=[-#0 +]*\d*\%(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
  257. syn match pythonStrFormatting "%[-#0 +]*\%(\*\|\d\+\)\=\%(\.\%(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
  258. else
  259. syn match pythonStrFormatting "%\%(([^)]\+)\)\=[-#0 +]*\d*\%(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonRawString
  260. syn match pythonStrFormatting "%[-#0 +]*\%(\*\|\d\+\)\=\%(\.\%(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonRawString
  261. endif
  262. endif
  263. if s:Enabled("g:python_highlight_string_format")
  264. " str.format syntax
  265. if s:Python2Syntax()
  266. syn match pythonStrFormat "{{\|}}" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
  267. 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\+\)\=[bcdeEfFgGnosxX%]\=\)\=\)\=}" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
  268. else
  269. syn match pythonStrFormat "{{\|}}" contained containedin=pythonString,pythonRawString
  270. 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\+\)\=[bcdeEfFgGnosxX%]\=\)\=\)\=}" contained containedin=pythonString,pythonRawString
  271. endif
  272. endif
  273. if s:Enabled("g:python_highlight_string_templates")
  274. " string.Template format
  275. if s:Python2Syntax()
  276. syn match pythonStrTemplate "\$\$" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
  277. syn match pythonStrTemplate "\${[a-zA-Z_][a-zA-Z0-9_]*}" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
  278. syn match pythonStrTemplate "\$[a-zA-Z_][a-zA-Z0-9_]*" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString
  279. else
  280. syn match pythonStrTemplate "\$\$" contained containedin=pythonString,pythonRawString
  281. syn match pythonStrTemplate "\${[a-zA-Z_][a-zA-Z0-9_]*}" contained containedin=pythonString,pythonRawString
  282. syn match pythonStrTemplate "\$[a-zA-Z_][a-zA-Z0-9_]*" contained containedin=pythonString,pythonRawString
  283. endif
  284. endif
  285. if s:Enabled("g:python_highlight_doctests")
  286. " DocTests
  287. syn region pythonDocTest start="^\s*>>>" end=+'''+he=s-1 end="^\s*$" contained
  288. syn region pythonDocTest2 start="^\s*>>>" end=+"""+he=s-1 end="^\s*$" contained
  289. endif
  290. "
  291. " Numbers (ints, longs, floats, complex)
  292. "
  293. if s:Python2Syntax()
  294. syn match pythonHexError "\<0[xX]\x*[g-zG-Z]\+\x*[lL]\=\>" display
  295. syn match pythonOctError "\<0[oO]\=\o*\D\+\d*[lL]\=\>" display
  296. syn match pythonBinError "\<0[bB][01]*\D\+\d*[lL]\=\>" display
  297. syn match pythonHexNumber "\<0[xX]\x\+[lL]\=\>" display
  298. syn match pythonOctNumber "\<0[oO]\o\+[lL]\=\>" display
  299. syn match pythonBinNumber "\<0[bB][01]\+[lL]\=\>" display
  300. syn match pythonNumberError "\<\d\+\D[lL]\=\>" display
  301. syn match pythonNumber "\<\d[lL]\=\>" display
  302. syn match pythonNumber "\<[0-9]\d\+[lL]\=\>" display
  303. syn match pythonNumber "\<\d\+[lLjJ]\>" display
  304. syn match pythonOctError "\<0[oO]\=\o*[8-9]\d*[lL]\=\>" display
  305. syn match pythonBinError "\<0[bB][01]*[2-9]\d*[lL]\=\>" display
  306. else
  307. syn match pythonHexError "\<0[xX]\x*[g-zG-Z]\x*\>" display
  308. syn match pythonOctError "\<0[oO]\=\o*\D\+\d*\>" display
  309. syn match pythonBinError "\<0[bB][01]*\D\+\d*\>" display
  310. syn match pythonHexNumber "\<0[xX]\x\+\>" display
  311. syn match pythonOctNumber "\<0[oO]\o\+\>" display
  312. syn match pythonBinNumber "\<0[bB][01]\+\>" display
  313. syn match pythonNumberError "\<\d\+\D\>" display
  314. syn match pythonNumberError "\<0\d\+\>" display
  315. syn match pythonNumber "\<\d\>" display
  316. syn match pythonNumber "\<[1-9]\d\+\>" display
  317. syn match pythonNumber "\<\d\+[jJ]\>" display
  318. syn match pythonOctError "\<0[oO]\=\o*[8-9]\d*\>" display
  319. syn match pythonBinError "\<0[bB][01]*[2-9]\d*\>" display
  320. endif
  321. syn match pythonFloat "\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>" display
  322. syn match pythonFloat "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" display
  323. syn match pythonFloat "\<\d\+\.\d*\%([eE][+-]\=\d\+\)\=[jJ]\=" display
  324. "
  325. " Builtin objects and types
  326. "
  327. if s:Enabled("g:python_highlight_builtin_objs")
  328. if s:Python2Syntax()
  329. syn keyword pythonBuiltinObj None
  330. syn keyword pythonBoolean True False
  331. endif
  332. syn keyword pythonBuiltinObj Ellipsis NotImplemented
  333. syn keyword pythonBuiltinObj __debug__ __doc__ __file__ __name__ __package__
  334. endif
  335. "
  336. " Builtin functions
  337. "
  338. if s:Enabled("g:python_highlight_builtin_funcs")
  339. if s:Python2Syntax()
  340. syn keyword pythonBuiltinFunc apply basestring buffer callable coerce
  341. syn keyword pythonBuiltinFunc execfile file help intern long raw_input
  342. syn keyword pythonBuiltinFunc reduce reload unichr unicode xrange
  343. if s:Enabled("g:python_print_as_function")
  344. syn keyword pythonBuiltinFunc print
  345. endif
  346. else
  347. syn keyword pythonBuiltinFunc ascii exec memoryview print
  348. endif
  349. syn keyword pythonBuiltinFunc __import__ abs all any
  350. syn keyword pythonBuiltinFunc bin bool bytearray bytes
  351. syn keyword pythonBuiltinFunc chr classmethod cmp compile complex
  352. syn keyword pythonBuiltinFunc delattr dict dir divmod enumerate eval
  353. syn keyword pythonBuiltinFunc filter float format frozenset getattr
  354. syn keyword pythonBuiltinFunc globals hasattr hash hex id
  355. syn keyword pythonBuiltinFunc input int isinstance
  356. syn keyword pythonBuiltinFunc issubclass iter len list locals map max
  357. syn keyword pythonBuiltinFunc min next object oct open ord
  358. syn keyword pythonBuiltinFunc pow property range
  359. syn keyword pythonBuiltinFunc repr reversed round set setattr
  360. syn keyword pythonBuiltinFunc slice sorted staticmethod str sum super tuple
  361. syn keyword pythonBuiltinFunc type vars zip
  362. endif
  363. "
  364. " Builtin exceptions and warnings
  365. "
  366. if s:Enabled("g:python_highlight_exceptions")
  367. if s:Python2Syntax()
  368. syn keyword pythonExClass StandardError
  369. else
  370. syn keyword pythonExClass BlockingIOError ChildProcessError
  371. syn keyword pythonExClass ConnectionError BrokenPipeError
  372. syn keyword pythonExClass ConnectionAbortedError ConnectionRefusedError
  373. syn keyword pythonExClass ConnectionResetError FileExistsError
  374. syn keyword pythonExClass FileNotFoundError InterruptedError
  375. syn keyword pythonExClass IsADirectoryError NotADirectoryError
  376. syn keyword pythonExClass PermissionError ProcessLookupError TimeoutError
  377. syn keyword pythonExClass ResourceWarning
  378. endif
  379. syn keyword pythonExClass BaseException
  380. syn keyword pythonExClass Exception ArithmeticError
  381. syn keyword pythonExClass LookupError EnvironmentError
  382. syn keyword pythonExClass AssertionError AttributeError BufferError EOFError
  383. syn keyword pythonExClass FloatingPointError GeneratorExit IOError
  384. syn keyword pythonExClass ImportError IndexError KeyError
  385. syn keyword pythonExClass KeyboardInterrupt MemoryError NameError
  386. syn keyword pythonExClass NotImplementedError OSError OverflowError
  387. syn keyword pythonExClass ReferenceError RuntimeError StopIteration
  388. syn keyword pythonExClass SyntaxError IndentationError TabError
  389. syn keyword pythonExClass SystemError SystemExit TypeError
  390. syn keyword pythonExClass UnboundLocalError UnicodeError
  391. syn keyword pythonExClass UnicodeEncodeError UnicodeDecodeError
  392. syn keyword pythonExClass UnicodeTranslateError ValueError VMSError
  393. syn keyword pythonExClass WindowsError ZeroDivisionError
  394. syn keyword pythonExClass Warning UserWarning BytesWarning DeprecationWarning
  395. syn keyword pythonExClass PendingDepricationWarning SyntaxWarning
  396. syn keyword pythonExClass RuntimeWarning FutureWarning
  397. syn keyword pythonExClass ImportWarning UnicodeWarning
  398. endif
  399. if s:Enabled("g:python_slow_sync")
  400. syn sync minlines=2000
  401. else
  402. " This is fast but code inside triple quoted strings screws it up. It
  403. " is impossible to fix because the only way to know if you are inside a
  404. " triple quoted string is to start from the beginning of the file.
  405. syn sync match pythonSync grouphere NONE "):$"
  406. syn sync maxlines=200
  407. endif
  408. if version >= 508 || !exists("did_python_syn_inits")
  409. if version <= 508
  410. let did_python_syn_inits = 1
  411. command -nargs=+ HiLink hi link <args>
  412. else
  413. command -nargs=+ HiLink hi def link <args>
  414. endif
  415. HiLink pythonStatement Statement
  416. HiLink pythonImport Include
  417. HiLink pythonFunction Function
  418. HiLink pythonConditional Conditional
  419. HiLink pythonRepeat Repeat
  420. HiLink pythonException Exception
  421. HiLink pythonOperator Operator
  422. HiLink pythonDecorator Define
  423. HiLink pythonDottedName Function
  424. HiLink pythonDot Normal
  425. HiLink pythonComment Comment
  426. HiLink pythonCoding Special
  427. HiLink pythonRun Special
  428. HiLink pythonTodo Todo
  429. HiLink pythonError Error
  430. HiLink pythonIndentError Error
  431. HiLink pythonSpaceError Error
  432. HiLink pythonString String
  433. HiLink pythonRawString String
  434. HiLink pythonUniEscape Special
  435. HiLink pythonUniEscapeError Error
  436. if s:Python2Syntax()
  437. HiLink pythonUniString String
  438. HiLink pythonUniRawString String
  439. HiLink pythonUniRawEscape Special
  440. HiLink pythonUniRawEscapeError Error
  441. else
  442. HiLink pythonBytes String
  443. HiLink pythonRawBytes String
  444. HiLink pythonBytesContent String
  445. HiLink pythonBytesError Error
  446. HiLink pythonBytesEscape Special
  447. HiLink pythonBytesEscapeError Error
  448. endif
  449. HiLink pythonStrFormatting Special
  450. HiLink pythonStrFormat Special
  451. HiLink pythonStrTemplate Special
  452. HiLink pythonDocTest Special
  453. HiLink pythonDocTest2 Special
  454. HiLink pythonNumber Number
  455. HiLink pythonHexNumber Number
  456. HiLink pythonOctNumber Number
  457. HiLink pythonBinNumber Number
  458. HiLink pythonFloat Float
  459. HiLink pythonNumberError Error
  460. HiLink pythonOctError Error
  461. HiLink pythonHexError Error
  462. HiLink pythonBinError Error
  463. HiLink pythonBoolean Boolean
  464. HiLink pythonBuiltinObj Structure
  465. HiLink pythonBuiltinFunc Function
  466. HiLink pythonExClass Structure
  467. delcommand HiLink
  468. endif
  469. let b:current_syntax = "python"