diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/screen.c | 8 | ||||
-rw-r--r-- | src/testdir/test_alot.vim | 1 | ||||
-rw-r--r-- | src/testdir/test_tabline.vim | 43 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 50 insertions, 4 deletions
diff --git a/src/screen.c b/src/screen.c index dc5d175d8..8044079b5 100644 --- a/src/screen.c +++ b/src/screen.c @@ -10266,16 +10266,16 @@ draw_tabline(void) /* Use the 'tabline' option if it's set. */ if (*p_tal != NUL) { - int save_called_emsg = called_emsg; + int saved_did_emsg = did_emsg; /* Check for an error. If there is one we would loop in redrawing the * screen. Avoid that by making 'tabline' empty. */ - called_emsg = FALSE; + did_emsg = FALSE; win_redr_custom(NULL, FALSE); - if (called_emsg) + if (did_emsg) set_string_option_direct((char_u *)"tabline", -1, (char_u *)"", OPT_FREE, SID_ERROR); - called_emsg |= save_called_emsg; + did_emsg |= saved_did_emsg; } else #endif diff --git a/src/testdir/test_alot.vim b/src/testdir/test_alot.vim index 1eb76a6de..7f9a1a78f 100644 --- a/src/testdir/test_alot.vim +++ b/src/testdir/test_alot.vim @@ -24,6 +24,7 @@ source test_set.vim source test_sort.vim source test_statusline.vim source test_syn_attr.vim +source test_tabline.vim source test_timers.vim source test_undolevels.vim source test_unlet.vim diff --git a/src/testdir/test_tabline.vim b/src/testdir/test_tabline.vim new file mode 100644 index 000000000..6c7a02d65 --- /dev/null +++ b/src/testdir/test_tabline.vim @@ -0,0 +1,43 @@ +function! TablineWithCaughtError() + let s:func_in_tabline_called = 1 + try + call eval('unknown expression') + catch + endtry + return '' +endfunction + +function! TablineWithError() + let s:func_in_tabline_called = 1 + call eval('unknown expression') + return '' +endfunction + +function! Test_caught_error_in_tabline() + let showtabline_save = &showtabline + set showtabline=2 + let s:func_in_tabline_called = 0 + let tabline = '%{TablineWithCaughtError()}' + let &tabline = tabline + redraw! + call assert_true(s:func_in_tabline_called) + call assert_equal(tabline, &tabline) + set tabline= + let &showtabline = showtabline_save +endfunction + +function! Test_tabline_will_be_disabled_with_error() + let showtabline_save = &showtabline + set showtabline=2 + let s:func_in_tabline_called = 0 + let tabline = '%{TablineWithError()}' + try + let &tabline = tabline + redraw! + catch + endtry + call assert_true(s:func_in_tabline_called) + call assert_equal('', &tabline) + set tabline= + let &showtabline = showtabline_save +endfunction diff --git a/src/version.c b/src/version.c index 4f8bc2ef5..0713142b0 100644 --- a/src/version.c +++ b/src/version.c @@ -749,6 +749,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1723, +/**/ 1722, /**/ 1721, |