From d26b7d079468e89a81b10e81f875169e24a26f49 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sat, 14 Dec 2019 16:40:23 +0100 Subject: Deactivate nohlsearch when exiting command line without Previously I was deactivating the mapping in the rhs of the mapping. However, you can also exit command mode without pressing (e.g., with ). In that case, the mapping would still be active, causing regular search commands to nohlsearch on completion. Now, use a `CmdlineLeave` `autocmd` instead to remove the mapping and autocmd. This ensures the plugin always cleans up after itself when the search line is exited. --- plugin/nohai.vim | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'plugin') diff --git a/plugin/nohai.vim b/plugin/nohai.vim index ebd6540..70a8adb 100644 --- a/plugin/nohai.vim +++ b/plugin/nohai.vim @@ -17,7 +17,7 @@ function! s:Nohai(cmdwin_char) " call s:RemoveMapping() endif - call s:AutocmdOff() + " call s:AutocmdOff() endfunction function! s:AddMapping(cmdwin_char) @@ -35,6 +35,11 @@ function! s:RemoveMapping() silent! cunmap endfunction +function! s:Deactivate() + call s:RemoveMapping() + call s:AutocmdOff() +endfunction + " function! s:CR(cmdwin_char) " if a:cmdwin_char == '/' || a:cmdwin_char == '?' " return "\:nohlsearch\" @@ -54,7 +59,7 @@ function! s:CR() " return expr " TODO: Use CmdlineLeave instead for e.g. - call s:RemoveMapping() + " call s:RemoveMapping() return "\:nohlsearch\" endfunction @@ -65,6 +70,7 @@ function! s:AutocmdOn() autocmd! autocmd CmdlineEnter [/\?] call s:Nohai(expand('')) + autocmd CmdlineLeave [/\?] call s:Deactivate() augroup END endfunction -- cgit v1.2.3