From a1ec2b9baccab8d4487e7ad735ee6d453f494e62 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 4 Apr 2022 21:37:51 +0800 Subject: [PATCH] feat(flygrep): hide guicursor --- autoload/SpaceVim/api/vim/highlight.vim | 200 ++++++++++++------------ autoload/SpaceVim/plugins/flygrep.vim | 18 ++- 2 files changed, 108 insertions(+), 110 deletions(-) diff --git a/autoload/SpaceVim/api/vim/highlight.vim b/autoload/SpaceVim/api/vim/highlight.vim index 1d234ef3d..79d0d7275 100644 --- a/autoload/SpaceVim/api/vim/highlight.vim +++ b/autoload/SpaceVim/api/vim/highlight.vim @@ -21,123 +21,115 @@ let s:self = {} " reverse: if reverse function! s:self.group2dict(name) abort - let id = hlID(a:name) - if id == 0 - return { - \ 'name' : '', - \ 'ctermbg' : '', - \ 'ctermfg' : '', - \ 'bold' : '', - \ 'italic' : '', - \ 'reverse' : '', - \ 'underline' : '', - \ 'guibg' : '', - \ 'guifg' : '', - \ } - endif - let rst = { - \ 'name' : synIDattr(id, 'name'), - \ 'ctermbg' : synIDattr(id, 'bg', 'cterm'), - \ 'ctermfg' : synIDattr(id, 'fg', 'cterm'), - \ 'bold' : synIDattr(id, 'bold'), - \ 'italic' : synIDattr(id, 'italic'), - \ 'reverse' : synIDattr(id, 'reverse'), - \ 'underline' : synIDattr(id, 'underline'), - \ 'guibg' : tolower(synIDattr(id, 'bg#', 'gui')), - \ 'guifg' : tolower(synIDattr(id, 'fg#', 'gui')), - \ } - return rst + let id = hlID(a:name) + if id == 0 + return { + \ 'name' : '', + \ 'ctermbg' : '', + \ 'ctermfg' : '', + \ 'bold' : '', + \ 'italic' : '', + \ 'reverse' : '', + \ 'underline' : '', + \ 'guibg' : '', + \ 'guifg' : '', + \ } + endif + let rst = { + \ 'name' : synIDattr(id, 'name'), + \ 'ctermbg' : synIDattr(id, 'bg', 'cterm'), + \ 'ctermfg' : synIDattr(id, 'fg', 'cterm'), + \ 'bold' : synIDattr(id, 'bold'), + \ 'italic' : synIDattr(id, 'italic'), + \ 'reverse' : synIDattr(id, 'reverse'), + \ 'underline' : synIDattr(id, 'underline'), + \ 'guibg' : tolower(synIDattr(id, 'bg#', 'gui')), + \ 'guifg' : tolower(synIDattr(id, 'fg#', 'gui')), + \ } + return rst endfunction function! s:self.unite(base, target, part) abort - let base = self.group2dict(a:base) - let target = self.group2dict(a:target) - if empty(base) || empty(target) - return - elseif get(base,a:part, '') ==# get(target, a:part, '') - return - else - let target[a:part] = base[a:part] - call self.hi(target) - endif + let base = self.group2dict(a:base) + let target = self.group2dict(a:target) + if empty(base) || empty(target) + return + elseif get(base,a:part, '') ==# get(target, a:part, '') + return + else + let target[a:part] = base[a:part] + call self.hi(target) + endif endfunction function! s:self.hi(info) abort - if empty(a:info) || get(a:info, 'name', '') ==# '' - return + if empty(a:info) || get(a:info, 'name', '') ==# '' + return + endif + exe 'hi clear ' . a:info.name + let cmd = 'hi! ' . a:info.name + if !empty(a:info.ctermbg) + let cmd .= ' ctermbg=' . a:info.ctermbg + endif + if !empty(a:info.ctermfg) + let cmd .= ' ctermfg=' . a:info.ctermfg + endif + if !empty(a:info.guibg) + let cmd .= ' guibg=' . a:info.guibg + endif + if !empty(a:info.guifg) + let cmd .= ' guifg=' . a:info.guifg + endif + let style = [] + for sty in ['bold', 'italic', 'underline', 'reverse'] + if get(a:info, sty, '') ==# '1' + call add(style, sty) endif - exe 'hi clear ' . a:info.name - let cmd = 'hi! ' . a:info.name - if !empty(a:info.ctermbg) - let cmd .= ' ctermbg=' . a:info.ctermbg - endif - if !empty(a:info.ctermfg) - let cmd .= ' ctermfg=' . a:info.ctermfg - endif - if !empty(a:info.guibg) - let cmd .= ' guibg=' . a:info.guibg - endif - if !empty(a:info.guifg) - let cmd .= ' guifg=' . a:info.guifg - endif - let style = [] - for sty in ['bold', 'italic', 'underline', 'reverse'] - if get(a:info, sty, '') ==# '1' - call add(style, sty) - endif - endfor - if !empty(style) - let cmd .= ' gui=' . join(style, ',') . ' cterm=' . join(style, ',') - endif - try - silent! exe cmd - catch - endtry + endfor + if !empty(style) + let cmd .= ' gui=' . join(style, ',') . ' cterm=' . join(style, ',') + endif + try + silent! exe cmd + catch + endtry endfunction function! s:self.hide_in_normal(name) abort - let group = self.group2dict(a:name) - if empty(group) - return - endif - if (exists('+termguicolors') && &termguicolors ) || has('gui_running') - let bg = self.group2dict('Normal').guibg - if empty(bg) - return - endif - let group.guifg = bg - let group.guibg = bg - else - let bg = self.group2dict('Normal').ctermbg - if empty(bg) - return - endif - let group.ctermfg = bg - let group.ctermbg = bg - endif - call self.hi(group) + let group = self.group2dict(a:name) + if empty(group) + return + endif + let normal = self.group2dict('Normal') + let guibg = get(normal, 'guibg', '') + let ctermbg = get(normal, 'ctermbg', '') + let group.guifg = guibg + let group.guibg = guibg + let group.ctermfg = ctermbg + let group.ctermbg = ctermbg + call self.hi(group) endfunction function! s:self.hi_separator(a, b) abort - let hi_a = self.group2dict(a:a) - let hi_b = self.group2dict(a:b) - let hi_a_b = { - \ 'name' : a:a . '_' . a:b, - \ 'guibg' : hi_b.guibg, - \ 'guifg' : hi_a.guibg, - \ 'ctermbg' : hi_b.ctermbg, - \ 'ctermfg' : hi_a.ctermbg, - \ } - let hi_b_a = { - \ 'name' : a:b . '_' . a:a, - \ 'guibg' : hi_a.guibg, - \ 'guifg' : hi_b.guibg, - \ 'ctermbg' : hi_a.ctermbg, - \ 'ctermfg' : hi_b.ctermbg, - \ } - call self.hi(hi_a_b) - call self.hi(hi_b_a) + let hi_a = self.group2dict(a:a) + let hi_b = self.group2dict(a:b) + let hi_a_b = { + \ 'name' : a:a . '_' . a:b, + \ 'guibg' : hi_b.guibg, + \ 'guifg' : hi_a.guibg, + \ 'ctermbg' : hi_b.ctermbg, + \ 'ctermfg' : hi_a.ctermbg, + \ } + let hi_b_a = { + \ 'name' : a:b . '_' . a:a, + \ 'guibg' : hi_a.guibg, + \ 'guifg' : hi_b.guibg, + \ 'ctermbg' : hi_a.ctermbg, + \ 'ctermfg' : hi_b.ctermbg, + \ } + call self.hi(hi_a_b) + call self.hi(hi_b_a) endfunction function! s:self.syntax_at(...) abort @@ -197,5 +189,5 @@ function! s:self.syntax_of(pattern, ...) abort endfunction function! SpaceVim#api#vim#highlight#get() abort - return deepcopy(s:self) + return deepcopy(s:self) endfunction diff --git a/autoload/SpaceVim/plugins/flygrep.vim b/autoload/SpaceVim/plugins/flygrep.vim index 512bed04b..b9d5bc035 100644 --- a/autoload/SpaceVim/plugins/flygrep.vim +++ b/autoload/SpaceVim/plugins/flygrep.vim @@ -874,9 +874,15 @@ function! SpaceVim#plugins#flygrep#open(argv) abort let save_tve = &t_ve setlocal t_ve= let cursor_hi = {} - if has('gui_running') - let cursor_hi = s:HI.group2dict('Cursor') - call s:HI.hide_in_normal('Cursor') + let cursor_hi = s:HI.group2dict('Cursor') + let lcursor_hi = s:HI.group2dict('lCursor') + let guicursor = &guicursor + call s:HI.hide_in_normal('Cursor') + call s:HI.hide_in_normal('lCursor') + " hi Cursor ctermbg=16 ctermfg=16 guifg=#282c34 guibg=#282c34 + " hi lCursor ctermbg=16 ctermfg=16 guifg=#282c34 guibg=#282c34 + if has('nvim') + set guicursor+=a:Cursor/lCursor endif " setlocal nomodifiable setf SpaceVimFlyGrep @@ -926,9 +932,9 @@ function! SpaceVim#plugins#flygrep#open(argv) abort endif call s:LOGGER.info('FlyGrep ending ===========================') let &t_ve = save_tve - if has('gui_running') - call s:HI.hi(cursor_hi) - endif + call s:HI.hi(cursor_hi) + call s:HI.hi(lcursor_hi) + let &guicursor = guicursor endfunction " }}}