From eb7738e4aa47618083d5af7a39ee39307c7d720d Mon Sep 17 00:00:00 2001 From: Israel Chauca Fuentes Date: Wed, 27 Mar 2013 16:50:53 -0400 Subject: [PATCH] Call #Finish() only when necessary. Closes #124. --- plugin/delimitMate.vim | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/plugin/delimitMate.vim b/plugin/delimitMate.vim index 84b8310..4c0776e 100644 --- a/plugin/delimitMate.vim +++ b/plugin/delimitMate.vim @@ -360,19 +360,14 @@ function! s:ExtraMappings() "{{{ if !hasmapto('delimitMateDel', 'i') && maparg('', 'i') == '' silent! imap delimitMateDel endif - " Flush the char buffer on movement keystrokes or when leaving insert mode: - for map in ['Left', 'Right', 'Home', 'End', 'C-Left', 'C-Right'] - exec 'inoremap delimitMate'.map.' =Finish()<'.map.'>' - if !hasmapto('delimitMate'.map, 'i') && maparg('<'.map.'>', 'i') == '' - exec 'silent! imap <'.map.'> delimitMate'.map - endif - endfor - " Flush the char buffer on scrolling: - for map in ['ScrollWheelUp', 'S-ScrollWheelUp', 'C-ScrollWheelUp', - \ 'ScrollWheelDown', 'S-ScrollWheelDown', 'C-ScrollWheelDown', - \ 'ScrollWheelLeft', 'S-ScrollWheelLeft', 'C-ScrollWheelLeft', - \ 'ScrollWheelRight', 'S-ScrollWheelRight', 'C-ScrollWheelRight'] - exec 'inoremap delimitMate'.map.' =Finish()<'.map.'>' + let keys = ['Left', 'Right', 'Home', 'End', 'C-Left', 'C-Right', + \ 'ScrollWheelUp', 'S-ScrollWheelUp', 'C-ScrollWheelUp', + \ 'ScrollWheelDown', 'S-ScrollWheelDown', 'C-ScrollWheelDown', + \ 'ScrollWheelLeft', 'S-ScrollWheelLeft', 'C-ScrollWheelLeft', + \ 'ScrollWheelRight', 'S-ScrollWheelRight', 'C-ScrollWheelRight'] + " Flush the char buffer on movement keystrokes: + for map in keys + exec 'inoremap delimitMate'.map.' !empty(b:_l_delimitMate_buffer) ? "=delimitMate#Finish(1)<'.map.'>" : "<'.map.'>"' if !hasmapto('delimitMate'.map, 'i') && maparg('<'.map.'>', 'i') == '' exec 'silent! imap <'.map.'> delimitMate'.map endif @@ -388,7 +383,7 @@ function! s:ExtraMappings() "{{{ endif " 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() \|\| empty(b:_l_delimitMate_buffer) ? "\<'.map.'>" : "\=\Finish()\\<'.map.'>"' if !hasmapto('delimitMate'.map, 'i') && maparg('<'.map.'>', 'i') == '' exec 'silent! imap <'.map.'> delimitMate'.map endif