diff --git a/autoload/incsearch/autocmd.vim b/autoload/incsearch/autocmd.vim index d5d2b23..9e1b3f0 100644 --- a/autoload/incsearch/autocmd.vim +++ b/autoload/incsearch/autocmd.vim @@ -13,8 +13,8 @@ nnoremap (_incsearch-nohlsearch) :nohlsearch xnoremap (_incsearch-nohlsearch) :nohlsearchgv " :set hlsearch just before :nohlsearch not to blink highlight -noremap (_incsearch-sethlsearch) -noremap! (_incsearch-sethlsearch) +noremap (_incsearch-sethlsearch) attach_on_leave() +noremap! (_incsearch-sethlsearch) attach_on_leave() nnoremap (_incsearch-sethlsearch) :set hlsearch nohlsearch xnoremap (_incsearch-sethlsearch) :set hlsearch nohlsearchgv @@ -58,6 +58,10 @@ function! s:noi.on_insert_enter() abort endfunction function! s:noi.on_insert_leave() abort + return s:noi.restore_sethlsearch() +endfunction + +function! s:noi.restore_sethlsearch() abort if self.hlsearch call feedkeys("\(_incsearch-sethlsearch)", 'm') endif @@ -65,16 +69,21 @@ endfunction function! s:on_insert_enter() abort call s:noi.on_insert_enter() - augroup incsearch-auto-nohlsearch-on-insert-leave - autocmd! - autocmd InsertLeave * :call on_insert_leave() | autocmd! incsearch-auto-nohlsearch-on-insert-leave - augroup END + call s:attach_on_leave() endfunction function! s:on_insert_leave() abort call s:noi.on_insert_leave() endfunction +function! s:attach_on_leave() abort + augroup incsearch-auto-nohlsearch-on-insert-leave + autocmd! + autocmd InsertLeave * :call on_insert_leave() | autocmd! incsearch-auto-nohlsearch-on-insert-leave + augroup END + return '' +endfunction + let &cpo = s:save_cpo unlet s:save_cpo " __END__