diff --git a/plugin/delimitMate.vim b/plugin/delimitMate.vim index 513075f..2ea486d 100644 --- a/plugin/delimitMate.vim +++ b/plugin/delimitMate.vim @@ -255,13 +255,26 @@ endfunction "}}} "}}} " Mappers: {{{ +function! s:TriggerAbb(expr) "{{{ + if v:version < 703 || v:version == 703 && !has('patch489') + return '' + endif + if a:expr == 1 + return '"\".' + endif + if a:expr == 2 + return "\" + endif + return '' +endfunction "}}} + function! s:NoAutoClose() "{{{ " inoremap ) =delimitMate#SkipDelim('\)') for delim in s:g('right_delims') + s:g('quotes_list') if delim == '|' let delim = '' endif - exec 'inoremap delimitMate' . delim . ' =delimitMate#SkipDelim("' . escape(delim,'"') . '")' + exec 'inoremap delimitMate' . delim . ' '.s:TriggerAbb(0).'=delimitMate#SkipDelim("' . escape(delim,'"') . '")' exec 'silent! imap '.delim.' delimitMate'.delim endfor endfunction "}}} @@ -274,7 +287,7 @@ function! s:AutoClose() "{{{ let ld = s:g('left_delims')[i] == '|' ? '' : s:g('left_delims')[i] let rd = s:g('right_delims')[i] == '|' ? '' : s:g('right_delims')[i] exec 'inoremap delimitMate' . ld - \. ' "\".delimitMate#ParenDelim("' . escape(rd, '|') . '")' + \. ' '.s:TriggerAbb(1).'delimitMate#ParenDelim("' . escape(rd, '|') . '")' exec 'silent! imap '.ld \.' delimitMate'.ld let i += 1 @@ -283,7 +296,7 @@ function! s:AutoClose() "{{{ " Exit from inside the matching pair: for delim in s:g('right_delims') exec 'inoremap delimitMate' . delim - \. ' "\".delimitMate#JumpOut("\' . delim . '")' + \. ' '.s:TriggerAbb(1).'delimitMate#JumpOut("\' . delim . '")' exec 'silent! imap ' . delim \. ' delimitMate'. delim endfor @@ -294,8 +307,10 @@ function! s:AutoClose() "{{{ if delim == '|' let delim = '' endif - exec 'inoremap delimitMate' . delim . ' =delimitMate#QuoteDelim("\' . delim . '")' - exec 'silent! imap ' . delim . ' delimitMate' . delim + exec 'inoremap delimitMate' . delim + \. ' '.s:TriggerAbb(0).'=delimitMate#QuoteDelim("\' . delim . '")' + exec 'silent! imap ' . delim + \. ' delimitMate' . delim endfor " Try to fix the use of apostrophes (kept for backward compatibility): @@ -323,22 +338,22 @@ function! s:ExtraMappings() "{{{ silent! imap delimitMateS-BS endif " Expand return if inside an empty pair: - inoremap delimitMateCR =delimitMate#ExpandReturn() + inoremap delimitMateCR TriggerAbb(2)."\=delimitMate#ExpandReturn()\" if s:g('expand_cr') && !hasmapto('delimitMateCR', 'i') && maparg('', 'i') == '' silent! imap delimitMateCR endif " Expand space if inside an empty pair: - inoremap delimitMateSpace =delimitMate#ExpandSpace() + inoremap delimitMateSpace TriggerAbb(2)."\=delimitMate#ExpandSpace()\" if s:g('expand_space') && !hasmapto('delimitMateSpace', 'i') && maparg('', 'i') == '' silent! imap delimitMateSpace endif " Jump over any delimiter: - inoremap delimitMateS-Tab =delimitMate#JumpAny() + inoremap delimitMateS-Tab TriggerAbb(2)."\=delimitMate#JumpAny()\" if s:g('tab2exit') && !hasmapto('delimitMateS-Tab', 'i') && maparg('', 'i') == '' silent! imap delimitMateS-Tab endif " Jump over next delimiters - inoremap delimitMateJumpMany =delimitMate#JumpMany() + inoremap delimitMateJumpMany TriggerAbb(2)."\=delimitMate#JumpMany()\" if !hasmapto('delimitMateJumpMany', 'i') && maparg("g", 'i') == '' imap g delimitMateJumpMany endif