diff options
Diffstat (limited to 'runtime/indent/vim.vim')
-rw-r--r-- | runtime/indent/vim.vim | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/runtime/indent/vim.vim b/runtime/indent/vim.vim index 0a6dbc17ac..40117a0070 100644 --- a/runtime/indent/vim.vim +++ b/runtime/indent/vim.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: Vim script " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2005 Jul 06 +" Last Change: 2011 Mar 22 " Only load this indent file when no other was loaded. if exists("b:did_indent") @@ -44,10 +44,18 @@ function GetVimIndent() else let ind = ind + &sw * 3 endif - elseif getline(lnum) =~ '\(^\||\)\s*\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\%[lly]\|fu\%[nction]\|el\%[seif]\)\>' - let ind = ind + &sw elseif getline(lnum) =~ '^\s*aug\%[roup]' && getline(lnum) !~ '^\s*aug\%[roup]\s*!\=\s\+END' let ind = ind + &sw + else + let line = getline(lnum) + let i = match(line, '\(^\||\)\s*\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\%[lly]\|fu\%[nction]\|el\%[seif]\)\>') + if i >= 0 + let ind += &sw + if strpart(line, i, 1) == '|' && has('syntax_items') + \ && synIDattr(synID(lnum, i, 1), "name") =~ '\(Comment\|String\)$' + let ind -= &sw + endif + endif endif " If the previous line contains an "end" after a pipe, but not in an ":au" |