0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.0.1208: 'statusline' drops empty group with highlight change

Problem:    'statusline' drops empty group with highlight change.
Solution:   Do not drop an empty group if it changes highlighting. (Marius
            Gedminas, closes #2228)
This commit is contained in:
Bram Moolenaar
2017-10-22 14:22:16 +02:00
parent 67435d9983
commit 6b89dbb55f
3 changed files with 80 additions and 4 deletions

View File

@@ -3883,6 +3883,8 @@ build_stl_str_hl(
int width;
int itemcnt;
int curitem;
int group_end_userhl;
int group_start_userhl;
int groupitem[STL_MAX_ITEM];
int groupdepth;
struct stl_item
@@ -4023,11 +4025,20 @@ build_stl_str_hl(
if (curitem > groupitem[groupdepth] + 1
&& item[groupitem[groupdepth]].minwid == 0)
{
/* remove group if all items are empty */
/* remove group if all items are empty and highlight group
* doesn't change */
group_start_userhl = group_end_userhl = 0;
for (n = 0; n < groupitem[groupdepth]; n++)
if (item[n].type == Highlight)
group_start_userhl = item[n].minwid;
for (n = groupitem[groupdepth] + 1; n < curitem; n++)
if (item[n].type == Normal || item[n].type == Highlight)
{
if (item[n].type == Normal)
break;
if (n == curitem)
if (item[n].type == Highlight)
group_end_userhl = item[n].minwid;
}
if (n == curitem && group_start_userhl == group_end_userhl)
{
p = t;
l = 0;