diff --git a/autoload/delimitMate.vim b/autoload/delimitMate.vim index a2655b4..f8142dc 100644 --- a/autoload/delimitMate.vim +++ b/autoload/delimitMate.vim @@ -320,14 +320,13 @@ function! delimitMate#QuoteDelim(char) "{{{ endif let char_at = delimitMate#GetCharFromCursor(0) let char_before = delimitMate#GetCharFromCursor(-1) - if delimitMate#IsSmartQuote(a:char) - " Seems like a smart quote, insert a single char. - return a:char - "elseif line[col + 1] == a:char && - elseif char_at == a:char && + if char_at == a:char && \ index(b:_l_delimitMate_nesting_quotes, a:char) < 0 " Get out of the string. return a:char . delimitMate#Del() + elseif delimitMate#IsSmartQuote(a:char) + " Seems like a smart quote, insert a single char. + return a:char elseif (char_before == a:char && char_at != a:char) && b:_l_delimitMate_smart_quotes " Seems like we have an unbalanced quote, insert one quotation mark and jump to the middle. call delimitMate#AddToBuffer(a:char) diff --git a/test/autoclose_quotes.txt b/test/autoclose_quotes.txt index 7b4b2ec..ed768b8 100644 --- a/test/autoclose_quotes.txt +++ b/test/autoclose_quotes.txt @@ -34,3 +34,5 @@ set cpo=ces$ "'x" "'x'" # Make sure smart quote works beyond first column. " 'x" " 'x'" +# Make sure we jump over a quote on the right. #89. +"('test'x" "('test'x)"