diff options
-rw-r--r-- | vim/indent/perl.vim | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/vim/indent/perl.vim b/vim/indent/perl.vim index 71e2c440..01c1259b 100644 --- a/vim/indent/perl.vim +++ b/vim/indent/perl.vim @@ -79,27 +79,31 @@ function! GetPerlIndent() \ ? shiftwidth() \ : &shiftwidth + " Base indent with any fractional indent removed + let l:pb = l:pi - l:pi % l:sw + " Just follow comment indent if l:pl =~# '^\s*#' return l:pi - " Entering closing brace + " Move out with closing brace elseif l:cl =~# '^\s*[])}]' - return l:pi >= l:sw - \ ? l:pi - l:sw - l:pi % l:sw - \ : 0 + return l:pb >= l:sw ? l:pb - l:sw : 0 - " After opening brace + " Move in after opening brace elseif l:pl =~# '[{([]\s*$' - return l:pi + l:sw + return l:pb + l:sw + + " Preserve base indent after a semicolon or a hash element assignment + elseif l:pl =~# '[;,]\s*$' + \ || l:pl =~# '^\s=>.*,\s*$' + \ || l:pl =~# '^\s*sub\>.*{.*}\s+$' + return l:pb - " After a semicolon, comma, or closing brace - elseif l:pl =~# '[;,}]\s*$' - return l:pi - l:pi % l:sw + " Line-continuation: indent half a 'shiftwidth' + else + return l:pb + l:sw / 2 - " Continued line; add half 'shiftwidth' - elseif l:sw >= 2 - return l:pi - l:pi % l:sw + l:sw / 2 endif endfunction |