mirror of
https://github.com/airblade/vim-gitgutter.git
synced 2025-11-09 03:53:47 -05:00
Follow linked highlight groups to find background colors
This commit is contained in:
@@ -3,16 +3,12 @@ function! highlight#define_sign_column_highlight()
|
||||
endfunction
|
||||
|
||||
function! highlight#define_highlights()
|
||||
redir => sign_highlight
|
||||
silent highlight SignColumn
|
||||
redir END
|
||||
let sign_ctermbg = matchlist(sign_highlight, 'ctermbg=\(\S\+\)')[1]
|
||||
let sign_guibg = matchlist(sign_highlight, 'guibg=\(\S\+\)')[1]
|
||||
let [guibg, ctermbg] = highlight#get_background_colors('SignColumn')
|
||||
|
||||
" Highlights used by the signs.
|
||||
execute "highlight GitGutterAddDefault guifg=#009900 guibg=".sign_guibg." ctermfg=2 ctermbg=".sign_ctermbg
|
||||
execute "highlight GitGutterChangeDefault guifg=#bbbb00 guibg=".sign_guibg." ctermfg=3 ctermbg=".sign_ctermbg
|
||||
execute "highlight GitGutterDeleteDefault guifg=#ff2222 guibg=".sign_guibg." ctermfg=1 ctermbg=".sign_ctermbg
|
||||
execute "highlight GitGutterAddDefault guifg=#009900 guibg=" . guibg . " ctermfg=2 ctermbg=" . ctermbg
|
||||
execute "highlight GitGutterChangeDefault guifg=#bbbb00 guibg=" . guibg . " ctermfg=3 ctermbg=" . ctermbg
|
||||
execute "highlight GitGutterDeleteDefault guifg=#ff2222 guibg=" . guibg . " ctermfg=1 ctermbg=" . ctermbg
|
||||
highlight default link GitGutterChangeDeleteDefault GitGutterChangeDefault
|
||||
|
||||
highlight default link GitGutterAdd GitGutterAddDefault
|
||||
@@ -66,3 +62,26 @@ function! highlight#define_sign_line_highlights()
|
||||
sign define GitGutterLineModifiedRemoved linehl=
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! highlight#get_background_colors(group)
|
||||
redir => highlight
|
||||
silent execute 'silent highlight ' . a:group
|
||||
redir END
|
||||
|
||||
let link_matches = matchlist(highlight, 'links to \(\S\+\)')
|
||||
if len(link_matches) > 0 " follow the link
|
||||
return highlight#get_background_colors(link_matches[1])
|
||||
endif
|
||||
|
||||
let ctermbg = highlight#match_highlight(highlight, 'ctermbg=\(\S\+\)')
|
||||
let guibg = highlight#match_highlight(highlight, 'guibg=\(\S\+\)')
|
||||
return [guibg, ctermbg]
|
||||
endfunction
|
||||
|
||||
function! highlight#match_highlight(highlight, pattern)
|
||||
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