| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 | " Handlebars syntax
" Language:    Handlebars
" Maintainer:  Bruno Michel <brmichel@free.fr>
" Last Change: Mar 8th, 2013
" Version:	   0.3
" URL:         https://github.com/nono/vim-handlebars
if version < 600
  syntax clear
elseif exists("b:current_syntax")
  finish
endif
if !exists("main_syntax")
  let main_syntax = 'html'
endif
ru! syntax/html.vim
unlet b:current_syntax
syn region  hbsInside          start=/{{/ end=/}}/ keepend
syn keyword hbsTodo            TODO FIXME XXX contained
syn match   hbsError           /}}}\?/
syn match   hbsInsideError     /{{[{#<>=!\/]\?/                         contained containedin=@hbsInside
syn match   hbsHandlebars      "{{\|}}"                                 contained containedin=hbsInside
syn match   hbsUnescape        "{{{\|}}}"                               contained containedin=hbsInside extend
syn match   hbsOperators       "=\|\.\|/"                               contained containedin=hbsInside
syn region  hbsSection         start="{{[#/]"lc=2 end=/}}/me=e-2        contained containedin=hbsInside
syn region  hbsPartial         start=/{{[<>]/lc=2 end=/}}/me=e-2        contained containedin=hbsInside
syn region  hbsMarkerSet       start=/{{=/lc=2    end=/=}}/me=e-2       contained containedin=hbsInside
syn region  hbsComment         start=/{{!/rs=s+2    end=/}}/re=e-2      contained containedin=hbsInside contains=hbsTodo,Todo
syn region  hbsBlockComment    start=/{{!--/rs=s+2  end=/--}}/re=e-2    contained containedin=hbsInside contains=hbsTodo,Todo extend
syn region  hbsQString         start=/'/ skip=/\\'/ end=/'/             contained containedin=hbsInside
syn region  hbsDQString        start=/"/ skip=/\\"/ end=/"/             contained containedin=hbsInside
syn match   hbsConditionals    "\([/#]\(if\|unless\)\|else\)"           contained containedin=hbsInside
syn match   hbsHelpers         "[/#]\(with\|each\)"                     contained containedin=hbsInside
syn cluster allHbsItems        add=hbsTodo,hbsError,hbsInsideError,hbsInside,hbsHandlebars,
\                                  hbsUnescape,hbsOperators,hbsSection,hbsPartial,hbsMarkerSet,
\                                  hbsComment,hbsBlockComment,hbsQString,hbsDQString,hbsConditionals,
\                                  hbsHelpers,hbsPartial,hbsMarkerSet,hbsComment,hbsBlockComment,
\                                  hbsQString,hbsDQString,hbsConditionals,hbsHelpers
syn cluster htmlAdditional     add=htmlTag,htmlEndTag,htmlTagName,htmlSpecialChar
syn region  hbsScriptTemplate  start=+<script [^>]*type *=[^>]*text/x-handlebars-template[^>]*>+
\                              end=+</script>+me=s-1 keepend contains=@htmlHbsContainer,@allHbsItems,@htmlAdditional
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_lisp_syntax_inits")
  if version < 508
    let did_lisp_syntax_inits = 1
    command -nargs=+ HiLink hi link <args>
  else
    command -nargs=+ HiLink hi def link <args>
  endif
  HiLink hbsTodo          Todo
  HiLink hbsError         Error
  HiLink hbsInsideError   Error
  HiLink hbsHandlebars    Identifier
  HiLink hbsUnescape      Special
  HiLink hbsOperators     Operator
  HiLink hbsConditionals  Conditional
  HiLink hbsHelpers       Repeat
  HiLink hbsSection       Number
  HiLink hbsPartial       Include
  HiLink hbsMarkerSet     Number
  HiLink hbsBlockComment  Comment
  HiLink hbsComment       Comment
  HiLink hbsQString       String
  HiLink hbsDQString      String
  delcommand HiLink
endif
let b:current_syntax = 'handlebars'
 |