From e7b4dedb844a3d6a8e3bb43b79927424e15aacfa Mon Sep 17 00:00:00 2001 From: Israel Chauca Fuentes Date: Thu, 8 Jan 2015 17:14:27 -0500 Subject: [PATCH] Add option delimitMate_insert_eol_marker. Closes #195. --- autoload/delimitMate.vim | 21 ++++++++++++++------- doc/delimitMate.txt | 15 +++++++++++++++ plugin/delimitMate.vim | 1 + test/eol_marker.vim | 30 ++++++++++++++++++++++++++++++ 4 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 test/eol_marker.vim diff --git a/autoload/delimitMate.vim b/autoload/delimitMate.vim index b0dfc39..5047bd8 100644 --- a/autoload/delimitMate.vim +++ b/autoload/delimitMate.vim @@ -345,10 +345,11 @@ function! delimitMate#ParenDelim(right) " {{{ return left endif endif - let tail = len(line) == (col + 1) ? s:get('eol_marker') : '' - "if (col) < 0 - " call setline('.',a:right.line) - "endif + if len(line) == (col + 1) && s:get('insert_eol_marker') == 1 + let tail = s:get('eol_marker') + else + let tail = '' + endif return left . a:right . tail . repeat("\", len(split(tail, '\zs')) + 1) endfunction " }}} @@ -466,11 +467,17 @@ function! delimitMate#ExpandReturn() "{{{ let expand_inside_quotes = s:get('expand_inside_quotes') \ && s:is_empty_quotes() \ && !escaped - if !pumvisible() - \ && (s:is_empty_matchpair() + let is_empty_matchpair = s:is_empty_matchpair() + if !pumvisible( ) + \ && ( is_empty_matchpair \ || expand_right_matchpair \ || expand_inside_quotes) - let val = "\a\" + let val = "\a" + if is_empty_matchpair && s:get('insert_eol_marker') == 2 + let repeat = search('\s\%#\s', 'bcnW', '.') ? 2 : 1 + let val .= repeat("\", repeat) . s:get('eol_marker') . repeat("\", repeat + 1) + endif + let val .= "\" if &smartindent && !&cindent && !&indentexpr \ && s:get_char(0) == '}' " indentation is controlled by 'smartindent', and the first character on diff --git a/doc/delimitMate.txt b/doc/delimitMate.txt index cc05de5..78d3902 100644 --- a/doc/delimitMate.txt +++ b/doc/delimitMate.txt @@ -309,6 +309,21 @@ only if you don't want any of the features it provides on those file types. e.g.: > let delimitMate_excluded_ft = "mail,txt" < +------------------------------------------------------------------------------ + *'delimitMate_insert_eol_marker'* +Values: Integer ~ +Default: 1 ~ + +Whether to insert the eol marker (EM) or not. The EM is inserted following +rules: + +0 -> never +1 -> when inserting any matchpair +2 -> when expanding car return in matchpair + +e.g.: > + au FileType c,perl let b:delimitMate_insert_eol_marker = 2 +< ------------------------------------------------------------------------------ *'delimitMate_eol_marker'* Values: String. ~ diff --git a/plugin/delimitMate.vim b/plugin/delimitMate.vim index bf693f9..732238e 100644 --- a/plugin/delimitMate.vim +++ b/plugin/delimitMate.vim @@ -140,6 +140,7 @@ function! s:init() "{{{ " balance_matchpairs call s:option_init("balance_matchpairs", 0) " eol marker + call s:option_init("insert_eol_marker", 1) call s:option_init("eol_marker", "") " Everything is fine. return 1 diff --git a/test/eol_marker.vim b/test/eol_marker.vim new file mode 100644 index 0000000..7853b51 --- /dev/null +++ b/test/eol_marker.vim @@ -0,0 +1,30 @@ +let g:delimitMate_expand_cr = 1 +let g:delimitMate_eol_marker = ';' +call vimtest#StartTap() +call vimtap#Plan(6) +" NOTE: Do not forget to update the plan ^ +let g:delimitMate_insert_eol_marker = 0 +DelimitMateReload +normal i( +call vimtap#Is(getline(1), '()', 'value = 1, case 1') +%d _ +exec "normal i(\x" +call vimtap#Like(join(getline(1,line('$')), "\"), '^(\n\s*x\n)$', 'Value = 2, case 2') +let g:delimitMate_insert_eol_marker = 1 +DelimitMateReload +%d _ +normal i( +call vimtap#Is(getline(1), '();', 'value = 1, case 1') +%d _ +exec "normal i(\x" +call vimtap#Like(join(getline(1,line('$')), "\"), '^(\n\s*x\n);$', 'Value = 2, case 2') +%d _ +let g:delimitMate_insert_eol_marker = 2 +DelimitMateReload +normal i( +call vimtap#Is(getline(1), '()', 'Value = 2, case 1') +%d _ +exec "normal i(\x" +call vimtap#Like(join(getline(1,line('$')), "\"), '^(\n\s*x\n);$', 'Value = 2, case 2') +call vimtest#Quit() +