diff options
Diffstat (limited to 'autoload/nohai.vim')
-rw-r--r-- | autoload/nohai.vim | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/autoload/nohai.vim b/autoload/nohai.vim new file mode 100644 index 0000000..726d4c8 --- /dev/null +++ b/autoload/nohai.vim @@ -0,0 +1,43 @@ +" Remaps <CR> in command mode to run `nohlsearch` after accepting the command. +function! s:AddMapping() + silent! cnoremap <expr> <CR> <SID>CRAndNohlsearch() +endfunction + +" Removes the Nohai <CR> cmap. +function! s:RemoveMapping() + silent! cunmap <CR> +endfunction + +" Deactivates the Nohai <CR> cmap and turns off the augroup. +function! s:Deactivate() + call s:RemoveMapping() + call s:AutocmdOff() +endfunction + +" Expr mapping function that runs the `nohlsearch` command after pressing <CR>. +function! s:CRAndNohlsearch() + return "\<CR>:nohlsearch\<CR>" +endfunction + +" Turn on Nohai autocmds. +function! s:AutocmdOn() + augroup nohai + autocmd! + + autocmd CmdlineEnter [/\?] call s:AddMapping() + autocmd CmdlineLeave [/\?] call s:Deactivate() + augroup END +endfunction + +" Removes the Nohai augroup. +function! s:AutocmdOff() + autocmd! nohai +endfunction + +" Expr mapping function that turns on Nohai and starts the search command +" specified by `command`, either '/' or '?'. +function! nohai#Search(command) + call s:AutocmdOn() + + return a:command +endfunction |