CLI config/dotfiles
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
6.0 KiB

  1. " Vim syntax file
  2. " Language: Jade
  3. " Maintainer: Joshua Borton
  4. " Credits: Tim Pope
  5. " Filenames: *.jade
  6. if exists("b:current_syntax")
  7. finish
  8. endif
  9. if !exists("main_syntax")
  10. let main_syntax = 'jade'
  11. endif
  12. silent! syntax include @htmlCoffeescript syntax/coffee.vim
  13. unlet! b:current_syntax
  14. silent! syntax include @htmlStylus syntax/stylus.vim
  15. unlet! b:current_syntax
  16. silent! syntax include @htmlCss syntax/css.vim
  17. unlet! b:current_syntax
  18. silent! syntax include @htmlMarkdown syntax/markdown.vim
  19. unlet! b:current_syntax
  20. syn case match
  21. syn region javascriptParenthesisBlock start="(" end=")" contains=@htmlJavascript contained keepend
  22. syn cluster htmlJavascript add=javascriptParenthesisBlock
  23. syn region jadeJavascript matchgroup=jadeJavascriptOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend
  24. syn region jadeJavascript matchgroup=jadeJavascriptChar start="-" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend
  25. syn cluster jadeTop contains=jadeBegin,jadeComment,jadeHtmlComment,jadeJavascript
  26. syn match jadeBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=jadeTag,jadeClassChar,jadeIdChar,jadePlainChar,jadeJavascript,jadeScriptConditional,jadeScriptStatement,jadePipedText
  27. syn match jadeTag "+\?\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@jadeComponent
  28. syn cluster jadeComponent contains=jadeAttributes,jadeIdChar,jadeBlockExpansionChar,jadeClassChar,jadePlainChar,jadeJavascript,jadeTagBlockChar,jadeTagInlineText
  29. syn match jadeComment '\s*\/\/.*$'
  30. syn region jadeCommentBlock start="\z(\s*\)\/\/.*$" end="^\%(\z1\s\|\s*$\)\@!" keepend
  31. syn region jadeHtmlConditionalComment start="<!--\%(.*\)>" end="<!\%(.*\)-->"
  32. syn region jadeAttributes matchgroup=jadeAttributesDelimiter start="(" end=")" contained contains=@htmlJavascript,jadeHtmlArg,htmlArg,htmlEvent,htmlCssDefinition nextgroup=@jadeComponent
  33. syn match jadeClassChar "\." contained nextgroup=jadeClass
  34. syn match jadeBlockExpansionChar ":\s\+" contained nextgroup=jadeTag,jadeClassChar,jadeIdChar
  35. syn match jadeIdChar "#[[{]\@!" contained nextgroup=jadeId
  36. syn match jadeClass "\%(\w\|-\)\+" contained nextgroup=@jadeComponent
  37. syn match jadeId "\%(\w\|-\)\+" contained nextgroup=@jadeComponent
  38. syn region jadeDocType start="^\s*\(!!!\|doctype\)" end="$"
  39. " Unless I'm mistaken, syntax/html.vim requires
  40. " that the = sign be present for these matches.
  41. " This adds the matches back for jade.
  42. syn keyword jadeHtmlArg contained href title
  43. syn match jadePlainChar "\\" contained
  44. syn region jadeInterpolation matchgroup=jadeInterpolationDelimiter start="[#!]{" end="}" contains=@htmlJavascript
  45. syn match jadeInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
  46. syn match jadeTagInlineText "\s.*$" contained contains=jadeInterpolation,jadeTextInlineJade
  47. syn region jadePipedText matchgroup=jadePipeChar start="|" end="$" contained contains=jadeInterpolation,jadeTextInlineJade nextgroup=jadePipedText skipnl
  48. syn match jadeTagBlockChar "\.$" contained nextgroup=jadeTagBlockText,jadeTagBlockEnd skipnl
  49. syn region jadeTagBlockText start="\%(\s*\)\S" end="\ze\n" contained contains=jadeInterpolation,jadeTextInlineJade nextgroup=jadeTagBlockText,jadeTagBlockEnd skipnl
  50. syn region jadeTagBlockEnd start="\s*\S" end="$" contained contains=jadeInterpolation,jadeTextInlineJade nextgroup=jadeBegin skipnl
  51. syn region jadeTextInlineJade matchgroup=jadeInlineDelimiter start="#\[" end="]" contains=jadeTag keepend
  52. syn region jadeJavascriptFilter matchgroup=jadeFilter start="^\z(\s*\):javascript\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript
  53. syn region jadeMarkdownFilter matchgroup=jadeFilter start=/^\z(\s*\):\%(markdown\|marked\)\s*$/ end=/^\%(\z1\s\|\s*$\)\@!/ contains=@htmlMarkdown
  54. syn region jadeStylusFilter matchgroup=jadeFilter start="^\z(\s*\):stylus\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlStylus
  55. syn region jadePlainFilter matchgroup=jadeFilter start="^\z(\s*\):\%(sass\|less\|cdata\)\s*$" end="^\%(\z1\s\|\s*$\)\@!"
  56. syn match jadeScriptConditional "^\s*\<\%(if\|else\|else if\|elif\|unless\|while\|until\|case\|when\|default\)\>[?!]\@!"
  57. syn match jadeScriptStatement "^\s*\<\%(each\|for\|block\|prepend\|append\|mixin\|extends\|include\)\>[?!]\@!"
  58. syn region jadeScriptLoopRegion start="^\s*\(for \)" end="$" contains=jadeScriptLoopKeywords
  59. syn keyword jadeScriptLoopKeywords for in contained
  60. syn region jadeJavascript start="^\z(\s*\)script\%(:\w\+\)\=" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript,jadeJavascriptTag,jadeCoffeescriptFilter keepend
  61. syn region jadeCoffeescriptFilter matchgroup=jadeFilter start="^\z(\s*\):coffee-\?script\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlCoffeescript contained
  62. syn region jadeJavascriptTag contained start="^\z(\s*\)script\%(:\w\+\)\=" end="$" contains=jadeBegin,jadeTag
  63. syn region jadeCssBlock start="^\z(\s*\)style" nextgroup=@jadeComponent,jadeError end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlCss keepend
  64. syn match jadeError "\$" contained
  65. hi def link jadePlainChar Special
  66. hi def link jadeScriptConditional PreProc
  67. hi def link jadeScriptLoopKeywords PreProc
  68. hi def link jadeScriptStatement PreProc
  69. hi def link jadeHtmlArg htmlArg
  70. hi def link jadeAttributeString String
  71. hi def link jadeAttributesDelimiter Identifier
  72. hi def link jadeIdChar Special
  73. hi def link jadeClassChar Special
  74. hi def link jadeBlockExpansionChar Special
  75. hi def link jadePipeChar Special
  76. hi def link jadeTagBlockChar Special
  77. hi def link jadeId Identifier
  78. hi def link jadeClass Type
  79. hi def link jadeInterpolationDelimiter Delimiter
  80. hi def link jadeInlineDelimiter Delimiter
  81. hi def link jadeFilter PreProc
  82. hi def link jadeDocType PreProc
  83. hi def link jadeComment Comment
  84. hi def link jadeCommentBlock Comment
  85. hi def link jadeHtmlConditionalComment jadeComment
  86. let b:current_syntax = "jade"
  87. if main_syntax == "jade"
  88. unlet main_syntax
  89. endif