diff options
Diffstat (limited to 'plugin')
-rw-r--r-- | plugin/nohai.vim | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/plugin/nohai.vim b/plugin/nohai.vim index e0afbb0..cdde8c3 100644 --- a/plugin/nohai.vim +++ b/plugin/nohai.vim @@ -6,21 +6,46 @@ augroup nohai augroup END function! s:Nohai(cmdwin_char) - if a:cmdwin_char == '/' + if a:cmdwin_char == '/' || a:cmdwin_char == '?' " nohlsearch " ^ doesn't work because the autocommand executes before leaving the " command line window - call s:AddMapping() + call s:AddMapping(a:cmdwin_char) else call s:RemoveMapping() endif endfunction -function! s:AddMapping() - silent! cnoremap <CR> <CR>:nohlsearch<CR> +function! s:AddMapping(cmdwin_char) + " silent! cnoremap <CR> <CR>:nohlsearch<CR> + silent! cnoremap <expr> <CR> s:CR(a:cmdwin_char) endfunction function! s:RemoveMapping() silent! cunmap <CR> endfunction + +function! s:CR(cmdwin_char) + if a:cmdwin_char == '/' || a:cmdwin_char == '?' + return '<CR>:nohlsearch<CR>' + " ... and unmap + else + return '<CR>' + endif +endfunction + +function! s:Search() + " let s:on = 1 + + " 1. Turn on autocmd + " 2. Search (find out if this is blocked by function-search-undo) + " 2.a. Search automatically disables autocmd +endfunction + + +nnoremap <Plug>(nohai-search-backward) :call s:Search()<CR> +nnoremap <Plug>(nohai-search) :call s:Search()<CR> + +nmap g? <Plug>(nohai-search-backward) +nmap g/ <Plug>(nohai-search) |