From 99971aa24d612f6161e77a1622e541f582505a05 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Thu, 8 Nov 2018 15:31:58 +0100 Subject: [PATCH] highlighter: also check separator groups for being defined Make sure, to also check, if the separator groups have already been defined. Once they are defined initially, they are usually available in the palette group. So do not redefine them once they have been created initially. references #1779 --- autoload/airline/highlighter.vim | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/autoload/airline/highlighter.vim b/autoload/airline/highlighter.vim index 5e8a785..c732721 100644 --- a/autoload/airline/highlighter.vim +++ b/autoload/airline/highlighter.vim @@ -34,6 +34,10 @@ function! s:group_not_done(list, name) endif endfu +function! s:separator_name(from, to, suffix) + return a:from.'_to_'.a:to.a:suffix +endfu + function! s:get_syn(group, what) if !exists("g:airline_gui_mode") let g:airline_gui_mode = airline#init#gui_mode() @@ -178,7 +182,7 @@ function! s:exec_separator(dict, from, to, inverse, suffix) if pumvisible() return endif - let group = a:from.'_to_'.a:to.a:suffix + let group = s:separator_name(a:from, a:to, a:suffix) let l:from = airline#themes#get_highlight(a:from.a:suffix) let l:to = airline#themes#get_highlight(a:to.a:suffix) if a:inverse @@ -290,9 +294,10 @@ function! airline#highlighter#highlight(modes, ...) " nothing to be done continue endif - " TODO: optimize this for sep in items(s:separators) - call exec_separator(dict, sep[1][0], sep[1][1], sep[1][2], suffix) + if s:group_not_done(airline_grouplist, s:separator_name(sep[1][0], sep[1][1], suffix)) + call exec_separator(dict, sep[1][0], sep[1][1], sep[1][2], suffix) + endif endfor endif endfor