aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugin/nohai.vim33
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)