diff options
-rw-r--r-- | src/buffer.c | 18 | ||||
-rw-r--r-- | src/testdir/test_tabline.vim | 26 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 36 insertions, 10 deletions
diff --git a/src/buffer.c b/src/buffer.c index 330b3b98f6..14eac92b97 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -502,7 +502,7 @@ can_unload_buffer(buf_T *buf) * It can be: * 0 buffer becomes hidden * DOBUF_UNLOAD buffer is unloaded - * DOBUF_DELETE buffer is unloaded and removed from buffer list + * DOBUF_DEL buffer is unloaded and removed from buffer list * DOBUF_WIPE buffer is unloaded and really deleted * DOBUF_WIPE_REUSE idem, and add to buf_reuse list * When doing all but the first one on the current buffer, the caller should @@ -5108,14 +5108,6 @@ build_stl_str_hl( STRMOVE(s + 1, p); *s = '<'; - // Fill up for half a double-wide character. - while (++width < maxwidth) - { - s = s + STRLEN(s); - MB_CHAR2BYTES(fillchar, s); - *s = NUL; - } - --n; // count the '<' for (; l < itemcnt; l++) { @@ -5124,6 +5116,14 @@ build_stl_str_hl( else stl_items[l].stl_start = s; } + + // Fill up for half a double-wide character. + while (++width < maxwidth) + { + s = s + STRLEN(s); + MB_CHAR2BYTES(fillchar, s); + *s = NUL; + } } width = maxwidth; } diff --git a/src/testdir/test_tabline.vim b/src/testdir/test_tabline.vim index 09adf2f68f..3cba2aab47 100644 --- a/src/testdir/test_tabline.vim +++ b/src/testdir/test_tabline.vim @@ -133,7 +133,7 @@ func Test_tabline_empty_group() tabnew redraw! - tabclose + bw! set tabline= endfunc @@ -202,4 +202,28 @@ func Test_tabline_showcmd() call StopVimInTerminal(buf) endfunc +func TruncTabLine() + return '%1T口口%2Ta' .. repeat('b', &columns - 4) .. '%999X%#TabLine#c' +endfunc + +" Test 'tabline' with truncated double-width label at the start. +func Test_tabline_truncated_double_width() + tabnew + redraw + call assert_match('X$', Screenline(1)) + let attr_TabLineFill = screenattr(1, &columns - 1) + let attr_TabLine = screenattr(1, &columns) + call assert_notequal(attr_TabLine, attr_TabLineFill) + + set tabline=%!TruncTabLine() + redraw + call assert_equal('<a' .. repeat('b', &columns - 4) .. 'c', Screenline(1)) + call assert_equal(attr_TabLineFill, screenattr(1, &columns - 2)) + call assert_equal(attr_TabLine, screenattr(1, &columns - 1)) + call assert_equal(attr_TabLine, screenattr(1, &columns)) + + bw! + set tabline= +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index b21e5a6a86..876e20c274 100644 --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1672, +/**/ 1671, /**/ 1670, |