From 2e9df43962539e3a05e5571c63ccf6356451d46c Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Fri, 30 Apr 2021 13:25:26 +0200 Subject: [PATCH] autocommands: check for existence of airline highlight group Several extensions trigger custom actions. Make sure, those actions are only performed, if airline is actually active and not temporarily disabled using e.g. :AirlineToggle --- autoload/airline/extensions/ale.vim | 4 ++++ autoload/airline/extensions/branch.vim | 14 ++++++++++++-- autoload/airline/extensions/cursormode.vim | 4 ++++ autoload/airline/extensions/fugitiveline.vim | 10 ++++++++-- autoload/airline/extensions/languageclient.vim | 4 ++++ autoload/airline/extensions/lsp.vim | 4 ++++ autoload/airline/extensions/po.vim | 12 +++++++++++- autoload/airline/extensions/tabline/buflist.vim | 4 ++++ autoload/airline/extensions/tabline/ctrlspace.vim | 3 +++ autoload/airline/extensions/tabline/tabs.vim | 4 +++- autoload/airline/extensions/tabline/tabws.vim | 6 ++++-- autoload/airline/extensions/tabline/xtabline.vim | 10 +++++++++- autoload/airline/extensions/whitespace.vim | 4 ++++ autoload/airline/util.vim | 4 ++++ plugin/airline.vim | 2 +- 15 files changed, 79 insertions(+), 10 deletions(-) diff --git a/autoload/airline/extensions/ale.vim b/autoload/airline/extensions/ale.vim index 618fead8..0948ae63 100644 --- a/autoload/airline/extensions/ale.vim +++ b/autoload/airline/extensions/ale.vim @@ -128,6 +128,10 @@ function! airline#extensions#ale#init(ext) endfunction function! s:ale_refresh() + if !exists('#airline') + " airline disabled + return + endif if get(g:, 'airline_skip_empty_sections', 0) exe ':AirlineRefresh!' endif diff --git a/autoload/airline/extensions/branch.vim b/autoload/airline/extensions/branch.vim index 0a7e5770..fc0d5fa7 100644 --- a/autoload/airline/extensions/branch.vim +++ b/autoload/airline/extensions/branch.vim @@ -325,6 +325,10 @@ endfunction function! s:reset_untracked_cache(shellcmdpost) " shellcmdpost - whether function was called as a result of ShellCmdPost hook + if !exists('#airline') + " airline disabled + return + endif if !g:airline#init#vim_async && !has('nvim') if a:shellcmdpost " Clear cache only if there was no error or the script uses an @@ -346,11 +350,17 @@ function! s:reset_untracked_cache(shellcmdpost) endfor endfunction +function! s:sh_autocmd_handler() + if exists('#airline') + unlet! b:airline_head b:airline_do_mq_check + endif +endfunction + function! airline#extensions#branch#init(ext) call airline#parts#define_function('branch', 'airline#extensions#branch#get_head') - autocmd ShellCmdPost,CmdwinLeave * unlet! b:airline_head b:airline_do_mq_check - autocmd User AirlineBeforeRefresh unlet! b:airline_head b:airline_do_mq_check + autocmd ShellCmdPost,CmdwinLeave * call s:sh_autocmd_handler() + autocmd User AirlineBeforeRefresh call s:sh_autocmd_handler() autocmd BufWritePost * call s:reset_untracked_cache(0) autocmd ShellCmdPost * call s:reset_untracked_cache(1) endfunction diff --git a/autoload/airline/extensions/cursormode.vim b/autoload/airline/extensions/cursormode.vim index 9826ab08..7b257998 100644 --- a/autoload/airline/extensions/cursormode.vim +++ b/autoload/airline/extensions/cursormode.vim @@ -107,6 +107,10 @@ augroup airline#extensions#cursormode augroup END function! airline#extensions#cursormode#activate() + if !exists('#airline') + " airline disabled + return + endif let s:color_map = s:get_color_map() call airline#extensions#cursormode#set() endfunction diff --git a/autoload/airline/extensions/fugitiveline.vim b/autoload/airline/extensions/fugitiveline.vim index 8cfd1391..b6f0149d 100644 --- a/autoload/airline/extensions/fugitiveline.vim +++ b/autoload/airline/extensions/fugitiveline.vim @@ -43,6 +43,12 @@ function! airline#extensions#fugitiveline#bufname() endif endfunction +function! s:sh_autocmd_handler() + if exists('#airline') + unlet! b:fugitive_name + endif +endfunction + function! airline#extensions#fugitiveline#init(ext) if exists("+autochdir") && &autochdir " if 'acd' is set, vim-airline uses the path section, so we need to redefine this here as well @@ -50,6 +56,6 @@ function! airline#extensions#fugitiveline#init(ext) else call airline#parts#define_raw('file', '%<%{airline#extensions#fugitiveline#bufname()}%m') endif - autocmd ShellCmdPost,CmdwinLeave * unlet! b:fugitive_name - autocmd User AirlineBeforeRefresh unlet! b:fugitive_name + autocmd ShellCmdPost,CmdwinLeave * call s:sh_autocmd_handler() + autocmd User AirlineBeforeRefresh call s:sh_autocmd_handler() endfunction diff --git a/autoload/airline/extensions/languageclient.vim b/autoload/airline/extensions/languageclient.vim index 7cc73c89..c6c13f31 100644 --- a/autoload/airline/extensions/languageclient.vim +++ b/autoload/airline/extensions/languageclient.vim @@ -35,6 +35,10 @@ function! s:record_diagnostics(state) endfunction function! s:get_diagnostics() + if !exists('#airline') + " airline disabled + return + endif call LanguageClient#getState(function("s:record_diagnostics")) endfunction diff --git a/autoload/airline/extensions/lsp.vim b/autoload/airline/extensions/lsp.vim index 4553a301..f275ddb2 100644 --- a/autoload/airline/extensions/lsp.vim +++ b/autoload/airline/extensions/lsp.vim @@ -88,6 +88,10 @@ endfunction let s:timer = 0 let s:ignore_time = 0 function! airline#extensions#lsp#update() abort + if !exists('#airline') + " airline disabled + return + endif if reltimefloat(reltime()) - s:ignore_time >= \ get(g:, 'airline#extensions#lsp#progress_skip_time', 0.3) \ || len(s:lsp_progress) == 0 diff --git a/autoload/airline/extensions/po.vim b/autoload/airline/extensions/po.vim index 116625f9..4fc18d80 100644 --- a/autoload/airline/extensions/po.vim +++ b/autoload/airline/extensions/po.vim @@ -43,6 +43,10 @@ function! airline#extensions#po#shorten() endfunction function! airline#extensions#po#on_winenter() + if !exists('#airline') + " airline disabled + return + endif " only reset cache, if the window size changed if get(b:, 'airline_winwidth', 0) != airline#util#winwidth() let b:airline_winwidth = airline#util#winwidth() @@ -51,11 +55,17 @@ function! airline#extensions#po#on_winenter() endif endfunction +function! s:autocmd_handler() + if exists('#airline') + unlet! b:airline_po_stats + endif +endfunction + function! airline#extensions#po#apply(...) if &ft ==# 'po' call airline#extensions#prepend_to_section('z', '%{airline#extensions#po#stats()}') " Also reset the cache variable, if a window has been split, e.g. the winwidth changed - autocmd airline BufWritePost * unlet! b:airline_po_stats + autocmd airline BufWritePost * call s:autocmd_handler() autocmd airline WinEnter * call airline#extensions#po#on_winenter() endif endfunction diff --git a/autoload/airline/extensions/tabline/buflist.vim b/autoload/airline/extensions/tabline/buflist.vim index d0b9db35..f7722011 100644 --- a/autoload/airline/extensions/tabline/buflist.vim +++ b/autoload/airline/extensions/tabline/buflist.vim @@ -8,6 +8,10 @@ function! airline#extensions#tabline#buflist#invalidate() endfunction function! airline#extensions#tabline#buflist#clean() + if !exists('#airline') + " airline disabled + return + endif call airline#extensions#tabline#buflist#invalidate() call airline#extensions#tabline#buffers#invalidate() endfunction diff --git a/autoload/airline/extensions/tabline/ctrlspace.vim b/autoload/airline/extensions/tabline/ctrlspace.vim index 205327d6..fad3efe7 100644 --- a/autoload/airline/extensions/tabline/ctrlspace.vim +++ b/autoload/airline/extensions/tabline/ctrlspace.vim @@ -24,6 +24,9 @@ function! airline#extensions#tabline#ctrlspace#on() endfunction function! airline#extensions#tabline#ctrlspace#invalidate() + if !exists('#airline') + return + endif let s:current_bufnr = -1 let s:current_tabnr = -1 endfunction diff --git a/autoload/airline/extensions/tabline/tabs.vim b/autoload/airline/extensions/tabline/tabs.vim index 9504f34b..67be7799 100644 --- a/autoload/airline/extensions/tabline/tabs.vim +++ b/autoload/airline/extensions/tabline/tabs.vim @@ -22,7 +22,9 @@ function! airline#extensions#tabline#tabs#on() endfunction function! airline#extensions#tabline#tabs#invalidate() - let s:current_bufnr = -1 + if exists('#airline') + let s:current_bufnr = -1 + endif endfunction function! airline#extensions#tabline#tabs#get() diff --git a/autoload/airline/extensions/tabline/tabws.vim b/autoload/airline/extensions/tabline/tabws.vim index e5839b32..130fc322 100644 --- a/autoload/airline/extensions/tabline/tabws.vim +++ b/autoload/airline/extensions/tabline/tabws.vim @@ -24,8 +24,10 @@ function! airline#extensions#tabline#tabws#on() endfunction function! airline#extensions#tabline#tabws#invalidate() - let s:current_bufnr = -1 - let s:current_tabnr = -1 + if exists('#airline') + let s:current_bufnr = -1 + let s:current_tabnr = -1 + endif endfunction function! airline#extensions#tabline#tabws#add_buffer_section(builder, cur_tab, cur_buf, pull_right) diff --git a/autoload/airline/extensions/tabline/xtabline.vim b/autoload/airline/extensions/tabline/xtabline.vim index 46b2be97..d7efa381 100644 --- a/autoload/airline/extensions/tabline/xtabline.vim +++ b/autoload/airline/extensions/tabline/xtabline.vim @@ -44,7 +44,7 @@ function! airline#extensions#tabline#xtabline#init() autocmd TabLeave * call s:Do('leave') autocmd TabClosed * call s:Do('close') - autocmd BufEnter * let g:xtabline_changing_buffer = 0 + autocmd BufEnter * if exists('#airline') | let g:xtabline_changing_buffer = 0 | endif autocmd BufAdd,BufDelete,BufWrite * call airline#extensions#tabline#xtabline#filter_buffers() augroup END @@ -180,6 +180,10 @@ function! airline#extensions#tabline#xtabline#filter_buffers() " 'accepted' is a list of buffer numbers, for quick access. " 'excluded' is a list of buffer numbers, it will be used by Airline to hide buffers. + if !exists('#airline') + " airline disabled + return + endif if !s:xtabline_filtering | return | endif let g:airline#extensions#tabline#exclude_buffers = [] @@ -351,6 +355,10 @@ endfunction """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" function! s:Do(action) + if !exists('#airline') + " airline disabled + return + endif let arg = a:action if !s:state | call s:InitCwds() | return | endif diff --git a/autoload/airline/extensions/whitespace.vim b/autoload/airline/extensions/whitespace.vim index 0bcb51b6..5aff11de 100644 --- a/autoload/airline/extensions/whitespace.vim +++ b/autoload/airline/extensions/whitespace.vim @@ -183,6 +183,10 @@ function! airline#extensions#whitespace#init(...) endfunction function! s:ws_refresh() + if !exists('#airline') + " airline disabled + return + endif if get(b:, 'airline_ws_changedtick', 0) == b:changedtick return endif diff --git a/autoload/airline/util.vim b/autoload/airline/util.vim index a9112a9a..22f01483 100644 --- a/autoload/airline/util.vim +++ b/autoload/airline/util.vim @@ -174,6 +174,10 @@ function! airline#util#has_custom_scm() endfunction function! airline#util#doautocmd(event) + if !exists('#airline') + " airline disabled + return + endif exe printf("silent doautocmd %s User %s", s:nomodeline, a:event) endfunction diff --git a/plugin/airline.vim b/plugin/airline.vim index d8868d8c..f5ce8662 100644 --- a/plugin/airline.vim +++ b/plugin/airline.vim @@ -230,7 +230,7 @@ function! s:airline_refresh(...) endfunction function! s:FocusGainedHandler(timer) - if exists("s:timer") && a:timer == s:timer + if exists("s:timer") && a:timer == s:timer && exists('#airline') augroup airline au FocusGained * call s:on_focus_gained() augroup END