neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

eruby.vim (3080B)


      1 " Vim syntax file
      2 " Language:		eRuby
      3 " Maintainer:		Tim Pope <vimNOSPAM@tpope.org>
      4 " URL:			https://github.com/vim-ruby/vim-ruby
      5 " Last Change:		2022 Mar 18
      6 
      7 if exists("b:current_syntax")
      8  finish
      9 endif
     10 
     11 if !exists("main_syntax")
     12  let main_syntax = 'eruby'
     13 endif
     14 
     15 if !exists("g:eruby_default_subtype")
     16  let g:eruby_default_subtype = "html"
     17 endif
     18 
     19 if &filetype =~ '^eruby\.'
     20  let b:eruby_subtype = matchstr(&filetype,'^eruby\.\zs\w\+')
     21 elseif !exists("b:eruby_subtype") && main_syntax == 'eruby'
     22  let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
     23  let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+')
     24  if b:eruby_subtype == ''
     25    let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\|\.example\)\+$','',''),'\.\zs\w\+\%(\ze+\w\+\)\=$')
     26  endif
     27  if b:eruby_subtype == 'rhtml'
     28    let b:eruby_subtype = 'html'
     29  elseif b:eruby_subtype == 'rb'
     30    let b:eruby_subtype = 'ruby'
     31  elseif b:eruby_subtype == 'yml'
     32    let b:eruby_subtype = 'yaml'
     33  elseif b:eruby_subtype == 'js'
     34    let b:eruby_subtype = 'javascript'
     35  elseif b:eruby_subtype == 'txt'
     36    " Conventional; not a real file type
     37    let b:eruby_subtype = 'text'
     38  elseif b:eruby_subtype == ''
     39    let b:eruby_subtype = g:eruby_default_subtype
     40  endif
     41 endif
     42 
     43 if !exists("b:eruby_nest_level")
     44  if &syntax =~# '\<eruby\.eruby\>'
     45    let b:eruby_nest_level = strlen(substitute(substitute(&filetype,'\C\<eruby\>','@','g'),'[^@]','','g'))
     46  else
     47    let b:eruby_nest_level = strlen(substitute(substitute(substitute(expand("%:t"),'@','','g'),'\c\.\%(erb\|rhtml\)\>','@','g'),'[^@]','','g'))
     48  endif
     49 endif
     50 if !b:eruby_nest_level
     51  let b:eruby_nest_level = 1
     52 endif
     53 
     54 if exists("b:eruby_subtype") && b:eruby_subtype != '' && b:eruby_subtype !=? 'eruby'
     55  exe "runtime! syntax/".b:eruby_subtype.".vim"
     56  unlet! b:current_syntax
     57 endif
     58 syn include @rubyTop syntax/ruby.vim
     59 
     60 syn cluster erubyRegions contains=erubyOneLiner,erubyBlock,erubyExpression,erubyComment
     61 
     62 exe 'syn region  erubyOneLiner   matchgroup=erubyDelimiter start="^%\{1,'.b:eruby_nest_level.'\}%\@!"    end="$"     contains=@rubyTop	     containedin=ALLBUT,@erubyRegions keepend oneline'
     63 exe 'syn region  erubyBlock      matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}%\@!-\=" end="[=-]\=%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=@rubyTop  containedin=ALLBUT,@erubyRegions keepend'
     64 exe 'syn region  erubyExpression matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}=\{1,4}" end="[=-]\=%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=@rubyTop  containedin=ALLBUT,@erubyRegions keepend'
     65 exe 'syn region  erubyComment    matchgroup=erubyDelimiter start="<%\{1,'.b:eruby_nest_level.'\}-\=#"    end="[=-]\=%\@<!%\{1,'.b:eruby_nest_level.'\}>" contains=rubyTodo,@Spell containedin=ALLBUT,@erubyRegions keepend'
     66 
     67 " Define the default highlighting.
     68 
     69 hi def link erubyDelimiter		PreProc
     70 hi def link erubyComment		Comment
     71 
     72 let b:current_syntax = 'eruby'
     73 
     74 if main_syntax == 'eruby'
     75  unlet main_syntax
     76 endif
     77 
     78 " vim: nowrap sw=2 sts=2 ts=8: