From 8e36c0a8ed0c8243c253f8b7ce068f4e012004fc Mon Sep 17 00:00:00 2001 From: Gauravsingh Sisodia Date: Sat, 4 Dec 2021 01:24:26 +0530 Subject: [PATCH] main: ignore popup windows for inactive windows When openning popup (vim) or floating (neovim) windows, do not consider those windows for disabled windows. That is, leave the main window in activate state instead of marking it disabled closes: #2387 --- autoload/airline.vim | 3 ++- autoload/airline/util.vim | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) 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