mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 22:50:05 +08:00
57 lines
1.5 KiB
VimL
57 lines
1.5 KiB
VimL
|
scriptencoding utf-8
|
||
|
let s:save_cpo = &cpo
|
||
|
set cpo&vim
|
||
|
|
||
|
" 0 = match just the pattern
|
||
|
" 1 = match whole line
|
||
|
let g:over#command_line#global#highlight_line = get(g:, "over#command_line#global#highlight_line", 0)
|
||
|
|
||
|
" 0 = do nothing
|
||
|
" 1 = highlight all lines not matching pattern
|
||
|
let g:over#command_bang#global#highlight_bang = get(g:, "over#command_bang#global#highlight_bang", 1)
|
||
|
|
||
|
function! over#command_line#global#load()
|
||
|
" load
|
||
|
endfunction
|
||
|
|
||
|
|
||
|
function! s:search_hl_off()
|
||
|
if exists("s:search_id") && s:search_id != -1
|
||
|
call matchdelete(s:search_id)
|
||
|
unlet s:search_id
|
||
|
endif
|
||
|
endfunction
|
||
|
|
||
|
|
||
|
function! s:search_hl_on(pattern, bang)
|
||
|
let pattern = g:over#command_line#global#highlight_line ?
|
||
|
\ '.*' . a:pattern . '.*' : a:pattern
|
||
|
let pattern = a:bang && g:over#command_bang#global#highlight_bang ?
|
||
|
\ '^\%(\%(' . pattern . '\)\@!.\)*$' : pattern
|
||
|
silent! let s:search_id = matchadd("IncSearch", a:pattern)
|
||
|
endfunction
|
||
|
|
||
|
|
||
|
function! s:main()
|
||
|
call s:search_hl_off()
|
||
|
let line = over#command_line#backward()
|
||
|
if line =~ '\v^\%g!?\/.'
|
||
|
let bang = line =~ 'g!\/'
|
||
|
let pattern = matchstr(line, '\v\%g!?\/\zs%(\\\/|[^/])+')
|
||
|
call s:search_hl_on((&ignorecase ? '\c' : '') . pattern, bang)
|
||
|
endif
|
||
|
endfunction
|
||
|
|
||
|
|
||
|
augroup over-cmdline-global
|
||
|
autocmd!
|
||
|
autocmd User OverCmdLineChar call s:main()
|
||
|
autocmd User OverCmdLineLeave call s:search_hl_off()
|
||
|
autocmd User OverCmdLineEnter let s:old_pos = getpos(".")
|
||
|
autocmd User OverCmdLineExecutePre call setpos(".", s:old_pos)
|
||
|
augroup END
|
||
|
|
||
|
let &cpo = s:save_cpo
|
||
|
unlet s:save_cpo
|
||
|
|