Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

it's a vim mustache

  • Loading branch information...
commit 07f7894bb7bbcd099c9fd4b1b33dfea9d1ef8b04 1 parent 8d3b305
@holman holman authored
2  vim/vim.symlink/filetype.vim
@@ -0,0 +1,2 @@
+runtime! ftdetect/*.vim
+au BufNewFile,BufRead *.mustache setf mustache
69 vim/vim.symlink/syntax/mustache.vim
@@ -0,0 +1,69 @@
+" Vim syntax file
+" Language: Mustache
+" Maintainer: Juvenn Woo <>
+" Screenshot:
+" Version: 1
+" Last Change: 2009 Oct 15
+" Remark:
+" It lexically hilights embedded mustaches (exclusively) in html file.
+" While it was written for Ruby-based Mustache template system, it should work for Google's C-based *ctemplate* as well as Erlang-based *et*. All of them are, AFAIK, based on the idea of ctemplate.
+" References:
+" [Mustache](
+" [ctemplate](
+" [ctemplate doc](
+" [et](
+" TODO: Feedback is welcomed.
+" Read the HTML syntax to start with
+if version < 600
+ so <sfile>:p:h/html.vim
+ runtime! syntax/html.vim
+ unlet b:current_syntax
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+" Standard HiLink will not work with included syntax files
+if version < 508
+ command! -nargs=+ HtmlHiLink hi link <args>
+ command! -nargs=+ HtmlHiLink hi def link <args>
+syntax match mustacheError '}}}\?'
+syntax match mustacheInsideError '{{[{#^<>=!\/]\?' containedin=@mustacheInside
+syntax region mustacheVariable matchgroup=mustacheMarker start=/{{/ end=/}}/ containedin=@htmlMustacheContainer
+syntax region mustacheVariableUnescape matchgroup=mustacheMarker start=/{{{/ end=/}}}/ containedin=@htmlMustacheContainer
+syntax region mustacheSection matchgroup=mustacheMarker start='{{[#^/]' end=/}}/ containedin=@htmlMustacheContainer
+syntax region mustachePartial matchgroup=mustacheMarker start=/{{[<>]/ end=/}}/
+syntax region mustacheMarkerSet matchgroup=mustacheMarker start=/{{=/ end=/=}}/
+syntax region mustacheComment start=/{{!/ end=/}}/ contains=Todo containedin=htmlHead
+" Clustering
+syntax cluster mustacheInside add=mustacheVariable,mustacheVariableUnescape,mustacheSection,mustachePartial,mustacheMarkerSet
+syntax cluster htmlMustacheContainer add=htmlHead,htmlTitle,htmlString,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6
+" Hilighting
+" mustacheInside hilighted as Number, which is rarely used in html
+" you might like change it to Function or Identifier
+HtmlHiLink mustacheVariable Number
+HtmlHiLink mustacheVariableUnescape Number
+HtmlHiLink mustachePartial Number
+HtmlHiLink mustacheSection Number
+HtmlHiLink mustacheMarkerSet Number
+HtmlHiLink mustacheComment Comment
+HtmlHiLink mustacheMarker Identifier
+HtmlHiLink mustacheError Error
+HtmlHiLink mustacheInsideError Error
+let b:current_syntax = "mustache"
+delcommand HtmlHiLink
Please sign in to comment.
Something went wrong with that request. Please try again.