aboutsummaryrefslogtreecommitdiffstats
path: root/plugin/nohai.vim
diff options
context:
space:
mode:
authorTeddy Wing2019-12-14 16:40:23 +0100
committerTeddy Wing2019-12-14 16:40:23 +0100
commitd26b7d079468e89a81b10e81f875169e24a26f49 (patch)
tree415d20e77ec2020d7d697ca9bb3d94e85f244945 /plugin/nohai.vim
parentb772e113b413a1c12ca97cbcd9086d2cb5e3ca35 (diff)
downloadvim-nohai-d26b7d079468e89a81b10e81f875169e24a26f49.tar.bz2
Deactivate nohlsearch when exiting command line without <CR>
Previously I was deactivating the <CR> mapping in the rhs of the <CR> mapping. However, you can also exit command mode without pressing <CR> (e.g., with <C-c>). In that case, the <CR> 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.
Diffstat (limited to 'plugin/nohai.vim')
-rw-r--r--plugin/nohai.vim10
1 files changed, 8 insertions, 2 deletions
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 <CR>
endfunction
+function! s:Deactivate()
+ call s:RemoveMapping()
+ call s:AutocmdOff()
+endfunction
+
" function! s:CR(cmdwin_char)
" if a:cmdwin_char == '/' || a:cmdwin_char == '?'
" return "\<CR>:nohlsearch\<CR>"
@@ -54,7 +59,7 @@ function! s:CR()
" return expr
" TODO: Use CmdlineLeave instead for e.g. <C-c>
- call s:RemoveMapping()
+ " call s:RemoveMapping()
return "\<CR>:nohlsearch\<CR>"
endfunction
@@ -65,6 +70,7 @@ function! s:AutocmdOn()
autocmd!
autocmd CmdlineEnter [/\?] call s:Nohai(expand('<afile>'))
+ autocmd CmdlineLeave [/\?] call s:Deactivate()
augroup END
endfunction