aboutsummaryrefslogtreecommitdiff
path: root/vim/syntax/eco.vim
diff options
context:
space:
mode:
Diffstat (limited to 'vim/syntax/eco.vim')
-rwxr-xr-xvim/syntax/eco.vim62
1 files changed, 62 insertions, 0 deletions
diff --git a/vim/syntax/eco.vim b/vim/syntax/eco.vim
new file mode 100755
index 0000000..485b356
--- /dev/null
+++ b/vim/syntax/eco.vim
@@ -0,0 +1,62 @@
+" Vim syntax file
+" Language: eco
+" Maintainer: Jay Adkisson
+" Mostly stolen from eruby.vim
+
+if !exists("g:eco_default_subtype")
+ let g:eco_default_subtype = "html"
+endif
+
+if !exists("b:eco_subtype")
+ let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
+ let b:eco_subtype = matchstr(s:lines,'eco_subtype=\zs\w\+')
+ if b:eco_subtype == ''
+ let b:eco_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.eco\)\+$','',''),'\.\zs\w\+$')
+ endif
+ if b:eco_subtype == 'rhtml'
+ let b:eco_subtype = 'html'
+ elseif b:eco_subtype == 'jst'
+ let b:eco_subtype = 'html'
+ elseif b:eco_subtype == 'rb'
+ let b:eco_subtype = 'ruby'
+ elseif b:eco_subtype == 'yml'
+ let b:eco_subtype = 'yaml'
+ elseif b:eco_subtype == 'js' || b:eco_subtype == 'json'
+ let b:eco_subtype = 'javascript'
+ elseif b:eco_subtype == 'txt'
+ " Conventional; not a real file type
+ let b:eco_subtype = 'text'
+ elseif b:eco_subtype == ''
+ if exists('b:current_syntax') && b:current_syntax != ''
+ let b:eco_subtype = b:current_syntax
+ else
+ let b:eco_subtype = g:eco_default_subtype
+ endif
+ endif
+endif
+
+if exists("b:eco_subtype") && b:eco_subtype != '' && b:eco_subtype != 'eco'
+ exec "runtime! syntax/".b:eco_subtype.".vim"
+ syn include @coffeeTop syntax/coffee.vim
+endif
+
+syn cluster ecoRegions contains=ecoBlock,ecoExpression,ecoComment
+
+syn region ecoBlock matchgroup=ecoDelimiter start=/<%/ end=/%>/ contains=@coffeeTop containedin=ALLBUT,@ecoRegions keepend
+syn region ecoExpression matchgroup=ecoDelimiter start=/<%[=\-]/ end=/%>/ contains=@coffeeTop containedin=ALLBUT,@ecoRegions keepend
+syn region ecoComment matchgroup=ecoComment start=/<%#/ end=/%>/ contains=@coffeeTodo,@Spell containedin=ALLBUT,@ecoRegions keepend
+
+" eco features not in coffeescript proper
+syn keyword ecoEnd end containedin=@ecoRegions
+syn match ecoIndentColon /\s+\w+:/ containedin=@ecoRegions
+
+" Define the default highlighting.
+
+hi def link ecoDelimiter Delimiter
+hi def link ecoComment Comment
+hi def link ecoEnd coffeeConditional
+hi def link ecoIndentColon None
+
+let b:current_syntax = 'eco'
+
+" vim: nowrap sw=2 sts=2 ts=8: