diff --git a/autoload/delimitMateTests.vim b/autoload/delimitMateTests.vim index 78b1ce2..84d8d5a 100644 --- a/autoload/delimitMateTests.vim +++ b/autoload/delimitMateTests.vim @@ -27,8 +27,12 @@ function! delimitMateTests#Main() let b:delimitMate_tab2exit = 1 " Set current test options: for str in a:list - let pair = split(str, ':') - exec "let b:delimitMate_" . pair[0] . " = " . pair[1] + "echom '1:'.str + let op = strpart(str, 0, stridx(str,':')) + "echom op + let val = strpart(str, stridx(str, ':' ) + 1) + "echom val + exec "let b:delimitMate_" . op . " = " . val endfor DelimitMateReload endfunction " }}} @@ -243,6 +247,12 @@ function! delimitMateTests#Main() " Manual close at start of line call Type("Manual close at start of line", "m)\\)", [')|m)'], ["autoclose:0"]) + " Use | in quotes + call Type("Use in quotes", "\bars", ['|bars|'], ["quotes:'|'"]) + + " Use | in matchpairs + call Type("Use in matchpairs", "\bars", ['|bars|$$'], ["matchpairs:'|:$'"]) + "}}} " Show results: {{{ diff --git a/plugin/delimitMate.vim b/plugin/delimitMate.vim index 42f23d1..2196979 100644 --- a/plugin/delimitMate.vim +++ b/plugin/delimitMate.vim @@ -181,6 +181,9 @@ function! s:Unmap() " {{{ for map in imaps if maparg(map, "i") =~? 'delimitMate' + if map == '|' + let map = '' + endif exec 'silent! iunmap ' . map endif endfor @@ -191,6 +194,9 @@ function! s:Unmap() " {{{ let vleader = b:_l_delimitMate_visual_leader endif for map in vmaps + if map == '|' + let map = '' + endif if maparg(vleader . map, "v") =~? "delimitMate" exec 'silent! vunmap ' . vleader . map endif @@ -288,7 +294,10 @@ endfunction function! s:NoAutoClose() "{{{ " inoremap ) =delimitMate#SkipDelim('\)') for delim in b:_l_delimitMate_right_delims + b:_l_delimitMate_quotes_list - exec 'silent! inoremap ' . delim . ' =delimitMate#SkipDelim("' . escape(delim,'"\|') . '")' + if delim == '|' + let delim = '' + endif + exec 'silent! inoremap ' . delim . ' =delimitMate#SkipDelim("' . escape(delim,'"') . '")' endfor endfunction "}}} @@ -297,9 +306,9 @@ function! s:AutoClose() "{{{ " inoremap ( () let i = 0 while i < len(b:_l_delimitMate_matchpairs_list) - let ld = b:_l_delimitMate_left_delims[i] - let rd = b:_l_delimitMate_right_delims[i] - exec 'silent! inoremap ' . ld . ' ' . ld . '=delimitMate#ParenDelim("' . rd . '")' + let ld = b:_l_delimitMate_left_delims[i] == '|' ? '' : b:_l_delimitMate_left_delims[i] + let rd = b:_l_delimitMate_right_delims[i] == '|' ? '' : b:_l_delimitMate_right_delims[i] + exec 'silent! inoremap ' . ld . ' ' . ld . '=delimitMate#ParenDelim("' . escape(rd, '|') . '")' let i += 1 endwhile @@ -311,6 +320,9 @@ function! s:AutoClose() "{{{ " Add matching quote and jump to the midle, or exit if inside a pair of matching quotes: " inoremap " =delimitMate#QuoteDelim("\"") for delim in b:_l_delimitMate_quotes_list + if delim == '|' + let delim = '' + endif exec 'silent! inoremap ' . delim . ' =delimitMate#QuoteDelim("\' . delim . '")' endfor @@ -326,7 +338,7 @@ function! s:VisualMaps() " {{{ let vleader = b:_l_delimitMate_visual_leader " Wrap the selection with matching pairs, but do nothing if blockwise visual mode is active: for del in b:_l_delimitMate_right_delims + b:_l_delimitMate_left_delims + b:_l_delimitMate_quotes_list - exec "silent! vnoremap " . vleader . del . ' delimitMate#Visual("' . escape(del, '")') . '")' + exec "silent! vnoremap " . vleader . del . ' delimitMate#Visual("' . escape(del, '")|') . '")' endfor endfunction "}}} @@ -352,7 +364,7 @@ function! s:ExtraMappings() "{{{ endfor " Except when pop-up menu is active: for map in ['Up', 'Down', 'PageUp', 'PageDown', 'S-Down', 'S-Up'] - exec 'inoremap delimitMate'.map.' pumvisible() ? "\<'.map.'>" : "=Finish()<'.map.'>"' + exec 'inoremap delimitMate'.map.' pumvisible() ? "\<'.map.'>" : "\=\Finish()\\<'.map.'>"' if !hasmapto('delimitMate'.map, 'i') exec 'silent! imap <'.map.'> delimitMate'.map endif