blob: cdde8c3fdc70979c76a764009c5c824f4fc9334d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
augroup nohai
autocmd!
" autocmd CmdlineLeave * call s:Nohai(expand('<afile>'))
autocmd CmdlineEnter [/?] call s:Nohai(expand('<afile>'))
augroup END
function! s:Nohai(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(a:cmdwin_char)
else
call s:RemoveMapping()
endif
endfunction
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)
|