aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/buffer.c5
-rw-r--r--src/nvim/testdir/test_statusline.vim6
2 files changed, 9 insertions, 2 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c
index 88e19fd135..8a3d4ad418 100644
--- a/src/nvim/buffer.c
+++ b/src/nvim/buffer.c
@@ -3485,9 +3485,10 @@ int build_stl_str_hl(
int group_start_userhl = 0;
int group_end_userhl = 0;
int n;
- for (n = 0; n < groupitems[groupdepth]; n++) {
+ for (n = groupitems[groupdepth] - 1; n >= 0; n--) {
if (items[n].type == Highlight) {
- group_start_userhl = items[n].minwid;
+ group_start_userhl = group_end_userhl = items[n].minwid;
+ break;
}
}
for (n = groupitems[groupdepth] + 1; n < curitem; n++) {
diff --git a/src/nvim/testdir/test_statusline.vim b/src/nvim/testdir/test_statusline.vim
index de943f2466..eafbecdf69 100644
--- a/src/nvim/testdir/test_statusline.vim
+++ b/src/nvim/testdir/test_statusline.vim
@@ -312,6 +312,12 @@ func Test_statusline()
call assert_equal(sa1, sa3)
call assert_equal(sa1, sa4)
+ let g:a = ''
+ set statusline=%#Error#{%(\ %{g:a}\ %)}
+ call assert_match('^{}\s*$', s:get_statusline())
+ let g:a = 'X'
+ call assert_match('^{ X }\s*$', s:get_statusline())
+
" %%: a percent sign.
set statusline=10%%
call assert_match('^10%\s*$', s:get_statusline())