Skip to content
This repository was archived by the owner on Mar 3, 2020. It is now read-only.

Commit 07f7894

Browse files
committed
it's a vim mustache
1 parent 8d3b305 commit 07f7894

2 files changed

Lines changed: 71 additions & 0 deletions

File tree

‎vim/vim.symlink/filetype.vim‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
runtime! ftdetect/*.vim
2+
au BufNewFile,BufRead *.mustache setf mustache
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
" Vim syntax file
2+
" Language: Mustache
3+
" Maintainer: Juvenn Woo <machese@gmail.com>
4+
" Screenshot: http://imgur.com/6F408
5+
" Version: 1
6+
" Last Change: 2009 Oct 15
7+
" Remark:
8+
" It lexically hilights embedded mustaches (exclusively) in html file.
9+
" 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.
10+
" References:
11+
" [Mustache](http://github.com/defunkt/mustache)
12+
" [ctemplate](http://code.google.com/p/google-ctemplate/)
13+
" [ctemplate doc](http://google-ctemplate.googlecode.com/svn/trunk/doc/howto.html)
14+
" [et](http://www.ivan.fomichev.name/2008/05/erlang-template-engine-prototype.html)
15+
" TODO: Feedback is welcomed.
16+
17+
18+
" Read the HTML syntax to start with
19+
if version < 600
20+
so <sfile>:p:h/html.vim
21+
else
22+
runtime! syntax/html.vim
23+
unlet b:current_syntax
24+
endif
25+
26+
if version < 600
27+
syntax clear
28+
elseif exists("b:current_syntax")
29+
finish
30+
endif
31+
32+
" Standard HiLink will not work with included syntax files
33+
if version < 508
34+
command! -nargs=+ HtmlHiLink hi link <args>
35+
else
36+
command! -nargs=+ HtmlHiLink hi def link <args>
37+
endif
38+
39+
syntax match mustacheError '}}}\?'
40+
syntax match mustacheInsideError '{{[{#^<>=!\/]\?' containedin=@mustacheInside
41+
syntax region mustacheVariable matchgroup=mustacheMarker start=/{{/ end=/}}/ containedin=@htmlMustacheContainer
42+
syntax region mustacheVariableUnescape matchgroup=mustacheMarker start=/{{{/ end=/}}}/ containedin=@htmlMustacheContainer
43+
syntax region mustacheSection matchgroup=mustacheMarker start='{{[#^/]' end=/}}/ containedin=@htmlMustacheContainer
44+
syntax region mustachePartial matchgroup=mustacheMarker start=/{{[<>]/ end=/}}/
45+
syntax region mustacheMarkerSet matchgroup=mustacheMarker start=/{{=/ end=/=}}/
46+
syntax region mustacheComment start=/{{!/ end=/}}/ contains=Todo containedin=htmlHead
47+
48+
49+
" Clustering
50+
syntax cluster mustacheInside add=mustacheVariable,mustacheVariableUnescape,mustacheSection,mustachePartial,mustacheMarkerSet
51+
syntax cluster htmlMustacheContainer add=htmlHead,htmlTitle,htmlString,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6
52+
53+
54+
" Hilighting
55+
" mustacheInside hilighted as Number, which is rarely used in html
56+
" you might like change it to Function or Identifier
57+
HtmlHiLink mustacheVariable Number
58+
HtmlHiLink mustacheVariableUnescape Number
59+
HtmlHiLink mustachePartial Number
60+
HtmlHiLink mustacheSection Number
61+
HtmlHiLink mustacheMarkerSet Number
62+
63+
HtmlHiLink mustacheComment Comment
64+
HtmlHiLink mustacheMarker Identifier
65+
HtmlHiLink mustacheError Error
66+
HtmlHiLink mustacheInsideError Error
67+
68+
let b:current_syntax = "mustache"
69+
delcommand HtmlHiLink

0 commit comments

Comments
 (0)