diff --git a/autoload/SpaceVim/api/vim/highlight.vim b/autoload/SpaceVim/api/vim/highlight.vim index 2b0156342..00cf16c51 100644 --- a/autoload/SpaceVim/api/vim/highlight.vim +++ b/autoload/SpaceVim/api/vim/highlight.vim @@ -18,6 +18,46 @@ function! s:self.group2dict(name) abort 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 +endfunction + +function! s:self.hi(info) abort + if empty(a:info) + return + endif + let cmd = 'hi! ' . a:info.name + \ . ' ctermbg=' . a:info.ctermbg + \ . ' ctermfg=' . a:info.ctermfg + \ . ' guibg=' . a:info.guibg + \ . ' guifg=' . a:info.guifg + let style = [] + for sty in ['hold', 'italic', 'underline'] + if a:info[sty] ==# '1' + call add(style, sty) + endif + endfor + + if !empty(style) + let cmd .= ' gui=' . join(style, ',') . ' cterm=' . join(style, ',') + endif + + try + exe cmd + catch + endtry + +endfunction + function! SpaceVim#api#vim#highlight#get() abort return deepcopy(s:self) endfunction diff --git a/autoload/SpaceVim/layers/ui.vim b/autoload/SpaceVim/layers/ui.vim index 184902065..8959bd7a9 100644 --- a/autoload/SpaceVim/layers/ui.vim +++ b/autoload/SpaceVim/layers/ui.vim @@ -122,6 +122,7 @@ function! s:toggle_syntax_hi() abort endfunction let s:ebflag = 0 +let s:HI = SpaceVim#api#import('vim#highlight') function! s:toggle_end_of_buffer() abort if !s:ebflag if &background ==# 'dark' @@ -131,11 +132,12 @@ function! s:toggle_end_of_buffer() abort endif let s:ebflag = 1 else - if &background ==# 'dark' - hi EndOfBuffer guibg=#282828 guifg=#282828 + if &termguicolors || has('gui_running') + let normalbg = s:HI.group2dict('Normal').guibg else - hi EndOfBuffer guibg=#fbf1c7 guifg=#fbf1c7 + let normalbg = s:HI.group2dict('Normal').ctermbg endif + exe 'hi! EndOfBuffer guifg=' . normalbg . ' guibg=' . normalbg let s:ebflag = 0 endif endfunction