diff --git a/autoload/delimitMate.vim b/autoload/delimitMate.vim index ec5939a..3d9a720 100644 --- a/autoload/delimitMate.vim +++ b/autoload/delimitMate.vim @@ -329,7 +329,7 @@ function! delimitMate#SkipDelim(char) "{{{ return a:char . "\" elseif delimitMate#IsEmptyPair( pre . a:char ) " Add closing delimiter and jump back to the middle. - return a:char . "\" + return a:char . s:joinUndo() . "\" else " Nothing special here, return the same character. return a:char @@ -360,7 +360,7 @@ function! delimitMate#ParenDelim(right) " {{{ else let tail = '' endif - return left . a:right . tail . repeat("\", len(split(tail, '\zs')) + 1) + return left . a:right . tail . repeat(s:joinUndo() . "\", len(split(tail, '\zs')) + 1) endfunction " }}} function! delimitMate#QuoteDelim(char) "{{{ @@ -376,7 +376,7 @@ function! delimitMate#QuoteDelim(char) "{{{ let right_q = s:rquote(a:char) let quotes = right_q > left_q + 1 ? 0 : left_q - right_q + 2 let lefts = quotes - 1 - return repeat(a:char, quotes) . repeat("\", lefts) + return repeat(a:char, quotes) . repeat(s:joinUndo() . "\", lefts) elseif char_at == a:char " Inside an empty pair, jump out return a:char . "\" @@ -391,7 +391,7 @@ function! delimitMate#QuoteDelim(char) "{{{ \ && !empty(s:get('smart_quotes')) " Seems like we have an unbalanced quote, insert one quotation " mark and jump to the middle. - return a:char . "\" + return a:char . s:joinUndo() . "\" else " Insert a pair and jump to the middle. let sufix = '' @@ -401,7 +401,7 @@ function! delimitMate#QuoteDelim(char) "{{{ let has_marker = marker == s:get('eol_marker') let sufix = !has_marker ? s:get('eol_marker') : '' endif - return a:char . a:char . "\" + return a:char . a:char . s:joinUndo() . "\" endif endfunction "}}} @@ -416,9 +416,9 @@ function! delimitMate#JumpOut(char) "{{{ " Ref: https://github.com/Raimondi/delimitMate/issues/168 return "\".a:char elseif jump == 3 - return "\\" + return s:joinUndo() . "\" . s:joinUndo() . "\" elseif jump == 5 - return "\\I\" + return "\\I" . s:joinUndo() . "\" else return a:char endif @@ -435,12 +435,12 @@ function! delimitMate#JumpAny(...) " {{{ let char = s:get_char(0) if char == " " " Space expansion. - return "\\" + return s:joinUndo() . "\" . s:joinUndo() . "\" elseif char == "" " CR expansion. return "\" . getline(line('.') + 1)[0] . "\\" else - return "\" + return s:joinUndo() . "\" endif endfunction " delimitMate#JumpAny() }}} @@ -451,10 +451,10 @@ function! delimitMate#JumpMany() " {{{ for char in line if index(s:get('quotes_list'), char) >= 0 || \ index(s:get('right_delims'), char) >= 0 - let rights .= "\" + let rights .= s:joinUndo() . "\" let found = 1 elseif found == 0 - let rights .= "\" + let rights .= s:joinUndo() . "\" else break endif @@ -487,7 +487,7 @@ function! delimitMate#ExpandReturn() "{{{ \ && !search(escape(s:get('eol_marker'), '[]\.*^$').'$', 'cnW', '.') let tail = getline('.')[col('.') - 1 : ] let times = len(split(tail, '\zs')) - let val .= repeat("\", times) . s:get('eol_marker') . repeat("\", times + 1) + let val .= repeat(s:joinUndo() . "\", times) . s:get('eol_marker') . repeat(s:joinUndo() . "\", times + 1) endif let val .= "\" if &smartindent && !&cindent && !&indentexpr @@ -520,7 +520,7 @@ function! delimitMate#ExpandSpace() "{{{ \ && !escaped if s:is_empty_matchpair() || expand_inside_quotes " Expand: - return "\\\" + return "\\" . s:joinUndo() . "\" else return "\" endif @@ -656,4 +656,12 @@ function! s:test_mappings(list, is_matchpair) "{{{ endfor endfunction "}}} +function! s:joinUndo() "{{{ + if v:version < 704 + \ || ( v:version == 704 && !has('patch849') ) + return '' + endif + return "\U" +endfunction "}}} + " vim:foldmethod=marker:foldcolumn=4:ts=2:sw=2