3 " Maintainer: Tim Pope <vimNOSPAM@tpope.info>
4 " Info: $Id: eruby.vim,v 1.16 2008/06/29 04:18:43 tpope Exp $
5 " URL: http://vim-ruby.rubyforge.org
6 " Anon CVS: See above site
7 " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
9 if exists("b:did_indent")
13 runtime! indent/ruby.vim
17 if exists("b:eruby_subtype")
18 exe "runtime! indent/".b:eruby_subtype.".vim"
20 runtime! indent/html.vim
24 if &l:indentexpr == ''
26 let &l:indentexpr = 'cindent(v:lnum)'
28 let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'
31 let b:eruby_subtype_indentexpr = &l:indentexpr
35 setlocal indentexpr=GetErubyIndent()
36 setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=else,=elsif,=rescue,=ensure,=when
38 " Only define the function once.
39 if exists("*GetErubyIndent")
43 function! GetErubyIndent(...)
45 let v:lnum = line('.')
46 elseif a:0 && a:1 =~ '^\d'
51 let inruby = searchpair('<%','','%>','W')
52 call cursor(v:lnum,vcol)
53 if inruby && getline(v:lnum) !~ '^<%\|^\s*-\=%>'
54 let ind = GetRubyIndent()
56 exe "let ind = ".b:eruby_subtype_indentexpr
58 let lnum = prevnonblank(v:lnum-1)
59 let line = getline(lnum)
60 let cline = getline(v:lnum)
61 if cline =~# '<%-\=\s*\%(}\|end\|else\|\%(ensure\|rescue\|elsif\|when\).\{-\}\)\s*\%(-\=%>\|$\)'
64 if line =~# '\%({\|\<do\)\%(\s*|[^|]*|\)\=\s*-\=%>'
66 elseif line =~# '<%-\=\s*\%(module\|class\|def\|if\|for\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue\)\>.*%>'
69 if line =~# '^\s*<%[=#-]\=\s*$' && cline !~# '^\s*end\>'
72 if cline =~# '^\s*-\=%>\s*$'
78 " vim:set sw=2 sts=2 ts=8 noet: