diff runtime/indent/sh.vim @ 5555:7818ca6de3d0

Updated runtime files.
author Bram Moolenaar <bram@vim.org>
date Wed, 11 Dec 2013 18:53:29 +0100
parents 7bc41231fbc7
children 1e8ebf870720
line wrap: on
line diff
--- 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