Permalink
Browse files

Add mustache.vim [Juvenn Woo]

  • Loading branch information...
1 parent ac534f9 commit da44c7e390c6ff56dff64cb75a414c57e35bc6dd @defunkt defunkt committed Oct 16, 2009
Showing with 80 additions and 0 deletions.
  1. +4 −0 HISTORY.md
  2. +7 −0 README.md
  3. +69 −0 contrib/mustache.vim
View
@@ -1,3 +1,7 @@
+## 0.3.1 (2009-??-??)
+
+* Added mustache.vim to contrib/ (Thanks Juvenn Woo!)
+
## 0.3.0 (2009-10-14)
* Set Delimiter tags are now supported. See the README
View
@@ -364,6 +364,13 @@ An example Sinatra application is also provided:
<http://github.com/defunkt/mustache-sinatra-example>
+Vim
+---
+
+Thanks to [Juvenn Woo](http://github.com/juvenn) for mustache.vim. It
+is included under the contrib/ directory.
+
+
Installation
------------
View
@@ -0,0 +1,69 @@
+" Vim syntax file
+" Language: Mustache
+" Maintainer: Juvenn Woo <machese@gmail.com>
+" Screenshot: http://imgur.com/6F408
+" 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](http://github.com/defunkt/mustache)
+" [ctemplate](http://code.google.com/p/google-ctemplate/)
+" [ctemplate doc](http://google-ctemplate.googlecode.com/svn/trunk/doc/howto.html)
+" [et](http://www.ivan.fomichev.name/2008/05/erlang-template-engine-prototype.html)
+" TODO: Feedback is welcomed.
+
+
+" Read the HTML syntax to start with
+if version < 600
+ so <sfile>:p:h/html.vim
+else
+ runtime! syntax/html.vim
+ unlet b:current_syntax
+endif
+
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+" Standard HiLink will not work with included syntax files
+if version < 508
+ command! -nargs=+ HtmlHiLink hi link <args>
+else
+ command! -nargs=+ HtmlHiLink hi def link <args>
+endif
+
+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

0 comments on commit da44c7e

Please sign in to comment.