From a9f51531d9816248ce635273c73543c9dfac1edb Mon Sep 17 00:00:00 2001 From: Israel Chauca Fuentes Date: Sat, 31 Mar 2012 16:56:31 -0400 Subject: [PATCH] Consider indentation with BS on empty expanded CR. --- autoload/delimitMate.vim | 21 ++++++++++----------- test/expand_cr.txt | 6 ++++++ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/autoload/delimitMate.vim b/autoload/delimitMate.vim index 382f77c..b46660c 100644 --- a/autoload/delimitMate.vim +++ b/autoload/delimitMate.vim @@ -75,18 +75,17 @@ function! delimitMate#GetCharFromCursor(...) "{{{ return matchstr(line, '.\ze'.repeat('.', pos).'$') endfunction "delimitMate#GetCharFromCursor }}} -function! delimitMate#IsCRExpansion() " {{{ +function! delimitMate#IsCRExpansion(...) " {{{ let nchar = getline(line('.')-1)[-1:] - let schar = getline(line('.')+1)[:0] - " TODO: Consider whitespace? - let isEmpty = getline('.') == "" - if index(b:_l_delimitMate_left_delims, nchar) > -1 && - \ index(b:_l_delimitMate_left_delims, nchar) == index(b:_l_delimitMate_right_delims, schar) && - \ isEmpty + let schar = matchstr(getline(line('.')+1), '^\s*\zs\S') + let isEmpty = a:0 ? getline('.') =~ '^\s*$' : empty(getline('.')) + if index(b:_l_delimitMate_left_delims, nchar) > -1 + \ && index(b:_l_delimitMate_left_delims, nchar) == index(b:_l_delimitMate_right_delims, schar) + \ && isEmpty return 1 - elseif index(b:_l_delimitMate_quotes_list, nchar) > -1 && - \ index(b:_l_delimitMate_quotes_list, nchar) == index(b:_l_delimitMate_quotes_list, schar) && - \ isEmpty + elseif index(b:_l_delimitMate_quotes_list, nchar) > -1 + \ && index(b:_l_delimitMate_quotes_list, nchar) == index(b:_l_delimitMate_quotes_list, schar) + \ && isEmpty return 1 else return 0 @@ -453,7 +452,7 @@ function! delimitMate#BS() " {{{ return "\" . delimitMate#Del() endif if delimitMate#IsCRExpansion() - return "\\" + return "\" . repeat("\", len(matchstr(getline(line('.') + 1), '^\s*\S'))) endif return "\" endfunction " }}} delimitMate#BS() diff --git a/test/expand_cr.txt b/test/expand_cr.txt index fdf041d..060029b 100644 --- a/test/expand_cr.txt +++ b/test/expand_cr.txt @@ -18,3 +18,9 @@ exec "normal i(\test)x" test )x -------------------------------------------------------------------------------- +# Consider indentation with BS inside an empty CR expansion. +%d +exec "normal i(\\x" +================================================================================ +(x) +--------------------------------------------------------------------------------