diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/ex_cmds.lua | 6 | ||||
-rw-r--r-- | src/nvim/ex_docmd.c | 16 | ||||
-rw-r--r-- | src/nvim/screen.c | 2 | ||||
-rw-r--r-- | src/nvim/testdir/test_tabline.vim | 39 |
4 files changed, 54 insertions, 9 deletions
diff --git a/src/nvim/ex_cmds.lua b/src/nvim/ex_cmds.lua index b1739b9e67..8c0d22809f 100644 --- a/src/nvim/ex_cmds.lua +++ b/src/nvim/ex_cmds.lua @@ -2151,6 +2151,12 @@ return { func='ex_redrawstatus', }, { + command='redrawtabline', + flags=bit.bor(TRLBAR, CMDWIN), + addr_type=ADDR_LINES, + func='ex_redrawtabline', + }, + { command='registers', flags=bit.bor(EXTRA, NOTRLCOM, TRLBAR, CMDWIN), addr_type=ADDR_LINES, diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index 081ca8bf8e..af4f34d907 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -7874,6 +7874,22 @@ static void ex_redrawstatus(exarg_T *eap) ui_flush(); } +// ":redrawtabline": force redraw of the tabline +static void ex_redrawtabline(exarg_T *eap FUNC_ATTR_UNUSED) +{ + const int r = RedrawingDisabled; + const int p = p_lz; + + RedrawingDisabled = 0; + p_lz = false; + + draw_tabline(); + + RedrawingDisabled = r; + p_lz = p; + ui_flush(); +} + static void close_redir(void) { if (redir_fd != NULL) { diff --git a/src/nvim/screen.c b/src/nvim/screen.c index ab9f71ed6c..457141f911 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -6650,7 +6650,7 @@ static void recording_mode(int attr) /* * Draw the tab pages line at the top of the Vim window. */ -static void draw_tabline(void) +void draw_tabline(void) { int tabcount = 0; int tabwidth = 0; diff --git a/src/nvim/testdir/test_tabline.vim b/src/nvim/testdir/test_tabline.vim index 6c7a02d650..f24552088b 100644 --- a/src/nvim/testdir/test_tabline.vim +++ b/src/nvim/testdir/test_tabline.vim @@ -1,19 +1,22 @@ -function! TablineWithCaughtError() + +source shared.vim + +func TablineWithCaughtError() let s:func_in_tabline_called = 1 try call eval('unknown expression') catch endtry return '' -endfunction +endfunc -function! TablineWithError() +func TablineWithError() let s:func_in_tabline_called = 1 call eval('unknown expression') return '' -endfunction +endfunc -function! Test_caught_error_in_tabline() +func Test_caught_error_in_tabline() let showtabline_save = &showtabline set showtabline=2 let s:func_in_tabline_called = 0 @@ -24,9 +27,9 @@ function! Test_caught_error_in_tabline() call assert_equal(tabline, &tabline) set tabline= let &showtabline = showtabline_save -endfunction +endfunc -function! Test_tabline_will_be_disabled_with_error() +func Test_tabline_will_be_disabled_with_error() let showtabline_save = &showtabline set showtabline=2 let s:func_in_tabline_called = 0 @@ -40,4 +43,24 @@ function! Test_tabline_will_be_disabled_with_error() call assert_equal('', &tabline) set tabline= let &showtabline = showtabline_save -endfunction +endfunc + +func Test_redrawtabline() + if has('gui') + set guioptions-=e + endif + let showtabline_save = &showtabline + set showtabline=2 + set tabline=%{bufnr('$')} + edit Xtabline1 + edit Xtabline2 + redraw + call assert_match(bufnr('$') . '', Screenline(1)) + au BufAdd * redrawtabline + badd Xtabline3 + call assert_match(bufnr('$') . '', Screenline(1)) + + set tabline= + let &showtabline = showtabline_save + au! Bufadd +endfunc |