summaryrefslogtreecommitdiffstats
path: root/runtime/indent/vim.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/indent/vim.vim')
-rw-r--r--runtime/indent/vim.vim14
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"