Warn if a function is already registered for inactive statusline

closes #2388
This commit is contained in:
Aaron Adams 2021-05-23 12:41:34 +08:00 committed by Christian Brabandt
parent 05bd105cab
commit 98aea41dc2
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09

View File

@ -4,22 +4,32 @@
scriptencoding utf-8 scriptencoding utf-8
let g:airline_statusline_funcrefs = get(g:, 'airline_statusline_funcrefs', []) let g:airline_statusline_funcrefs = get(g:, 'airline_statusline_funcrefs', [])
let g:airline_inactive_funcrefs = get(g:, 'airline_inactive_statusline_funcrefs', [])
let s:sections = ['a','b','c','gutter','x','y','z', 'error', 'warning'] let s:sections = ['a','b','c','gutter','x','y','z', 'error', 'warning']
let s:inactive_funcrefs = []
let s:contexts = {} let s:contexts = {}
let s:core_funcrefs = [ let s:core_funcrefs = [
\ function('airline#extensions#apply'), \ function('airline#extensions#apply'),
\ function('airline#extensions#default#apply') ] \ function('airline#extensions#default#apply') ]
function! airline#add_statusline_func(name) function! airline#add_statusline_func(name, ...)
call airline#add_statusline_funcref(function(a:name)) let warn = get(a:, 1, 1)
call airline#add_statusline_funcref(function(a:name), warn)
endfunction endfunction
function! airline#add_statusline_funcref(function) function! airline#add_inactive_statusline_func(name, ...)
let warn = get(a:, 1, 1)
call airline#add_inactive_statusline_funcref(function(a:name), warn)
endfunction
function! airline#add_statusline_funcref(function, ...)
if index(g:airline_statusline_funcrefs, a:function) >= 0 if index(g:airline_statusline_funcrefs, a:function) >= 0
call airline#util#warning(printf('The airline statusline funcref "%s" has already been added.', string(a:function))) let warn = get(a:, 1, 1)
if warn > 0
call airline#util#warning(printf('The airline statusline funcref "%s" has already been added.', string(a:function)))
endif
return return
endif endif
call add(g:airline_statusline_funcrefs, a:function) call add(g:airline_statusline_funcrefs, a:function)
@ -32,8 +42,15 @@ function! airline#remove_statusline_func(name)
endif endif
endfunction endfunction
function! airline#add_inactive_statusline_func(name) function! airline#add_inactive_statusline_funcref(function, ...)
call add(s:inactive_funcrefs, function(a:name)) if index(g:airline_inactive_funcrefs, a:function) >= 0
let warn = get(a:, 1, 1)
if warn > 0
call airline#util#warning(printf('The airline inactive statusline funcref "%s" has already been added.', string(a:function)))
endif
return
endif
call add(g:airline_inactive_funcrefs, function(a:function))
endfunction endfunction
function! airline#load_theme() function! airline#load_theme()
@ -168,7 +185,7 @@ function! airline#update_statusline_inactive(range)
\ 'left_sep': g:airline_left_alt_sep, \ 'left_sep': g:airline_left_alt_sep,
\ 'right_sep': g:airline_right_alt_sep }, 'keep') \ 'right_sep': g:airline_right_alt_sep }, 'keep')
endif endif
call s:invoke_funcrefs(context, s:inactive_funcrefs) call s:invoke_funcrefs(context, g:airline_inactive_funcrefs)
endfor endfor
endfunction endfunction