diff --git a/autoload/delimitMate.vim b/autoload/delimitMate.vim index bdf2d4c..e99c593 100644 --- a/autoload/delimitMate.vim +++ b/autoload/delimitMate.vim @@ -615,7 +615,7 @@ endfunction " }}} function! delimitMate#NoAutoClose() "{{{ " inoremap ) =delimitMate#SkipDelim('\)') for delim in b:_l_delimitMate_right_delims + b:_l_delimitMate_quotes_list - exec 'inoremap ' . delim . ' =delimitMate#SkipDelim("' . escape(delim,'"\|') . '")' + exec 'silent! inoremap ' . delim . ' =delimitMate#SkipDelim("' . escape(delim,'"\|') . '")' endfor endfunction "}}} @@ -626,25 +626,25 @@ function! delimitMate#AutoClose() "{{{ 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 'inoremap ' . ld . ' ' . ld . '=delimitMate#ParenDelim("' . rd . '")' + exec 'silent! inoremap ' . ld . ' ' . ld . '=delimitMate#ParenDelim("' . rd . '")' let i += 1 endwhile " Exit from inside the matching pair: for delim in b:_l_delimitMate_right_delims - exec 'inoremap ' . delim . ' =delimitMate#JumpOut("\' . delim . '")' + exec 'silent! inoremap ' . delim . ' =delimitMate#JumpOut("\' . delim . '")' endfor " 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 - exec 'inoremap ' . delim . ' =delimitMate#QuoteDelim("\' . delim . '")' + exec 'silent! inoremap ' . delim . ' =delimitMate#QuoteDelim("\' . delim . '")' endfor - " Try to fix the use of apostrophes (de-activated by default): + " Try to fix the use of apostrophes (kept for backward compatibilt): " inoremap n't n't for map in b:_l_delimitMate_apostrophes_list - exec "inoremap " . map . " " . map + exec "silent! inoremap " . map . " " . map endfor endfunction "}}} @@ -653,49 +653,57 @@ function! delimitMate#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 "vnoremap " . vleader . del . ' delimitMate#Visual("' . escape(del, '")') . '")' + exec "silent! vnoremap " . vleader . del . ' delimitMate#Visual("' . escape(del, '")') . '")' endfor endfunction "}}} function! delimitMate#ExtraMappings() "{{{ " If pair is empty, delete both delimiters: - inoremap =delimitMate#BS() - + inoremap delimitMateBS =delimitMate#BS() " If pair is empty, delete closing delimiter: - inoremap delimitMate#WithinEmptyPair() ? "\=delimitMate#Del()\" : "\" - + inoremap delimitMateSBS delimitMate#WithinEmptyPair() ? "\=delimitMate#Del()\" : "\" " Expand return if inside an empty pair: - if b:_l_delimitMate_expand_cr != 0 - inoremap =delimitMate#ExpandReturn() - endif - + inoremap delimitMateER =delimitMate#ExpandReturn() " Expand space if inside an empty pair: - if b:_l_delimitMate_expand_space != 0 - inoremap =delimitMate#ExpandSpace() - endif - + inoremap delimitMateES =delimitMate#ExpandSpace() " Jump out ot any empty pair: - if b:_l_delimitMate_tab2exit - inoremap =delimitMate#JumpAny("\") + inoremap delimitMateSTab =delimitMate#JumpAny("\") + " change char buffer on Del: + inoremap delimitMateDel =delimitMate#Del() + " Flush the char buffer on movement keystrokes or when leaving insert mode: + for map in ['Esc', 'Left', 'Right', 'Up', 'Down', 'Home', 'End'] + exec 'inoremap delimitMate'.map.' =delimitMate#Finish()<'.map.'>' + if !hasmapto('delimitMate'.map, 'i') + exec 'silent! imap <'.map.'> delimitMate'.map + endif + endfor + + for map in ['LeftMouse', 'RightMouse'] + exec 'inoremap delimitMateM'.map.' =delimitMate#Finish()<'.map.'>' + if !hasmapto('delimitMate'.map, 'i') + exec 'silent! imap <'.map.'> delimitMateM'.map + endif + endfor + + " Map away! + if !hasmapto('delimitMateDel', 'i') + silent! imap delimitMateDel + endif + if !hasmapto('delimitMateBS','i') + silent! imap delimitMateBS + endif + if !hasmapto('delimitMateSBS','i') + silent! imap delimitMateSBS + endif + if b:_l_delimitMate_expand_cr != 0 && !hasmapto('delimitMateER', 'i') + silent! imap delimitMateER + endif + if b:_l_delimitMate_expand_space != 0 && !hasmapto('delimitMateES', 'i') + silent! imap delimitMateES + endif + if b:_l_delimitMate_tab2exit && !hasmapto('delimitMateSTab', 'i') + silent! imap delimitMateSTab endif - - " Fix the re-do feature: - inoremap =delimitMate#Finish() - - " Flush the char buffer on mouse click: - inoremap =delimitMate#Finish() - inoremap =delimitMate#Finish() - - " Flush the char buffer on key movements: - inoremap =delimitMate#Finish() - inoremap =delimitMate#Finish() - inoremap =delimitMate#Finish() - inoremap =delimitMate#Finish() - inoremap =delimitMate#Finish() - inoremap =delimitMate#Finish() - - inoremap =delimitMate#Del() - " The following simply creates an ambiguous mapping so vim fully processes " the escape sequence for terminal keys, see 'ttimeout' for a rough " explanation, this just forces it to work @@ -711,7 +719,8 @@ function! delimitMate#UnMap() " {{{ \ b:_l_delimitMate_quotes_list + \ b:_l_delimitMate_apostrophes_list + \ ['', '', '', '', '', '', ''] + - \ ['', '', '', '', '', ''] + \ ['', '', '', '', '', ''] + + \ ['Home', 'End'] let vmaps = \ b:_l_delimitMate_right_delims +