From 9fb5b9f7fbfc133c2930371ffdc7d525d465e828 Mon Sep 17 00:00:00 2001 From: Daniel Horner Date: Mon, 6 Jan 2025 23:35:16 -0800 Subject: [PATCH 1/2] Testcase: When tabline is disabled, lightline should not write to it --- test/toggle.vim | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/toggle.vim b/test/toggle.vim index 6f7eb5bd..0204583a 100644 --- a/test/toggle.vim +++ b/test/toggle.vim @@ -49,3 +49,15 @@ function! s:suite.toggle() call s:assert.not_equals(&statusline, '') call s:assert.not_equals(&tabline, '') endfunction + +function! s:suite.notab_toggle() + let g:lightline = { 'enable': { 'tabline': 0 } } + call lightline#init() + call lightline#toggle() + set tabline=ASDF + call lightline#toggle() + let check_tabline = &tabline + set tabline= + call s:assert.equals(check_tabline, 'ASDF') +endfunction + From 94b4844d7a8d41b60e5f16f6f93b72e3cba80476 Mon Sep 17 00:00:00 2001 From: Daniel Horner Date: Mon, 6 Jan 2025 23:04:03 -0800 Subject: [PATCH 2/2] Regularize handling of saved tabline and statusline - Save tabline and statusline during activation only when lightline will overwrite them - Restore saved tabline and statusline during deactivation --- autoload/lightline.vim | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/autoload/lightline.vim b/autoload/lightline.vim index ab736ca9..829525fa 100644 --- a/autoload/lightline.vim +++ b/autoload/lightline.vim @@ -66,7 +66,14 @@ function! lightline#enable() abort endfunction function! lightline#disable() abort - let [&statusline, &tabline] = [get(s:, '_statusline', ''), get(s:, '_tabline', '')] + if exists('s:_statusline') + let &statusline = s:_statusline + unlet s:_statusline + endif + if exists("s:_tabline") + let &tabline = s:_tabline + unlet s:_tabline + endif for t in range(1, tabpagenr('$')) for n in range(1, tabpagewinnr(t, '$')) call settabwinvar(t, n, '&statusline', '') @@ -172,16 +179,19 @@ function! lightline#init() abort break endif endfor - if !exists('s:_statusline') + if s:lightline.enable.statusline && !exists('s:_statusline') let s:_statusline = &statusline endif - if !exists('s:_tabline') - let s:_tabline = &tabline - endif if s:lightline.enable.tabline + if !exists('s:_tabline') + let s:_tabline = &tabline + endif set tabline=%!lightline#tabline() else - let &tabline = get(s:, '_tabline', '') + if exists("s:_tabline") + let &tabline = s:_tabline + unlet s:_tabline + endif endif for f in values(s:lightline.component_function) silent! call call(f, [])