highlight: skip processing the same hi group twice
Shouldn't happen, but just in case skip creating highlighting group, if the same group with the same attributes has already been defined.
This commit is contained in:
parent
583ae3d5f9
commit
feee9bcf3c
|
@ -47,7 +47,9 @@ function! airline#load_theme()
|
|||
endif
|
||||
|
||||
call airline#highlighter#load_theme()
|
||||
let g:airline_theme_dict = {}
|
||||
call airline#extensions#load_theme()
|
||||
unlet g:airline_theme_dict
|
||||
call airline#update_statusline()
|
||||
endfunction
|
||||
|
||||
|
@ -102,6 +104,7 @@ function! airline#update_statusline()
|
|||
if airline#util#getwinvar(winnr(), 'airline_disabled', 0)
|
||||
return
|
||||
endif
|
||||
let g:airline_theme_dict={}
|
||||
for nr in filter(range(1, winnr('$')), 'v:val != winnr()')
|
||||
if airline#util#getwinvar(nr, 'airline_disabled', 0)
|
||||
continue
|
||||
|
@ -117,6 +120,7 @@ function! airline#update_statusline()
|
|||
let w:airline_active = 1
|
||||
let context = { 'winnr': winnr(), 'active': 1, 'bufnr': winbufnr(winnr()) }
|
||||
call s:invoke_funcrefs(context, g:airline_statusline_funcrefs)
|
||||
unlet g:airline_theme_dict
|
||||
endfunction
|
||||
|
||||
let s:contexts = {}
|
||||
|
@ -198,9 +202,11 @@ function! airline#check_mode(winnr)
|
|||
return ''
|
||||
endif
|
||||
if get(w:, 'airline_lastmode', '') != mode_string
|
||||
let g:airline_theme_dict = {}
|
||||
call airline#highlighter#highlight_modified_inactive(context.bufnr)
|
||||
call airline#highlighter#highlight(l:mode, context.bufnr)
|
||||
let w:airline_lastmode = mode_string
|
||||
unlet g:airline_theme_dict
|
||||
endif
|
||||
|
||||
return ''
|
||||
|
|
|
@ -118,13 +118,18 @@ function! airline#extensions#tabline#get()
|
|||
if !exists('#airline#BufAdd#*')
|
||||
autocmd airline BufAdd * call <sid>update_tabline()
|
||||
endif
|
||||
if s:ctrlspace
|
||||
return airline#extensions#tabline#ctrlspace#get()
|
||||
elseif s:show_buffers && curtabcnt == 1 || !s:show_tabs
|
||||
return airline#extensions#tabline#buffers#get()
|
||||
else
|
||||
return airline#extensions#tabline#tabs#get()
|
||||
endif
|
||||
try
|
||||
let g:airline_theme_dict = {}
|
||||
if s:ctrlspace
|
||||
return airline#extensions#tabline#ctrlspace#get()
|
||||
elseif s:show_buffers && curtabcnt == 1 || !s:show_tabs
|
||||
return airline#extensions#tabline#buffers#get()
|
||||
else
|
||||
return airline#extensions#tabline#tabs#get()
|
||||
endif
|
||||
finally
|
||||
unlet g:airline_theme_dict
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
function! airline#extensions#tabline#title(n)
|
||||
|
|
|
@ -84,6 +84,10 @@ function! airline#highlighter#exec(group, colors)
|
|||
if len(colors) == 4
|
||||
call add(colors, '')
|
||||
endif
|
||||
if has_key(g:airline_theme_dict, 'a:group') &&
|
||||
\ get(g:airline_theme_dict[a:group]) == a:colors
|
||||
return
|
||||
endif
|
||||
if g:airline_gui_mode ==# 'gui'
|
||||
let new_hi = [colors[0], colors[1], '', '', colors[4]]
|
||||
else
|
||||
|
@ -98,6 +102,7 @@ function! airline#highlighter#exec(group, colors)
|
|||
\ s:Get(colors, 4, 'term=', ''))
|
||||
exe cmd
|
||||
endif
|
||||
let g:airline_theme_dict[a:group] = a:colors
|
||||
endfunction
|
||||
|
||||
function! s:CheckDefined(colors)
|
||||
|
@ -160,6 +165,7 @@ function! airline#highlighter#load_theme()
|
|||
if pumvisible()
|
||||
return
|
||||
endif
|
||||
let g:airline_theme_dict = {}
|
||||
for winnr in filter(range(1, winnr('$')), 'v:val != winnr()')
|
||||
call airline#highlighter#highlight_modified_inactive(winbufnr(winnr))
|
||||
endfor
|
||||
|
@ -169,6 +175,7 @@ function! airline#highlighter#load_theme()
|
|||
else
|
||||
call airline#highlighter#highlight(['normal'])
|
||||
endif
|
||||
unlet g:airline_theme_dict
|
||||
endfunction
|
||||
|
||||
function! airline#highlighter#add_separator(from, to, inverse)
|
||||
|
|
Loading…
Reference in New Issue