/runtime/syntax/haml.vim

https://bitbucket.org/ultra_iter/vim-qt · Vim Script · 109 lines · 94 code · 10 blank · 5 comment · 2 complexity · e21d974a3cd29b39b955c2c34c5b81f4 MD5 · raw file

  1. " Vim syntax file
  2. " Language: Haml
  3. " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
  4. " Filenames: *.haml
  5. " Last Change: 2010 Aug 09
  6. if exists("b:current_syntax")
  7. finish
  8. endif
  9. if !exists("main_syntax")
  10. let main_syntax = 'haml'
  11. endif
  12. let b:ruby_no_expensive = 1
  13. runtime! syntax/html.vim
  14. unlet! b:current_syntax
  15. silent! syn include @hamlSassTop syntax/sass.vim
  16. unlet! b:current_syntax
  17. syn include @hamlRubyTop syntax/ruby.vim
  18. syn case match
  19. syn region rubyCurlyBlock start="{" end="}" contains=@hamlRubyTop contained
  20. syn cluster hamlRubyTop add=rubyCurlyBlock
  21. syn cluster hamlComponent contains=hamlAttributes,hamlAttributesHash,hamlClassChar,hamlIdChar,hamlObject,hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable
  22. syn cluster hamlEmbeddedRuby contains=hamlAttributesHash,hamlObject,hamlRuby,hamlRubyFilter
  23. syn cluster hamlTop contains=hamlBegin,hamlPlainFilter,hamlRubyFilter,hamlSassFilter,hamlComment,hamlHtmlComment
  24. syn match hamlBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=hamlTag,hamlClassChar,hamlIdChar,hamlRuby,hamlPlainChar,hamlInterpolatable
  25. syn match hamlTag "%\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@hamlComponent
  26. syn region hamlAttributes matchgroup=hamlAttributesDelimiter start="(" end=")" contained contains=htmlArg,hamlAttributeString,hamlAttributeVariable,htmlEvent,htmlCssDefinition nextgroup=@hamlComponent
  27. syn region hamlAttributesHash matchgroup=hamlAttributesDelimiter start="{" end="}" contained contains=@hamlRubyTop nextgroup=@hamlComponent
  28. syn region hamlObject matchgroup=hamlObjectDelimiter start="\[" end="\]" contained contains=@hamlRubyTop nextgroup=@hamlComponent
  29. syn match hamlDespacer "[<>]" contained nextgroup=hamlDespacer,hamlSelfCloser,hamlRuby,hamlPlainChar,hamlInterpolatable
  30. syn match hamlSelfCloser "/" contained
  31. syn match hamlClassChar "\." contained nextgroup=hamlClass
  32. syn match hamlIdChar "#{\@!" contained nextgroup=hamlId
  33. syn match hamlClass "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
  34. syn match hamlId "\%(\w\|-\)\+" contained nextgroup=@hamlComponent
  35. syn region hamlDocType start="^\s*!!!" end="$"
  36. syn region hamlRuby matchgroup=hamlRubyOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@hamlRubyTop keepend
  37. syn region hamlRuby matchgroup=hamlRubyChar start="-" skip=",\s*$" end="$" contained contains=@hamlRubyTop keepend
  38. syn match hamlPlainChar "\\" contained
  39. syn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="!\===\|!=\@!" end="$" keepend contained contains=hamlInterpolation,hamlInterpolationEscape,@hamlHtmlTop
  40. syn region hamlInterpolatable matchgroup=hamlInterpolatableChar start="&==\|&=\@!" end="$" keepend contained contains=hamlInterpolation,hamlInterpolationEscape
  41. syn region hamlInterpolation matchgroup=hamlInterpolationDelimiter start="#{" end="}" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD
  42. syn match hamlInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
  43. syn region hamlErbInterpolation matchgroup=hamlInterpolationDelimiter start="<%[=-]\=" end="-\=%>" contained contains=@hamlRubyTop
  44. syn region hamlAttributeString start=+\%(=\s*\)\@<='+ skip=+\%(\\\\\)*\\'+ end=+'+ contains=hamlInterpolation,hamlInterpolationEscape
  45. syn region hamlAttributeString start=+\%(=\s*\)\@<="+ skip=+\%(\\\\\)*\\"+ end=+"+ contains=hamlInterpolation,hamlInterpolationEscape
  46. syn match hamlAttributeVariable "\%(=\s*\)\@<=\%(@@\=\|\$\)\=\w\+" contained
  47. syn match hamlHelper "\<action_view?\|\<block_is_haml?\|\<is_haml?\|\.\@<!\<flatten" contained containedin=@hamlEmbeddedRuby,@hamlRubyTop
  48. syn keyword hamlHelper capture_haml escape_once find_and_preserve haml_concat haml_indent haml_tag html_attrs html_esape init_haml_helpers list_of non_haml precede preserve succeed surround tab_down tab_up page_class contained containedin=@hamlEmbeddedRuby,@hamlRubyTop
  49. syn cluster hamlHtmlTop contains=@htmlTop,htmlBold,htmlItalic,htmlUnderline
  50. syn region hamlPlainFilter matchgroup=hamlFilter start="^\z(\s*\):\%(plain\|preserve\|redcloth\|textile\|markdown\|maruku\)\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlHtmlTop,hamlInterpolation
  51. syn region hamlEscapedFilter matchgroup=hamlFilter start="^\z(\s*\):\%(escaped\|cdata\)\s*$" end="^\%(\z1 \| *$\)\@!" contains=hamlInterpolation
  52. syn region hamlErbFilter matchgroup=hamlFilter start="^\z(\s*\):erb\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlHtmlTop,hamlErbInterpolation
  53. syn region hamlRubyFilter matchgroup=hamlFilter start="^\z(\s*\):ruby\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlRubyTop
  54. syn region hamlJavascriptFilter matchgroup=hamlFilter start="^\z(\s*\):javascript\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlJavaScript,hamlInterpolation keepend
  55. syn region hamlCSSFilter matchgroup=hamlFilter start="^\z(\s*\):css\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlCss,hamlInterpolation keepend
  56. syn region hamlSassFilter matchgroup=hamlFilter start="^\z(\s*\):sass\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlSassTop
  57. syn region hamlJavascriptBlock start="^\z(\s*\)%script" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlJavaScript keepend
  58. syn region hamlCssBlock start="^\z(\s*\)%style" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlCss keepend
  59. syn match hamlError "\$" contained
  60. syn region hamlComment start="^\z(\s*\)-#" end="^\%(\z1 \| *$\)\@!" contains=rubyTodo
  61. syn region hamlHtmlComment start="^\z(\s*\)/" end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,rubyTodo
  62. syn match hamlIEConditional "\%(^\s*/\)\@<=\[if\>[^]]*]" contained containedin=hamlHtmlComment
  63. hi def link hamlSelfCloser Special
  64. hi def link hamlDespacer Special
  65. hi def link hamlClassChar Special
  66. hi def link hamlIdChar Special
  67. hi def link hamlTag Special
  68. hi def link hamlClass Type
  69. hi def link hamlId Identifier
  70. hi def link hamlPlainChar Special
  71. hi def link hamlInterpolatableChar hamlRubyChar
  72. hi def link hamlRubyOutputChar hamlRubyChar
  73. hi def link hamlRubyChar Special
  74. hi def link hamlInterpolationDelimiter Delimiter
  75. hi def link hamlInterpolationEscape Special
  76. hi def link hamlAttributeString String
  77. hi def link hamlAttributeVariable Identifier
  78. hi def link hamlDocType PreProc
  79. hi def link hamlFilter PreProc
  80. hi def link hamlAttributesDelimiter Delimiter
  81. hi def link hamlObjectDelimiter Delimiter
  82. hi def link hamlHelper Function
  83. hi def link hamlHtmlComment hamlComment
  84. hi def link hamlComment Comment
  85. hi def link hamlIEConditional SpecialComment
  86. hi def link hamlError Error
  87. let b:current_syntax = "haml"
  88. if main_syntax == "haml"
  89. unlet main_syntax
  90. endif
  91. " vim:set sw=2: