summaryrefslogtreecommitdiffstats
path: root/syntax
diff options
context:
space:
mode:
Diffstat (limited to 'syntax')
-rw-r--r--syntax/handlebars.vim83
1 files changed, 83 insertions, 0 deletions
diff --git a/syntax/handlebars.vim b/syntax/handlebars.vim
new file mode 100644
index 00000000..fd7618b5
--- /dev/null
+++ b/syntax/handlebars.vim
@@ -0,0 +1,83 @@
+" 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 keyword hbsTodo TODO FIXME XXX contained
+
+syn match hbsError /}}}\?/
+syn match hbsInsideError /{{[{#<>=!\/]\?/ containedin=@hbsInside
+
+syn cluster htmlHbsContainer add=htmlHead,htmlTitle,htmlString,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6
+syn region hbsInside start=/{{/ end=/}}/ keepend transparent containedin=@htmlHbsContainer
+
+syn match hbsHandlebars "{{\|}}" containedin=hbsInside
+syn match hbsUnescape "{{{\|}}}" containedin=hbsInside
+syn match hbsOperators "=\|\.\|/" containedin=hbsInside
+
+syn region hbsSection start="{{[#/]"lc=2 end=/}}/me=e-2 containedin=hbsInside
+syn region hbsPartial start=/{{[<>]/lc=2 end=/}}/me=e-2 containedin=hbsInside
+syn region hbsMarkerSet start=/{{=/lc=2 end=/=}}/me=e-2 containedin=hbsInside
+
+syn region hbsComment start=/{{!/rs=s+2 end=/}}/re=e-2 containedin=htmlHead contains=hbsTodo,Todo
+syn region hbsBlockComment start=/{{!--/rs=s+2 end=/--}}/re=e-2 containedin=htmlHead contains=hbsTodo,Todo
+syn region hbsQString start=/'/ skip=/\\'/ end=/'/ containedin=hbsInside
+syn region hbsDQString start=/"/ skip=/\\"/ end=/"/ containedin=hbsInside
+
+syn match hbsConditionals "\([/#]\(if\|unless\)\|else\)" containedin=hbsInside
+syn match hbsHelpers "[/#]\(with\|each\)" containedin=hbsInside
+
+
+" 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'