From 081a9a90846c41c93f4a2a374d94dbd05921f1b5 Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Sat, 7 Jul 2018 13:22:52 +1200 Subject: Further extension of Perl Vim line cont rules --- vim/indent/perl.vim | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'vim/indent') diff --git a/vim/indent/perl.vim b/vim/indent/perl.vim index 9a8f30e1..c9cfe829 100644 --- a/vim/indent/perl.vim +++ b/vim/indent/perl.vim @@ -7,8 +7,8 @@ endif let b:did_indent = 1 " Indent settings -setlocal indentexpr=GetPerlIndent() -setlocal indentkeys=o,O,0},0),0] +setlocal indentexpr=GetPerlIndent(v:lnum) +setlocal indentkeys=o,O,0=,0=},0=),0=],&,, " Build patterns for heredoc indenting; note that we detect indented heredocs " with tildes like <<~EOF, but we don't treat them any differently; note also @@ -94,16 +94,23 @@ function! GetPerlIndent() elseif l:pl =~# '[{([]\s*$' 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+$' + " Never continue after a semicolon or a double-underscore + elseif l:pl =~# '\;\s*$' + \ || l:pl =~# '__DATA__' + \ || l:pl =~# '__END__' return l:pb - " Line-continuation: indent half a 'shiftwidth' - else + " Line continuation hints + elseif l:pl =~# '[^])},]\s*$' + \ || l:cl =~# '^\s*\(and\|or\)\>' + \ || l:cl =~# '^\s*\(&&\|||\)' + \ || l:cl =~# '^\s*=' return l:pb + l:sw / 2 + " Default to indent of previous line + else + return l:pb + endif endfunction -- cgit v1.2.3