1
0

eco.vim 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. " Vim syntax file
  2. " Language: eco
  3. " Maintainer: Jay Adkisson
  4. " Mostly stolen from eruby.vim
  5. if !exists("g:eco_default_subtype")
  6. let g:eco_default_subtype = "html"
  7. endif
  8. if !exists("b:eco_subtype")
  9. let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
  10. let b:eco_subtype = matchstr(s:lines,'eco_subtype=\zs\w\+')
  11. if b:eco_subtype == ''
  12. let b:eco_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.eco\)\+$','',''),'\.\zs\w\+$')
  13. endif
  14. if b:eco_subtype == 'rhtml'
  15. let b:eco_subtype = 'html'
  16. elseif b:eco_subtype == 'jst'
  17. let b:eco_subtype = 'html'
  18. elseif b:eco_subtype == 'rb'
  19. let b:eco_subtype = 'ruby'
  20. elseif b:eco_subtype == 'yml'
  21. let b:eco_subtype = 'yaml'
  22. elseif b:eco_subtype == 'js' || b:eco_subtype == 'json'
  23. let b:eco_subtype = 'javascript'
  24. elseif b:eco_subtype == 'txt'
  25. " Conventional; not a real file type
  26. let b:eco_subtype = 'text'
  27. elseif b:eco_subtype == ''
  28. if exists('b:current_syntax') && b:current_syntax != ''
  29. let b:eco_subtype = b:current_syntax
  30. else
  31. let b:eco_subtype = g:eco_default_subtype
  32. endif
  33. endif
  34. endif
  35. if exists("b:eco_subtype") && b:eco_subtype != '' && b:eco_subtype != 'eco'
  36. exec "runtime! syntax/".b:eco_subtype.".vim"
  37. syn include @coffeeTop syntax/coffee.vim
  38. endif
  39. syn cluster ecoRegions contains=ecoBlock,ecoExpression,ecoComment
  40. syn region ecoBlock matchgroup=ecoDelimiter start=/<%/ end=/%>/ contains=@coffeeTop containedin=ALLBUT,@ecoRegions keepend
  41. syn region ecoExpression matchgroup=ecoDelimiter start=/<%[=\-]/ end=/%>/ contains=@coffeeTop containedin=ALLBUT,@ecoRegions keepend
  42. syn region ecoComment matchgroup=ecoComment start=/<%#/ end=/%>/ contains=@coffeeTodo,@Spell containedin=ALLBUT,@ecoRegions keepend
  43. " eco features not in coffeescript proper
  44. syn keyword ecoEnd end containedin=@ecoRegions
  45. syn match ecoIndentColon /\s+\w+:/ containedin=@ecoRegions
  46. " Define the default highlighting.
  47. hi def link ecoDelimiter Delimiter
  48. hi def link ecoComment Comment
  49. hi def link ecoEnd coffeeConditional
  50. hi def link ecoIndentColon None
  51. let b:current_syntax = 'eco'
  52. " vim: nowrap sw=2 sts=2 ts=8: