diff --git a/autoload/airline.vim b/autoload/airline.vim index 6f43ee12..0e0eeb34 100644 --- a/autoload/airline.vim +++ b/autoload/airline.vim @@ -142,9 +142,10 @@ endfunction " Update the statusline function! airline#update_statusline() - if airline#util#stl_disabled(winnr()) + if airline#util#stl_disabled(winnr()) || airline#util#is_popup_window(winnr()) return endif + " TODO: need to ignore popup windows here as well? let range = filter(range(1, winnr('$')), 'v:val != winnr()') " create inactive statusline call airline#update_statusline_inactive(range) diff --git a/autoload/airline/util.vim b/autoload/airline/util.vim index d871249b..93851fb0 100644 --- a/autoload/airline/util.vim +++ b/autoload/airline/util.vim @@ -204,6 +204,15 @@ function! airline#util#ignore_next_focusgain() endif endfunction +function! airline#util#is_popup_window(winnr) + " Keep the statusline active if it's a popup window + if exists('*win_gettype') + return win_gettype(a:winnr) ==# 'popup' || win_gettype(a:winnr) ==# 'autocmd' + else + return getwinvar(a:winnr, '&buftype', '') ==# 'popup' + endif +endfunction + function! airline#util#try_focusgained() " Ignore lasts for at most one second and is cleared on the first " focusgained. We use ignore to prevent system() calls from triggering