diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2017-09-27 20:43:42 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2017-09-27 20:43:42 +0200 | 
| commit | 5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1 (patch) | |
| tree | 965ae5128797f3d42d78d02692e62d24a4596e19 /indent/eruby.vim | |
| parent | 8148255ef1c416f414c3a78405eff08fe149d16e (diff) | |
| download | vim-polyglot-5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1.tar.gz vim-polyglot-5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1.zip | |
Add syntax files from upstream vim repository
Diffstat (limited to 'indent/eruby.vim')
| -rw-r--r-- | indent/eruby.vim | 109 | 
1 files changed, 109 insertions, 0 deletions
| diff --git a/indent/eruby.vim b/indent/eruby.vim index 6fd76600..3bae537e 100644 --- a/indent/eruby.vim +++ b/indent/eruby.vim @@ -1,3 +1,112 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim indent file +" Language:		eRuby +" Maintainer:		Tim Pope <vimNOSPAM@tpope.org> +" URL:			https://github.com/vim-ruby/vim-ruby +" Release Coordinator:	Doug Kearns <dougkearns@gmail.com> + +if exists("b:did_indent") +  finish +endif + +runtime! indent/ruby.vim +unlet! b:did_indent +setlocal indentexpr= + +if exists("b:eruby_subtype") +  exe "runtime! indent/".b:eruby_subtype.".vim" +else +  runtime! indent/html.vim +endif +unlet! b:did_indent + +" Force HTML indent to not keep state. +let b:html_indent_usestate = 0 + +if &l:indentexpr == '' +  if &l:cindent +    let &l:indentexpr = 'cindent(v:lnum)' +  else +    let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))' +  endif +endif +let b:eruby_subtype_indentexpr = &l:indentexpr + +let b:did_indent = 1 + +setlocal indentexpr=GetErubyIndent() +setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=else,=elsif,=rescue,=ensure,=when + +" Only define the function once. +if exists("*GetErubyIndent") +  finish +endif + +" this file uses line continuations +let s:cpo_sav = &cpo +set cpo&vim + +function! GetErubyIndent(...) +  " The value of a single shift-width +  let sw = shiftwidth() + +  if a:0 && a:1 == '.' +    let v:lnum = line('.') +  elseif a:0 && a:1 =~ '^\d' +    let v:lnum = a:1 +  endif +  let vcol = col('.') +  call cursor(v:lnum,1) +  let inruby = searchpair('<%','','%>','W') +  call cursor(v:lnum,vcol) +  if inruby && getline(v:lnum) !~ '^<%\|^\s*[-=]\=%>' +    let ind = GetRubyIndent(v:lnum) +  else +    exe "let ind = ".b:eruby_subtype_indentexpr + +    " Workaround for Andy Wokula's HTML indent. This should be removed after +    " some time, since the newest version is fixed in a different way. +    if b:eruby_subtype_indentexpr =~# '^HtmlIndent(' +	  \ && exists('b:indent') +	  \ && type(b:indent) == type({}) +	  \ && has_key(b:indent, 'lnum') +      " Force HTML indent to not keep state +      let b:indent.lnum = -1 +    endif +  endif +  let lnum = prevnonblank(v:lnum-1) +  let line = getline(lnum) +  let cline = getline(v:lnum) +  if cline =~# '^\s*<%[-=]\=\s*\%(}\|end\|else\|\%(ensure\|rescue\|elsif\|when\).\{-\}\)\s*\%([-=]\=%>\|$\)' +    let ind = ind - sw +  endif +  if line =~# '\S\s*<%[-=]\=\s*\%(}\|end\).\{-\}\s*\%([-=]\=%>\|$\)' +    let ind = ind - sw +  endif +  if line =~# '\%({\|\<do\)\%(\s*|[^|]*|\)\=\s*[-=]\=%>' +    let ind = ind + sw +  elseif line =~# '<%[-=]\=\s*\%(module\|class\|def\|if\|for\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue\)\>.*%>' +    let ind = ind + sw +  endif +  if line =~# '^\s*<%[=#-]\=\s*$' && cline !~# '^\s*end\>' +    let ind = ind + sw +  endif +  if line !~# '^\s*<%' && line =~# '%>\s*$' && line !~# '^\s*end\>' +    let ind = ind - sw +  endif +  if cline =~# '^\s*[-=]\=%>\s*$' +    let ind = ind - sw +  endif +  return ind +endfunction + +let &cpo = s:cpo_sav +unlet! s:cpo_sav + +" vim:set sw=2 sts=2 ts=8 noet: + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1  " Vim indent file | 
