summaryrefslogtreecommitdiffstats
path: root/runtime/indent/sh.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2013-12-11 18:53:29 +0100
committerBram Moolenaar <Bram@vim.org>2013-12-11 18:53:29 +0100
commitdfb18411cf3d0cf7fd92b39476768e5f7ca47148 (patch)
tree6702a04d67dd13878d9d9a6bebebfdc964758866 /runtime/indent/sh.vim
parent175d0704dfb1247be7f414bfbcf9f5cfeced2794 (diff)
Updated runtime files.
Diffstat (limited to 'runtime/indent/sh.vim')
-rw-r--r--runtime/indent/sh.vim15
1 files changed, 13 insertions, 2 deletions
diff --git a/runtime/indent/sh.vim b/runtime/indent/sh.vim
index 49146c7e37..68f764ee69 100644
--- a/runtime/indent/sh.vim
+++ b/runtime/indent/sh.vim
@@ -1,7 +1,8 @@
" Vim indent file
" Language: Shell Script
-" Maintainer: Nikolai Weibull <now@bitwi.se>
-" Latest Revision: 2010-01-06
+" Maintainer: Peter Aronoff <telemachus@arpinum.org>
+" Original Author: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2013-11-28
if exists("b:did_indent")
finish
@@ -77,6 +78,8 @@ function! GetShIndent()
let line = getline(v:lnum)
if line =~ '^\s*\%(then\|do\|else\|elif\|fi\|done\)\>' || line =~ '^\s*}'
let ind -= s:indent_value('default')
+ elseif line =~ '^\s*esac\>' && s:is_case_empty(getline(v:lnum - 1))
+ let ind -= s:indent_value('default')
elseif line =~ '^\s*esac\>'
let ind -= (s:is_case_label(pine, lnum) && s:is_case_ended(pine) ?
\ 0 : s:indent_value('case-statements')) +
@@ -154,5 +157,13 @@ function! s:is_case_ended(line)
return s:is_case_break(a:line) || a:line =~ ';[;&]\s*\%(#.*\)\=$'
endfunction
+function! s:is_case_empty(line)
+ if a:line =~ '^\s*$' || a:line =~ '^\s*#'
+ return s:is_case_empty(getline(v:lnum - 1))
+ else
+ return a:line =~ '^\s*case\>'
+ endif
+endfunction
+
let &cpo = s:cpo_save
unlet s:cpo_save