mirror of
https://github.com/airblade/vim-gitgutter.git
synced 2025-11-08 19:43:47 -05:00
Simplify getting highlight fg/bg
This commit is contained in:
committed by
Andy Stewart
parent
a7650790ea
commit
9f21e3dbba
@@ -131,40 +131,22 @@ function! s:define_sign_line_highlights() abort
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:get_foreground_colors(group) abort
|
function! s:get_hl(group, what, mode) abort
|
||||||
redir => highlight
|
let r = synIDattr(synIDtrans(hlID(a:group)), a:what, a:mode)
|
||||||
silent execute 'silent highlight ' . a:group
|
if r ==# ''
|
||||||
redir END
|
return 'NONE'
|
||||||
|
|
||||||
let link_matches = matchlist(highlight, 'links to \(\S\+\)')
|
|
||||||
if len(link_matches) > 0 " follow the link
|
|
||||||
return s:get_foreground_colors(link_matches[1])
|
|
||||||
endif
|
endif
|
||||||
|
return r
|
||||||
|
endfunction
|
||||||
|
|
||||||
let ctermfg = s:match_highlight(highlight, 'ctermfg=\([0-9A-Za-z]\+\)')
|
function! s:get_foreground_colors(group) abort
|
||||||
let guifg = s:match_highlight(highlight, 'guifg=\([#0-9A-Za-z]\+\)')
|
let ctermfg = s:get_hl(a:group, 'fg', 'cterm')
|
||||||
|
let guifg = s:get_hl(a:group, 'fg', 'gui')
|
||||||
return [guifg, ctermfg]
|
return [guifg, ctermfg]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:get_background_colors(group) abort
|
function! s:get_background_colors(group) abort
|
||||||
redir => highlight
|
let ctermbg = s:get_hl(a:group, 'bg', 'cterm')
|
||||||
silent execute 'silent highlight ' . a:group
|
let guibg = s:get_hl(a:group, 'bg', 'gui')
|
||||||
redir END
|
|
||||||
|
|
||||||
let link_matches = matchlist(highlight, 'links to \(\S\+\)')
|
|
||||||
if len(link_matches) > 0 " follow the link
|
|
||||||
return s:get_background_colors(link_matches[1])
|
|
||||||
endif
|
|
||||||
|
|
||||||
let ctermbg = s:match_highlight(highlight, 'ctermbg=\([0-9A-Za-z]\+\)')
|
|
||||||
let guibg = s:match_highlight(highlight, 'guibg=\([#0-9A-Za-z]\+\)')
|
|
||||||
return [guibg, ctermbg]
|
return [guibg, ctermbg]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:match_highlight(highlight, pattern) abort
|
|
||||||
let matches = matchlist(a:highlight, a:pattern)
|
|
||||||
if len(matches) == 0
|
|
||||||
return 'NONE'
|
|
||||||
endif
|
|
||||||
return matches[1]
|
|
||||||
endfunction
|
|
||||||
|
|||||||
Reference in New Issue
Block a user