patch 9.2.0488: statusline: status line highlight blends into adjacent vsep cells
Commit:
https://github.com/vim/vim/commit/b467b56ef064c952e5014fcd8b0888ddbc8c8a56
Author: Hirohito Higashi <
h.eas...@gmail.com>
Date: Fri May 15 16:50:27 2026 +0000
patch 9.2.0488: statusline: status line highlight blends into adjacent vsep cells
Problem: When two windows are placed side by side with vsplit and
their status lines are connected (the cell between them
is drawn with the 'stl' / 'stlnc' fillchar, not the
'vert' character), that connecting cell still uses the
VertSplit highlight. The status line bar therefore
looks broken at the separator column, and any custom
edge highlight set in 'statusline' (%#XX# / %N*) is cut
off there.
Solution: Make that connecting cell take the highlight from the
neighbouring status line edge instead of VertSplit:
- Next to the current window, use the current
window's edge highlight, so the StatusLine bar (and
any %#... at the edge) extends into the column
without a seam.
- Between two non-current windows whose status
fillchar is a space, use the left window's
right-edge highlight, so the StatusLineNC bar is
continuous across the column too.
Cells drawn with the 'vert' character (the two windows
do not share a status line) keep the VertSplit
highlight as before.
Add Test_statusline_vsep_borrow_hl with two layouts
(NC | cur | NC | NC and NC | NC | cur | NC) so all
three cases above are covered.
closes: #20182
Co-Authored-By: Claude Opus 4.7 (1M context) <
nor...@anthropic.com>
Signed-off-by: Hirohito Higashi <
h.eas...@gmail.com>
Signed-off-by: Christian Brabandt <
c...@256bit.org>
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 6c3888508..c74f95e80 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt* For Vim version 9.2. Last change: 2026 May 08
+*syntax.txt* For Vim version 9.2. Last change: 2026 May 15
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -6115,9 +6115,14 @@ SpellRare Word that is recognized by the spellchecker as one that is
hardly ever used. |spell|
This will be combined with the highlighting used otherwise.
*hl-StatusLine*
-StatusLine Status line of current window.
+StatusLine Status line of current window. The highlight at the status
+ line's edge (StatusLine, or any %#... / %N* in 'statusline')
+ also extends into the adjacent vertical separator cell when
+ the status lines are connected (no 'vert' character drawn).
*hl-StatusLineNC*
-StatusLineNC status lines of not-current windows.
+StatusLineNC status lines of not-current windows. Like |hl-StatusLine|,
+ the edge highlight also extends into the adjacent vertical
+ separator cell.
Note: If this is equal to "StatusLine", Vim will use "^^^" in
the status line of the current window.
*hl-StatusLineTerm*
diff --git a/src/drawscreen.c b/src/drawscreen.c
index 94b616214..c110041fe 100644
--- a/src/drawscreen.c
+++ b/src/drawscreen.c
@@ -69,6 +69,7 @@ static void win_update(win_T *wp);
#ifdef FEAT_STL_OPT
static void redraw_custom_statusline(win_T *wp);
#endif
+static void borrow_stl_vsep_hl(void);
#if defined(FEAT_SEARCH_EXTRA) || defined(FEAT_CLIPBOARD)
static int did_update_one_window;
#endif
@@ -386,6 +387,8 @@ update_screen(int type_arg)
draw_vsep_win(wp, 0);
}
+ borrow_stl_vsep_hl();
+
// Reset b_mod_set flags. Going through all windows is probably faster
// than going through all buffers (there could be many buffers).
FOR_ALL_WINDOWS(wp)
@@ -630,6 +633,83 @@ win_redr_status(win_T *wp, int ignore_pum UNUSED)
busy = FALSE;
}
+/*
+ * Borrow status line edge highlight to adjacent vsep cells.
+ * - When the pair involves curwin: borrow curwin's edge attr so custom
+ * statusline highlights flow into the vsep cell.
+ * - When both windows are non-current: borrow the left window's right-edge
+ * attr only if the status fillchar is a space, so StatusLineNC blends
+ * over the join without changing visible characters.
+ * - Cells where the vsep char is drawn (stl_connected == FALSE) are left
+ * untouched so the VertSplit highlight is preserved.
+ */
+ static void
+borrow_stl_vsep_hl(void)
+{
+ win_T *left = NULL;
+ win_T *right = NULL;
+
+ if (!redrawing())
+ return;
+
+ FOR_ALL_WINDOWS(left)
+ {
+ if (left->w_status_height == 0 || left->w_vsep_width == 0)
+ continue;
+ if (!stl_connected(left))
+ continue;
+
+ // Find a right neighbour whose status line rows overlap.
+ win_T *neighbour = NULL;
+ int start = 0;
+ int end = 0;
+
+ FOR_ALL_WINDOWS(right)
+ {
+ if (right == left || right->w_status_height == 0)
+ continue;
+ if (right->w_wincol != W_ENDCOL(left) + 1)
+ continue;
+ int l_stl_row = W_WINROW(left) + left->w_height;
+ int r_stl_row = W_WINROW(right) + right->w_height;
+
+ start = l_stl_row > r_stl_row ? l_stl_row : r_stl_row;
+ end = l_stl_row + left->w_status_height
+ < r_stl_row + right->w_status_height
+ ? l_stl_row + left->w_status_height
+ : r_stl_row + right->w_status_height;
+ if (start < end)
+ {
+ neighbour = right;
+ break;
+ }
+ }
+ if (neighbour == NULL)
+ continue;
+
+ // For non-current pairs only borrow when the status fillchar is a
+ // space; otherwise the visible character would be repainted with a
+ // foreign highlight.
+ int hl;
+ if (left != curwin && neighbour != curwin
+ && fillchar_status(&hl, left) != ' ')
+ continue;
+
+ // Source: prefer curwin's side; otherwise left window's right edge.
+ int dst_col = W_ENDCOL(left);
+ int src_col = (neighbour == curwin)
+ ? neighbour->w_wincol : W_ENDCOL(left) - 1;
+
+ for (int r = start; r < end; r++)
+ {
+ unsigned dst_off = LineOffset[r] + dst_col;
+
+ ScreenAttrs[dst_off] = ScreenAttrs[LineOffset[r] + src_col];
+ screen_char(dst_off, r, dst_col);
+ }
+ }
+}
+
#ifdef FEAT_STL_OPT
/*
* Redraw the status line according to 'statusline' and take care of any
@@ -3434,6 +3514,7 @@ redraw_statuslines(void)
if (ret)
pop_highlight_overrides();
}
+ borrow_stl_vsep_hl();
if (redraw_tabline)
draw_tabline();
diff --git a/src/testdir/dumps/Test_VertSplitNC_2.dump b/src/testdir/dumps/Test_VertSplitNC_2.dump
index c0da105f9..8afa526ac 100644
--- a/src/testdir/dumps/Test_VertSplitNC_2.dump
+++ b/src/testdir/dumps/Test_VertSplitNC_2.dump
@@ -8,5 +8,5 @@
|V|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @8||+0#40ff4011&|V+0#0000000&|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @7||+0#40ff4011&|V+0#0000000&|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @7
|V|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @8||+0#40ff4011&|V+0#0000000&|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @7||+0#40ff4011&|V+0#0000000&|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @7
|V|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @8||+0#40ff4011&|V+0#0000000&|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @7||+0#40ff4011&|V+0#0000000&|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @7
-|<+0#0000001#a8a8a8255|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p| |<+0#ffffff16#0000e05| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p| |<+0#0000001#a8a8a8255| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p
+|<+0#0000001#a8a8a8255|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p| +0#ffffff16#0000e05|<| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p| |<+0#0000001#a8a8a8255| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p
| +0#0000000#ffffff0@74
diff --git a/src/testdir/dumps/Test_VertSplitNC_3.dump b/src/testdir/dumps/Test_VertSplitNC_3.dump
index 0922ede59..614de055e 100644
--- a/src/testdir/dumps/Test_VertSplitNC_3.dump
+++ b/src/testdir/dumps/Test_VertSplitNC_3.dump
@@ -8,5 +8,5 @@
|V|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @8||+0#6c6c6c255&|V+0#0000000&|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @7||+0#40ff4011&|V+0#0000000&|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @7
|V|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @8||+0#6c6c6c255&|V+0#0000000&|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @7||+0#40ff4011&|V+0#0000000&|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @7
|V|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @8||+0#6c6c6c255&|V+0#0000000&|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @7||+0#40ff4011&|V+0#0000000&|e|r|t|S|p|l|i|t|N|C| |t|e|s|t| @7
-|<+0#0000001#a8a8a8255|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p| |<| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p| |<+0#ffffff16#0000e05| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p
+|<+0#0000001#a8a8a8255|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p| |<| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p| +0#ffffff16#0000e05|<| |N|a|m|e|]| |[|+|]| |1|,|1| @5|T|o|p
| +0#0000000#ffffff0@74
diff --git a/src/testdir/dumps/Test_VertSplitNC_whl2.dump b/src/testdir/dumps/Test_VertSplitNC_whl2.dump
index 9701df25b..825775e59 100644
--- a/src/testdir/dumps/Test_VertSplitNC_whl2.dump
+++ b/src/testdir/dumps/Test_VertSplitNC_whl2.dump
@@ -8,5 +8,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| @9|0|,|0|-|1| @9|A|l@1| |[+3&&|N|o| |N|a|m|e|]| @9|0|,|0|-|1| @9|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| @9|0|,|0|-|1| @9|A|l@1| +3&&|[|N|o| |N|a|m|e|]| @9|0|,|0|-|1| @9|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_VertSplitNC_winbar_1.dump b/src/testdir/dumps/Test_VertSplitNC_winbar_1.dump
index ce880fa30..4fbee462d 100644
--- a/src/testdir/dumps/Test_VertSplitNC_winbar_1.dump
+++ b/src/testdir/dumps/Test_VertSplitNC_winbar_1.dump
@@ -8,5 +8,5 @@
|w|i|n|b|a|r| |t|e|s|t| @25||+0#40ff4011&|w+0#0000000&|i|n|b|a|r| |t|e|s|t| @25
|w|i|n|b|a|r| |t|e|s|t| @25||+0#40ff4011&|w+0#0000000&|i|n|b|a|r| |t|e|s|t| @25
|w|i|n|b|a|r| |t|e|s|t| @25||+0#40ff4011&|w+0#0000000&|i|n|b|a|r| |t|e|s|t| @25
-|[+0#0000001#a8a8a8255|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p| |[+0#ffffff16#0000e05|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p
+|[+0#0000001#a8a8a8255|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p| +0#ffffff16#0000e05|[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|T|o|p
| +0#0000000#ffffff0@74
diff --git a/src/testdir/dumps/Test_diff_anchors_07.dump b/src/testdir/dumps/Test_diff_anchors_07.dump
index 310fa6544..eda58e9fd 100644
--- a/src/testdir/dumps/Test_diff_anchors_07.dump
+++ b/src/testdir/dumps/Test_diff_anchors_07.dump
@@ -16,5 +16,5 @@
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@22||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|2+0#0000000#5fd7ff255| @20||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@21
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@22||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|3+0#0000000#5fd7ff255| @20||+1&#ffffff0| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@21
|~+0&#ffffff0| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
-|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|1|,|1| @5|A|l@1| |X+3&&|d|i|f|i|l|e|3| @3|1|,|1| @5|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|1|,|1| @5|A|l@1| +3&&|X|d|i|f|i|l|e|3| @3|1|,|1| @5|A|l@1
|:+0&&> @73
diff --git a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_01.dump b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_01.dump
index a0ffa9f30..5616d5f37 100644
--- a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_01.dump
+++ b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_01.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+3&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| +3&&|X|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1
|:+0&&> @73
diff --git a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_02.dump b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_02.dump
index 9e5c9dc94..3d66db8d6 100644
--- a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_02.dump
+++ b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_02.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| @10|3|,|1| @11|B|o|t| |X+3&&|d|i|f|i|l|e|2| @10|3|,|1| @11|B|o|t
+|X+1#0000000&|d|i|f|i|l|e|1| @10|3|,|1| @11|B|o|t| +3&&|X|d|i|f|i|l|e|2| @10|3|,|1| @11|B|o|t
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_03.dump b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_03.dump
index 76f861768..fdab54144 100644
--- a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_03.dump
+++ b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_03.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| @10|3|,|1| @11|B|o|t| |X+3&&|d|i|f|i|l|e|2| @10|3|,|1| @11|B|o|t
+|X+1#0000000&|d|i|f|i|l|e|1| @10|3|,|1| @11|B|o|t| +3&&|X|d|i|f|i|l|e|2| @10|3|,|1| @11|B|o|t
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_04.dump b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_04.dump
index 1c069d8de..705446a3d 100644
--- a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_04.dump
+++ b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_04.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| @10|3|,|1| @11|B|o|t| |X+3&&|d|i|f|i|l|e|2| @10|3|,|1| @11|B|o|t
+|X+1#0000000&|d|i|f|i|l|e|1| @10|3|,|1| @11|B|o|t| +3&&|X|d|i|f|i|l|e|2| @10|3|,|1| @11|B|o|t
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_05.dump b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_05.dump
index 87bbc572e..5daf6573d 100644
--- a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_05.dump
+++ b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_05.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+3&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| +3&&|X|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1
|:+0&&> @73
diff --git a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_06.dump b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_06.dump
index 1f5917cf4..6cae25e1d 100644
--- a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_06.dump
+++ b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_06.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| @10|3|,|1| @11|B|o|t| |X+3&&|d|i|f|i|l|e|2| @10|3|,|1| @11|B|o|t
+|X+1#0000000&|d|i|f|i|l|e|1| @10|3|,|1| @11|B|o|t| +3&&|X|d|i|f|i|l|e|2| @10|3|,|1| @11|B|o|t
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_07.dump b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_07.dump
index 1c069d8de..705446a3d 100644
--- a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_07.dump
+++ b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_07.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| @10|3|,|1| @11|B|o|t| |X+3&&|d|i|f|i|l|e|2| @10|3|,|1| @11|B|o|t
+|X+1#0000000&|d|i|f|i|l|e|1| @10|3|,|1| @11|B|o|t| +3&&|X|d|i|f|i|l|e|2| @10|3|,|1| @11|B|o|t
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_08.dump b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_08.dump
index aadabe077..a2ade506e 100644
--- a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_08.dump
+++ b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_08.dump
@@ -16,5 +16,5 @@
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
-|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|1|,|1| @5|A|l@1| |X+3&&|d|i|f|i|l|e|3| @3|1|,|1| @5|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|1|,|1| @5|A|l@1| +3&&|X|d|i|f|i|l|e|3| @3|1|,|1| @5|A|l@1
|:+0&&> @73
diff --git a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_13.dump b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_13.dump
index 99cb0ded0..af9992427 100644
--- a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_13.dump
+++ b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_13.dump
@@ -16,5 +16,5 @@
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
-|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|1|,|1| @5|A|l@1| |X+3&&|d|i|f|i|l|e|3| @3|1|,|1| @5|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|1|,|1| @5|A|l@1| +3&&|X|d|i|f|i|l|e|3| @3|1|,|1| @5|A|l@1
|:+0&&> @73
diff --git a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_14.dump b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_14.dump
index 3c35c7741..c6a418a4b 100644
--- a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_14.dump
+++ b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_14.dump
@@ -16,5 +16,5 @@
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
-|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|5|,|1| @5|B|o|t| |X+3&&|d|i|f|i|l|e|3| @3|5|,|1| @5|B|o|t
+|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|5|,|1| @5|B|o|t| +3&&|X|d|i|f|i|l|e|3| @3|5|,|1| @5|B|o|t
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_15.dump b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_15.dump
index 432cadb94..cf6bce8d0 100644
--- a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_15.dump
+++ b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_15.dump
@@ -16,5 +16,5 @@
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
-|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|5|,|1| @5|B|o|t| |X+3&&|d|i|f|i|l|e|3| @3|5|,|1| @5|B|o|t
+|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|5|,|1| @5|B|o|t| +3&&|X|d|i|f|i|l|e|3| @3|5|,|1| @5|B|o|t
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_16.dump b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_16.dump
index b95c2661a..4bff316f4 100644
--- a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_16.dump
+++ b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_16.dump
@@ -16,5 +16,5 @@
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
-|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|5|,|1| @5|B|o|t| |X+3&&|d|i|f|i|l|e|3| @3|5|,|1| @5|B|o|t
+|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|5|,|1| @5|B|o|t| +3&&|X|d|i|f|i|l|e|3| @3|5|,|1| @5|B|o|t
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_17.dump b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_17.dump
index 7daaf7a9a..949693315 100644
--- a/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_17.dump
+++ b/src/testdir/dumps/Test_diff_anchors_scrollbind_topline_17.dump
@@ -16,5 +16,5 @@
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
-|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|5|,|1| @5|B|o|t| |X+3&&|d|i|f|i|l|e|3| @3|5|,|1| @5|B|o|t
+|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|1| @5|A|l@1| |X|d|i|f|i|l|e|2| @3|5|,|1| @5|B|o|t| +3&&|X|d|i|f|i|l|e|3| @3|5|,|1| @5|B|o|t
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_get_put_linematch_16.dump b/src/testdir/dumps/Test_diff_get_put_linematch_16.dump
index d4649d205..eeb984d68 100644
--- a/src/testdir/dumps/Test_diff_get_put_linematch_16.dump
+++ b/src/testdir/dumps/Test_diff_get_put_linematch_16.dump
@@ -16,5 +16,5 @@
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|D+0#0000000#5fd7ff255|E|F| @31
| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e|t|h|i|n|g| @25||+1&&| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e|t|h|i|n|g| @25
|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| |[|+|]| @6|9|,|1| @11|A|l@1| |X+3&&|d|i|f|i|l|e|2| @10|6|,|1| @11|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| |[|+|]| @6|9|,|1| @11|A|l@1| +3&&|X|d|i|f|i|l|e|2| @10|6|,|1| @11|A|l@1
|:+0&&|d|i|f@1|p|u|t| @66
diff --git a/src/testdir/dumps/Test_diff_get_put_linematch_17.dump b/src/testdir/dumps/Test_diff_get_put_linematch_17.dump
index 69737fa58..b8426a39a 100644
--- a/src/testdir/dumps/Test_diff_get_put_linematch_17.dump
+++ b/src/testdir/dumps/Test_diff_get_put_linematch_17.dump
@@ -16,5 +16,5 @@
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|D+0#0000000#5fd7ff255|E|F| @31
| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e|t|h|i|n|g| @25||+1&&| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e|t|h|i|n|g| @25
|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| |[|+|]| @6|9|,|1| @11|A|l@1| |X+3&&|d|i|f|i|l|e|2| @10|8|,|1| @11|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| |[|+|]| @6|9|,|1| @11|A|l@1| +3&&|X|d|i|f|i|l|e|2| @10|8|,|1| @11|A|l@1
|:+0&&|d|i|f@1|p|u|t| @66
diff --git a/src/testdir/dumps/Test_diff_get_put_linematch_18.dump b/src/testdir/dumps/Test_diff_get_put_linematch_18.dump
index 49ab24387..2b94da955 100644
--- a/src/testdir/dumps/Test_diff_get_put_linematch_18.dump
+++ b/src/testdir/dumps/Test_diff_get_put_linematch_18.dump
@@ -16,5 +16,5 @@
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|D+0#0000000#5fd7ff255|E|F| @31
| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e|t|h|i|n|g| @25||+1&&| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e|t|h|i|n|g| @25
|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| |[|+|]| @6|6|,|1| @11|A|l@1| |X+3&&|d|i|f|i|l|e|2| @10|9|,|1| @11|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| |[|+|]| @6|6|,|1| @11|A|l@1| +3&&|X|d|i|f|i|l|e|2| @10|9|,|1| @11|A|l@1
|:+0&&|d|i|f@1|p|u|t| @66
diff --git a/src/testdir/dumps/Test_diff_get_put_linematch_19.dump b/src/testdir/dumps/Test_diff_get_put_linematch_19.dump
index cbea3e560..8fdd9f608 100644
--- a/src/testdir/dumps/Test_diff_get_put_linematch_19.dump
+++ b/src/testdir/dumps/Test_diff_get_put_linematch_19.dump
@@ -16,5 +16,5 @@
| +0#0000e05#a8a8a8255@1|D+0#0000000#ffffff0|E|F| @31||+1&&| +0#0000e05#a8a8a8255@1|D+0#0000000#ffffff0|E|F| @31
| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|o|m|e|t|h|i|n|g| @25||+1&&| +0#0000e05#a8a8a8255@1>s+0#0000000#ffffff0|o|m|e|t|h|i|n|g| @25
|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| |[|+|]| @6|1|3|,|1| @10|A|l@1| |X+3&&|d|i|f|i|l|e|2| @10|1|7|,|1| @10|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| |[|+|]| @6|1|3|,|1| @10|A|l@1| +3&&|X|d|i|f|i|l|e|2| @10|1|7|,|1| @10|A|l@1
|:+0&&|d|i|f@1|p|u|t| @66
diff --git a/src/testdir/dumps/Test_diff_get_put_linematch_3.dump b/src/testdir/dumps/Test_diff_get_put_linematch_3.dump
index cb62a9ef7..ce905130e 100644
--- a/src/testdir/dumps/Test_diff_get_put_linematch_3.dump
+++ b/src/testdir/dumps/Test_diff_get_put_linematch_3.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| @10|5|,|1| @11|A|l@1| |X+3&&|d|i|f|i|l|e|2| |[|+|]| @6|5|,|1| @11|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| @10|5|,|1| @11|A|l@1| +3&&|X|d|i|f|i|l|e|2| |[|+|]| @6|5|,|1| @11|A|l@1
|:+0&&|5|,|1|0|d|i|f@1|g|e|t| @62
diff --git a/src/testdir/dumps/Test_diff_get_put_linematch_4.dump b/src/testdir/dumps/Test_diff_get_put_linematch_4.dump
index 16c2cd874..c6ea6ddc8 100644
--- a/src/testdir/dumps/Test_diff_get_put_linematch_4.dump
+++ b/src/testdir/dumps/Test_diff_get_put_linematch_4.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| @10|5|,|1| @11|A|l@1| |X+3&&|d|i|f|i|l|e|2| |[|+|]| @6|5|,|1| @11|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| @10|5|,|1| @11|A|l@1| +3&&|X|d|i|f|i|l|e|2| |[|+|]| @6|5|,|1| @11|A|l@1
|:+0&&|4|,|1|7|d|i|f@1|g|e|t| @62
diff --git a/src/testdir/dumps/Test_diff_inline_multiline_07.dump b/src/testdir/dumps/Test_diff_inline_multiline_07.dump
index de58a6ac3..b76d549b2 100644
--- a/src/testdir/dumps/Test_diff_inline_multiline_07.dump
+++ b/src/testdir/dumps/Test_diff_inline_multiline_07.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+3&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| +3&&|X|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1
|:+0&&> @73
diff --git a/src/testdir/dumps/Test_diff_inline_multiline_08.dump b/src/testdir/dumps/Test_diff_inline_multiline_08.dump
index 901ea4699..51c35f5af 100644
--- a/src/testdir/dumps/Test_diff_inline_multiline_08.dump
+++ b/src/testdir/dumps/Test_diff_inline_multiline_08.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+3&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| +3&&|X|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1
|:+0&&> @73
diff --git a/src/testdir/dumps/Test_diff_inline_multiline_09.dump b/src/testdir/dumps/Test_diff_inline_multiline_09.dump
index 91f59cda2..dc36ed8ff 100644
--- a/src/testdir/dumps/Test_diff_inline_multiline_09.dump
+++ b/src/testdir/dumps/Test_diff_inline_multiline_09.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+3&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| +3&&|X|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1
|:+0&&> @73
diff --git a/src/testdir/dumps/Test_diff_inline_multiline_10.dump b/src/testdir/dumps/Test_diff_inline_multiline_10.dump
index 212c24797..ad86c4684 100644
--- a/src/testdir/dumps/Test_diff_inline_multiline_10.dump
+++ b/src/testdir/dumps/Test_diff_inline_multiline_10.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|X+1#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| |X+3&&|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| @10|1|,|1| @11|A|l@1| +3&&|X|d|i|f|i|l|e|2| @10|1|,|1| @11|A|l@1
|:+0&&> @73
diff --git a/src/testdir/dumps/Test_diff_rnu_01.dump b/src/testdir/dumps/Test_diff_rnu_01.dump
index dc7c0f910..d51d66674 100644
--- a/src/testdir/dumps/Test_diff_rnu_01.dump
+++ b/src/testdir/dumps/Test_diff_rnu_01.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_rnu_02.dump b/src/testdir/dumps/Test_diff_rnu_02.dump
index 32ffc4003..d33a2ee0a 100644
--- a/src/testdir/dumps/Test_diff_rnu_02.dump
+++ b/src/testdir/dumps/Test_diff_rnu_02.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_rnu_03.dump b/src/testdir/dumps/Test_diff_rnu_03.dump
index 8c8b93844..0d29b8408 100644
--- a/src/testdir/dumps/Test_diff_rnu_03.dump
+++ b/src/testdir/dumps/Test_diff_rnu_03.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_scroll_1.dump b/src/testdir/dumps/Test_diff_scroll_1.dump
index ee53c35bb..971346101 100644
--- a/src/testdir/dumps/Test_diff_scroll_1.dump
+++ b/src/testdir/dumps/Test_diff_scroll_1.dump
@@ -8,5 +8,5 @@
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|d+0#0000000#5fd7ff255|o|l|o|r| @29
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|s+0#0000000#5fd7ff255|i|t| @31
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|a+0#0000000#5fd7ff255|m|e|t|,| @29
-|X+1&#ffffff0|l|e|f|t| @13|5|,|0|-|1| @9|T|o|p| |X+3&&|r|i|g|h|t| @12|5|,|0|-|1| @9|T|o|p
+|X+1&#ffffff0|l|e|f|t| @13|5|,|0|-|1| @9|T|o|p| +3&&|X|r|i|g|h|t| @12|5|,|0|-|1| @9|T|o|p
|"+0&&|X|r|i|g|h|t|"| |3@1|L|,| |2|6|3|B| @56
diff --git a/src/testdir/dumps/Test_diff_scroll_2.dump b/src/testdir/dumps/Test_diff_scroll_2.dump
index 4cac386a6..d6cd1b9c9 100644
--- a/src/testdir/dumps/Test_diff_scroll_2.dump
+++ b/src/testdir/dumps/Test_diff_scroll_2.dump
@@ -8,5 +8,5 @@
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|d+0#0000000#5fd7ff255|o|l|o|r| @29
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|s+0#0000000#5fd7ff255|i|t| @31
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|a+0#0000000#5fd7ff255|m|e|t|,| @29
-|X+1&#ffffff0|l|e|f|t| @13|6|,|1| @11|T|o|p| |X+3&&|r|i|g|h|t| @12|6|,|1| @11|T|o|p
+|X+1&#ffffff0|l|e|f|t| @13|6|,|1| @11|T|o|p| +3&&|X|r|i|g|h|t| @12|6|,|1| @11|T|o|p
|"+0&&|X|r|i|g|h|t|"| |3@1|L|,| |2|6|3|B| @56
diff --git a/src/testdir/dumps/Test_diff_scroll_change_03.dump b/src/testdir/dumps/Test_diff_scroll_change_03.dump
index 6d0c8600f..5a4088975 100644
--- a/src/testdir/dumps/Test_diff_scroll_change_03.dump
+++ b/src/testdir/dumps/Test_diff_scroll_change_03.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|7|,|3| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|5|,|3| @10|B|o|t
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|7|,|3| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|1|5|,|3| @10|B|o|t
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_topline_1.dump b/src/testdir/dumps/Test_diff_topline_1.dump
index 1d4c9145f..5b5122621 100644
--- a/src/testdir/dumps/Test_diff_topline_1.dump
+++ b/src/testdir/dumps/Test_diff_topline_1.dump
@@ -16,5 +16,5 @@
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|2+0#0000000#5fd7ff255|4| @32
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|2+0#0000000#5fd7ff255|5| @32
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|2+0#0000000#5fd7ff255|6| @32
-|[+1&#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @5|1|0|,|1| @10|4|2|%| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|2|1|,|1| @10|1|9|%
+|[+1&#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @5|1|0|,|1| @10|4|2|%| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|2|1|,|1| @10|1|9|%
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_topline_2.dump b/src/testdir/dumps/Test_diff_topline_2.dump
index 2d28bd373..a0f3db79c 100644
--- a/src/testdir/dumps/Test_diff_topline_2.dump
+++ b/src/testdir/dumps/Test_diff_topline_2.dump
@@ -16,5 +16,5 @@
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|2+0#0000000#5fd7ff255|4| @32
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|2+0#0000000#5fd7ff255|5| @32
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|2+0#0000000#5fd7ff255|6| @32
-|[+1&#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @5|1|0|,|1| @10|4|2|%| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|2|1|,|1| @10|1|9|%
+|[+1&#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @5|1|0|,|1| @10|4|2|%| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|2|1|,|1| @10|1|9|%
|9+0&&| @73
diff --git a/src/testdir/dumps/Test_diff_topline_4.dump b/src/testdir/dumps/Test_diff_topline_4.dump
index 6043d7ad7..94414b1e7 100644
--- a/src/testdir/dumps/Test_diff_topline_4.dump
+++ b/src/testdir/dumps/Test_diff_topline_4.dump
@@ -16,5 +16,5 @@
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|1+0#0000000#5fd7ff255|9| @32
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|2+0#0000000#5fd7ff255|0| @32
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|2+0#0000000#5fd7ff255|1| @32
-|[+1&#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @5|1|0|,|1| @10|T|o|p| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|0|,|1| @10|T|o|p
+|[+1&#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @5|1|0|,|1| @10|T|o|p| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|1|0|,|1| @10|T|o|p
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_with_cul_bri_01.dump b/src/testdir/dumps/Test_diff_with_cul_bri_01.dump
index 8151088e0..3855fa17c 100644
--- a/src/testdir/dumps/Test_diff_with_cul_bri_01.dump
+++ b/src/testdir/dumps/Test_diff_with_cul_bri_01.dump
@@ -16,5 +16,5 @@
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
-|<+1#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|A|l@1| |<+3&&| |N|a|m|e|]| |[|+|]| |1|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1
+|<+1#0000000&|o| |N|a|m|e|]| |[|+|]| |1|,|1| @5|A|l@1| +3&&|<| |N|a|m|e|]| |[|+|]| |1|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_with_cul_bri_02.dump b/src/testdir/dumps/Test_diff_with_cul_bri_02.dump
index 62126f6b3..c1ae50d6d 100644
--- a/src/testdir/dumps/Test_diff_with_cul_bri_02.dump
+++ b/src/testdir/dumps/Test_diff_with_cul_bri_02.dump
@@ -16,5 +16,5 @@
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
-|<+1#0000000&|o| |N|a|m|e|]| |[|+|]| |2|,|1| @5|A|l@1| |<+3&&| |N|a|m|e|]| |[|+|]| |2|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1
+|<+1#0000000&|o| |N|a|m|e|]| |[|+|]| |2|,|1| @5|A|l@1| +3&&|<| |N|a|m|e|]| |[|+|]| |2|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_with_cul_bri_03.dump b/src/testdir/dumps/Test_diff_with_cul_bri_03.dump
index f32be7385..bdf8be065 100644
--- a/src/testdir/dumps/Test_diff_with_cul_bri_03.dump
+++ b/src/testdir/dumps/Test_diff_with_cul_bri_03.dump
@@ -16,5 +16,5 @@
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
-|<+1#0000000&|o| |N|a|m|e|]| |[|+|]| |3|,|1| @5|A|l@1| |<+3&&| |N|a|m|e|]| |[|+|]| |3|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1
+|<+1#0000000&|o| |N|a|m|e|]| |[|+|]| |3|,|1| @5|A|l@1| +3&&|<| |N|a|m|e|]| |[|+|]| |3|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_with_cul_bri_04.dump b/src/testdir/dumps/Test_diff_with_cul_bri_04.dump
index 9489f9ab0..aa3ce8e5d 100644
--- a/src/testdir/dumps/Test_diff_with_cul_bri_04.dump
+++ b/src/testdir/dumps/Test_diff_with_cul_bri_04.dump
@@ -16,5 +16,5 @@
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
-|<+1#0000000&|o| |N|a|m|e|]| |[|+|]| |4|,|1| @5|A|l@1| |<+3&&| |N|a|m|e|]| |[|+|]| |4|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1
+|<+1#0000000&|o| |N|a|m|e|]| |[|+|]| |4|,|1| @5|A|l@1| +3&&|<| |N|a|m|e|]| |[|+|]| |4|,|1| @5|A|l@1| |[+1&&|N|o| |N|a|m|e|]| @2|0|,|0|-|1| @3|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_with_cursorline_01.dump b/src/testdir/dumps/Test_diff_with_cursorline_01.dump
index 31d8b2a18..0b9bcb9bd 100644
--- a/src/testdir/dumps/Test_diff_with_cursorline_01.dump
+++ b/src/testdir/dumps/Test_diff_with_cursorline_01.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_with_cursorline_02.dump b/src/testdir/dumps/Test_diff_with_cursorline_02.dump
index 9aef7d1fa..68014acb2 100644
--- a/src/testdir/dumps/Test_diff_with_cursorline_02.dump
+++ b/src/testdir/dumps/Test_diff_with_cursorline_02.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_diff_with_cursorline_03.dump b/src/testdir/dumps/Test_diff_with_cursorline_03.dump
index 5bc9e1316..595de46ce 100644
--- a/src/testdir/dumps/Test_diff_with_cursorline_03.dump
+++ b/src/testdir/dumps/Test_diff_with_cursorline_03.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|4|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|4|,|1| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_hor_scroll_1.dump b/src/testdir/dumps/Test_hor_scroll_1.dump
index 615afb8e1..65b16f3cc 100644
--- a/src/testdir/dumps/Test_hor_scroll_1.dump
+++ b/src/testdir/dumps/Test_hor_scroll_1.dump
@@ -4,5 +4,5 @@
@19| +0&#e0e0e08||+1&#ffffff0| +0&&@19| +0&#e0e0e08| +0&#ffffff0@32
@19| +0&#e0e0e08||+1&#ffffff0| +0&&@19| +0&#e0e0e08| +0&#ffffff0@32
|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @52
-|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|2|1| @2|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|2|1| @10|A|l@1
+|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|2|1| @2|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|2|1| @10|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_hor_scroll_2.dump b/src/testdir/dumps/Test_hor_scroll_2.dump
index dfe2e98ae..2b6afa0ec 100644
--- a/src/testdir/dumps/Test_hor_scroll_2.dump
+++ b/src/testdir/dumps/Test_hor_scroll_2.dump
@@ -4,5 +4,5 @@
@10| +0&#e0e0e08| +0&#ffffff0@8||+1&&| +0&&@29| +0&#e0e0e08| +0&#ffffff0@22
@10| +0&#e0e0e08| +0&#ffffff0@8||+1&&| +0&&@29| +0&#e0e0e08| +0&#ffffff0@22
|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @52
-|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|3|1| @2|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|3|1| @10|A|l@1
+|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|3|1| @2|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|3|1| @10|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_hor_scroll_3.dump b/src/testdir/dumps/Test_hor_scroll_3.dump
index db9fd6ff1..93f94a0ec 100644
--- a/src/testdir/dumps/Test_hor_scroll_3.dump
+++ b/src/testdir/dumps/Test_hor_scroll_3.dump
@@ -4,5 +4,5 @@
@19| +0&#e0e0e08||+1&#ffffff0| +0&&@19| +0&#e0e0e08| +0&#ffffff0@32
@19| +0&#e0e0e08||+1&#ffffff0| +0&&@19| +0&#e0e0e08| +0&#ffffff0@32
|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @52
-|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|2|1| @2|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|2|1| @10|A|l@1
+|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|2|1| @2|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|2|1| @10|A|l@1
|:+0&&|w|i|n|d|o| |:|s|e|t| |c|u|r|s|o|r|l|i|n|e| @52
diff --git a/src/testdir/dumps/Test_hor_scroll_4.dump b/src/testdir/dumps/Test_hor_scroll_4.dump
index 81821604d..830423ad3 100644
--- a/src/testdir/dumps/Test_hor_scroll_4.dump
+++ b/src/testdir/dumps/Test_hor_scroll_4.dump
@@ -4,5 +4,5 @@
@10| +0&#e0e0e08| +0&#ffffff0@8||+1&&| +0&&@29| +0&#e0e0e08| +0&#ffffff0@22
@10| +0&#e0e0e08| +0&#ffffff0@8||+1&&| +0&&@29| +0&#e0e0e08| +0&#ffffff0@22
|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @52
-|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|3|1| @2|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|3|1| @10|A|l@1
+|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|3|1| @2|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|3|1| @10|A|l@1
|:+0&&|w|i|n|d|o| |:|s|e|t| |c|u|r|s|o|r|l|i|n|e| @52
diff --git a/src/testdir/dumps/Test_hor_scroll_5.dump b/src/testdir/dumps/Test_hor_scroll_5.dump
index f2986f379..d706910fc 100644
--- a/src/testdir/dumps/Test_hor_scroll_5.dump
+++ b/src/testdir/dumps/Test_hor_scroll_5.dump
@@ -4,5 +4,5 @@
@20||+1&&| +0&&@53
@20||+1&&| +0&&@53
|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @52
-|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|4|1| @2|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|4|1| @10|A|l@1
+|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|4|1| @2|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @22|1|,|4|1| @10|A|l@1
|:+0&&|w|i|n|d|o| |:|s|e|t| |n|o|c|u|r|s|o|r|l|i|n|e| |n|o|c|u|r|s|o|r|c|o|l|u|m|n| @35
diff --git a/src/testdir/dumps/Test_linematch_3diffs1.dump b/src/testdir/dumps/Test_linematch_3diffs1.dump
index d8f23e84b..a010d2761 100644
--- a/src/testdir/dumps/Test_linematch_3diffs1.dump
+++ b/src/testdir/dumps/Test_linematch_3diffs1.dump
@@ -16,5 +16,5 @@
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
|~| @23||+1#0000000&|~+0#4040ff13&| @22||+1#0000000&|~+0#4040ff13&| @22
-|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|0|-|1| @3|A|l@1| |X|d|i|f|i|l|e|2| @3|1|,|0|-|1| @3|A|l@1| |X+3&&|d|i|f|i|l|e|3| @3|1|,|0|-|1| @3|A|l@1
+|X+1#0000000&|d|i|f|i|l|e|1| @4|1|,|0|-|1| @3|A|l@1| |X|d|i|f|i|l|e|2| @3|1|,|0|-|1| @3|A|l@1| +3&&|X|d|i|f|i|l|e|3| @3|1|,|0|-|1| @3|A|l@1
|"+0&&|X|d|i|f|i|l|e|3|"| |5|L|,| |4|5|B| @56
diff --git a/src/testdir/dumps/Test_listchars_01.dump b/src/testdir/dumps/Test_listchars_01.dump
index 72fff585c..a7de31069 100644
--- a/src/testdir/dumps/Test_listchars_01.dump
+++ b/src/testdir/dumps/Test_listchars_01.dump
@@ -6,5 +6,5 @@
|~| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31
|~| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31
|~| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31
-|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<|]| |1|,| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @3|1|,|1| @9|A|l@1
+|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<|]| |1|,| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @3|1|,|1| @9|A|l@1
| +0&&@59
diff --git a/src/testdir/dumps/Test_listchars_02.dump b/src/testdir/dumps/Test_listchars_02.dump
index b7be52e89..d7e05df9a 100644
--- a/src/testdir/dumps/Test_listchars_02.dump
+++ b/src/testdir/dumps/Test_listchars_02.dump
@@ -6,5 +6,5 @@
|~| @18||+1#0000000&|~+0#4040ff13&| @2||+1#0000000&|~+0#4040ff13&| @32
|~| @18||+1#0000000&|~+0#4040ff13&| @2||+1#0000000&|~+0#4040ff13&| @32
|~| @18||+1#0000000&|~+0#4040ff13&| @2||+1#0000000&|~+0#4040ff13&| @32
-|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<| |1|,| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @3|1|,|1| @10|A|l@1
+|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<| |1|,| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @3|1|,|1| @10|A|l@1
| +0&&@59
diff --git a/src/testdir/dumps/Test_listchars_03.dump b/src/testdir/dumps/Test_listchars_03.dump
index 13aca6d2f..d54b3e50f 100644
--- a/src/testdir/dumps/Test_listchars_03.dump
+++ b/src/testdir/dumps/Test_listchars_03.dump
@@ -6,5 +6,5 @@
|~| @18||+1#0000000&|~+0#4040ff13&| @1||+1#0000000&|~+0#4040ff13&| @33
|~| @18||+1#0000000&|~+0#4040ff13&| @1||+1#0000000&|~+0#4040ff13&| @33
|~| @18||+1#0000000&|~+0#4040ff13&| @1||+1#0000000&|~+0#4040ff13&| @33
-|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<| |1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @4|1|,|1| @10|A|l@1
+|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<| |1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @4|1|,|1| @10|A|l@1
| +0&&@59
diff --git a/src/testdir/dumps/Test_listchars_04.dump b/src/testdir/dumps/Test_listchars_04.dump
index e62c5aff2..694e6eadc 100644
--- a/src/testdir/dumps/Test_listchars_04.dump
+++ b/src/testdir/dumps/Test_listchars_04.dump
@@ -6,5 +6,5 @@
|~| @18||+1#0000000&|~+0#4040ff13&| ||+1#0000000&|~+0#4040ff13&| @34
|~| @18||+1#0000000&|~+0#4040ff13&| ||+1#0000000&|~+0#4040ff13&| @34
|~| @18||+1#0000000&|~+0#4040ff13&| ||+1#0000000&|~+0#4040ff13&| @34
-|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<|1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @4|1|,|1| @11|A|l@1
+|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<|1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @4|1|,|1| @11|A|l@1
| +0&&@59
diff --git a/src/testdir/dumps/Test_listchars_05.dump b/src/testdir/dumps/Test_listchars_05.dump
index 89b759fb4..7ecb79738 100644
--- a/src/testdir/dumps/Test_listchars_05.dump
+++ b/src/testdir/dumps/Test_listchars_05.dump
@@ -6,5 +6,5 @@
|~| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35
|~| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35
|~| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35
-|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1
+|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1
| +0&&@59
diff --git a/src/testdir/dumps/Test_listchars_06.dump b/src/testdir/dumps/Test_listchars_06.dump
index 9f4b5d30e..9176c5fde 100644
--- a/src/testdir/dumps/Test_listchars_06.dump
+++ b/src/testdir/dumps/Test_listchars_06.dump
@@ -6,5 +6,5 @@
|~| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31
|~| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31
|~| @18||+1#0000000&|~+0#4040ff13&| @3||+1#0000000&|~+0#4040ff13&| @31
-|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<+3&&|]| |1|,| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @3|1|,|1| @9|A|l@1
+|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| +3&&|<|]| |1|,| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @3|1|,|1| @9|A|l@1
|:+0&&|s|e|t| |n|o|w|r|a|p| |f|o|l|d|c|o|l|u|m|n|=|4| @35
diff --git a/src/testdir/dumps/Test_listchars_07.dump b/src/testdir/dumps/Test_listchars_07.dump
index ad81656a5..572bf248f 100644
--- a/src/testdir/dumps/Test_listchars_07.dump
+++ b/src/testdir/dumps/Test_listchars_07.dump
@@ -6,5 +6,5 @@
|~| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35
|~| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35
|~| @18||+1#0000000&|~+0#4040ff13&||+1#0000000&|~+0#4040ff13&| @35
-|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| |<+3&&| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1
+|<+1#0000000&|a|m|e|]| |[|+|]| |1|,|1| @3|A|l@1| +3&&|<| |[+1&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1
|:+0&&|s|e|t| |n|o|w|r|a|p| |f|o|l|d|c|o|l|u|m|n|=|4| @35
diff --git a/src/testdir/dumps/Test_popup_prop_not_visible_01.dump b/src/testdir/dumps/Test_popup_prop_not_visible_01.dump
index dbcfda116..20f4d4658 100644
--- a/src/testdir/dumps/Test_popup_prop_not_visible_01.dump
+++ b/src/testdir/dumps/Test_popup_prop_not_visible_01.dump
@@ -6,5 +6,5 @@
|~+0#4040ff13&| @41||+1#0000000&|~+0#4040ff13&| @29
|~| @41||+1#0000000&|~+0#4040ff13&| @29
|~| @41||+1#0000000&|~+0#4040ff13&| @29
-|[+1#0000000&|N|o| |N|a|m|e|]| @15|0|,|0|-|1| @9|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @2|1|,|0|-|1| @6|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| @15|0|,|0|-|1| @9|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @2|1|,|0|-|1| @6|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_popup_prop_not_visible_01a.dump b/src/testdir/dumps/Test_popup_prop_not_visible_01a.dump
index 0b97cb832..e048949de 100644
--- a/src/testdir/dumps/Test_popup_prop_not_visible_01a.dump
+++ b/src/testdir/dumps/Test_popup_prop_not_visible_01a.dump
@@ -6,5 +6,5 @@
|~+0#4040ff13&| @41||+1#0000000&|~+0#4040ff13&| @29
|~| @41||+1#0000000&|~+0#4040ff13&| @29
|~| @41||+1#0000000&|~+0#4040ff13&| @29
-|[+1#0000000&|N|o| |N|a|m|e|]| @15|0|,|0|-|1| @9|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @2|1|,|0|-|1| @6|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| @15|0|,|0|-|1| @9|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @2|1|,|0|-|1| @6|A|l@1
|:+0&&|c|a|l@1| |p|o|p|u|p|_|h|i|d|e|(|g|:|s|o|m|e|_|i|d|)| @47
diff --git a/src/testdir/dumps/Test_popup_prop_not_visible_01b.dump b/src/testdir/dumps/Test_popup_prop_not_visible_01b.dump
index e8a5c2e35..c91b20100 100644
--- a/src/testdir/dumps/Test_popup_prop_not_visible_01b.dump
+++ b/src/testdir/dumps/Test_popup_prop_not_visible_01b.dump
@@ -6,5 +6,5 @@
|~+0#4040ff13&| @41||+1#0000000&|~+0#4040ff13&| @29
|~| @41||+1#0000000&|~+0#4040ff13&| @29
|~| @41||+1#0000000&|~+0#4040ff13&| @29
-|[+1#0000000&|N|o| |N|a|m|e|]| @15|0|,|0|-|1| @9|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @2|1|,|0|-|1| @6|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| @15|0|,|0|-|1| @9|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @2|1|,|0|-|1| @6|A|l@1
|:+0&&|c|a|l@1| |p|o|p|u|p|_|s|h|o|w|(|g|:|s|o|m|e|_|i|d|)| @47
diff --git a/src/testdir/dumps/Test_popup_prop_not_visible_02.dump b/src/testdir/dumps/Test_popup_prop_not_visible_02.dump
index 1d1a5531c..e4b2aec90 100644
--- a/src/testdir/dumps/Test_popup_prop_not_visible_02.dump
+++ b/src/testdir/dumps/Test_popup_prop_not_visible_02.dump
@@ -6,5 +6,5 @@
|~+0#4040ff13#ffffff0| @55||+1#0000000&|~+0#4040ff13&| @15
|~| @55||+1#0000000&|~+0#4040ff13&| @15
|~| @55||+1#0000000&|~+0#4040ff13&| @15
-|[+1#0000000&|N|o| |N|a|m|e|]| @29|0|,|0|-|1| @9|A|l@1| |<+3&&|m|e|]| |[|+|]| |1|,|0|-|1| @2
+|[+1#0000000&|N|o| |N|a|m|e|]| @29|0|,|0|-|1| @9|A|l@1| +3&&|<|m|e|]| |[|+|]| |1|,|0|-|1| @2
|:+0&&|v|e|r|t| |r|e|s|i|z|e| |-|1|4| @58
diff --git a/src/testdir/dumps/Test_popup_prop_not_visible_03.dump b/src/testdir/dumps/Test_popup_prop_not_visible_03.dump
index caaa881fe..a056cd867 100644
--- a/src/testdir/dumps/Test_popup_prop_not_visible_03.dump
+++ b/src/testdir/dumps/Test_popup_prop_not_visible_03.dump
@@ -6,5 +6,5 @@
|~+0#4040ff13&| @63||+1#0000000&|~+0#4040ff13&| @7
|~| @63||+1#0000000&|~+0#4040ff13&| @7
|~| @63||+1#0000000&|~+0#4040ff13&| @7
-|[+1#0000000&|N|o| |N|a|m|e|]| @37|0|,|0|-|1| @9|A|l@1| |<+3&&|[|+|]| |1|,|0|-
+|[+1#0000000&|N|o| |N|a|m|e|]| @37|0|,|0|-|1| @9|A|l@1| +3&&|<|[|+|]| |1|,|0|-
|:+0&&|v|e|r|t| |r|e|s|i|z|e| |-|8| @59
diff --git a/src/testdir/dumps/Test_prop_diff_mode_2.dump b/src/testdir/dumps/Test_prop_diff_mode_2.dump
index 243ec0dc1..453665d99 100644
--- a/src/testdir/dumps/Test_prop_diff_mode_2.dump
+++ b/src/testdir/dumps/Test_prop_diff_mode_2.dump
@@ -6,5 +6,5 @@
|~+0#4040ff13#ffffff0| @28||+1#0000000&| +0#af5f00255&@1|5| |0+0#0000000#ffd7ff255@2|9+2&#ff404010| +0&#ffd7ff255@20
|~+0#4040ff13#ffffff0| @28||+1#0000000&| +0#af5f00255&@3|<+0#0000000#ffd7ff255|t|e|x|t|>| @18
|~+0#4040ff13#ffffff0| @28||+1#0000000&|~+0#4040ff13&| @27
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @1|1|,|1| @8|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @1|1|,|1|-|7| @5|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @1|1|,|1| @8|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @1|1|,|1|-|7| @5|A|l@1
|:+0&&|w|i|n|d|o| |s|e|t| |n|u|m|b|e|r| @42
diff --git a/src/testdir/dumps/Test_smooth_diff_change_line_1.dump b/src/testdir/dumps/Test_smooth_diff_change_line_1.dump
index c634f1dd3..28f2e1d99 100644
--- a/src/testdir/dumps/Test_smooth_diff_change_line_1.dump
+++ b/src/testdir/dumps/Test_smooth_diff_change_line_1.dump
@@ -16,5 +16,5 @@
|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_smooth_diff_change_line_2.dump b/src/testdir/dumps/Test_smooth_diff_change_line_2.dump
index 691fe289f..4c2d28d0e 100644
--- a/src/testdir/dumps/Test_smooth_diff_change_line_2.dump
+++ b/src/testdir/dumps/Test_smooth_diff_change_line_2.dump
@@ -16,5 +16,5 @@
|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|4| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|7| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|4| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|7| @11|A|l@1
|-+2&&@1| |I|N|S|E|R|T| |-@1| +0&&@62
diff --git a/src/testdir/dumps/Test_smooth_diff_change_line_3.dump b/src/testdir/dumps/Test_smooth_diff_change_line_3.dump
index c4178404d..e47fb5d34 100644
--- a/src/testdir/dumps/Test_smooth_diff_change_line_3.dump
+++ b/src/testdir/dumps/Test_smooth_diff_change_line_3.dump
@@ -16,5 +16,5 @@
|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|4| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|6| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|4| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|6| @11|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_smooth_diff_change_line_3a.dump b/src/testdir/dumps/Test_smooth_diff_change_line_3a.dump
index d13141eb2..0c7e70c27 100644
--- a/src/testdir/dumps/Test_smooth_diff_change_line_3a.dump
+++ b/src/testdir/dumps/Test_smooth_diff_change_line_3a.dump
@@ -16,5 +16,5 @@
|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|4| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|6| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|4| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|6| @11|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_smooth_diff_change_line_4.dump b/src/testdir/dumps/Test_smooth_diff_change_line_4.dump
index b789df3fb..37ce70a75 100644
--- a/src/testdir/dumps/Test_smooth_diff_change_line_4.dump
+++ b/src/testdir/dumps/Test_smooth_diff_change_line_4.dump
@@ -16,5 +16,5 @@
|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|1| @11|A|l@1
| +0&&@74
diff --git a/src/testdir/dumps/Test_statusline_vsep_borrow_hl_01.dump b/src/testdir/dumps/Test_statusline_vsep_borrow_hl_01.dump
new file mode 100644
index 000000000..ee71fb059
--- /dev/null
+++ b/src/testdir/dumps/Test_statusline_vsep_borrow_hl_01.dump
@@ -0,0 +1,6 @@
+| +0&#ffffff0@19||+1&&> +0&&@19||+1&&| +0&&@16||+1&&| +0&&@17
+|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @15||+1#0000000&|~+0#4040ff13&| @16
+|~| @18||+1#0000000&|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @15||+1#0000000&|~+0#4040ff13&| @16
+|~| @18||+1#0000000&|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @15||+1#0000000&|~+0#4040ff13&| @16
+|L+2#ff404010#ffff4012| @17|R+2#4040ff13#40ff4011| +0#ff404010#ffff4012|L| @17|R+0#4040ff13#40ff4011| |L+2#ff404010#ffff4012| @14|R+2#4040ff13#40ff4011| |L+2#ff404010#ffff4012| @15|R+2#4040ff13#40ff4011
+| +0#0000000#ffffff0@77
diff --git a/src/testdir/dumps/Test_statusline_vsep_borrow_hl_02.dump b/src/testdir/dumps/Test_statusline_vsep_borrow_hl_02.dump
new file mode 100644
index 000000000..60703a35f
--- /dev/null
+++ b/src/testdir/dumps/Test_statusline_vsep_borrow_hl_02.dump
@@ -0,0 +1,6 @@
+| +0&#ffffff0@19||+1&&| +0&&@19||+1&&> +0&&@19||+1&&| +0&&@14
+|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @13
+|~| @18||+1#0000000&|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @13
+|~| @18||+1#0000000&|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @18||+1#0000000&|~+0#4040ff13&| @13
+|L+2#ff404010#ffff4012| @17|R+2#4040ff13#40ff4011| |L+2#ff404010#ffff4012| @17|R+2#4040ff13#40ff4011| +0#ff404010#ffff4012|L| @17|R+0#4040ff13#40ff4011| |L+2#ff404010#ffff4012| @12|R+2#4040ff13#40ff4011
+| +0#0000000#ffffff0@77
diff --git a/src/testdir/dumps/Test_switchwin_clear_pum_02.dump b/src/testdir/dumps/Test_switchwin_clear_pum_02.dump
index 39013c09f..cf5f9dbc9 100644
--- a/src/testdir/dumps/Test_switchwin_clear_pum_02.dump
+++ b/src/testdir/dumps/Test_switchwin_clear_pum_02.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|w+1#0000000&|i|n|_|b| |[|+|]| @9|1|,|1|0| @10|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|9| @11|A|l@1
+|w+1#0000000&|i|n|_|b| |[|+|]| @9|1|,|1|0| @10|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|9| @11|A|l@1
|-+2&&@1| |I|N|S|E|R|T| |-@1| +0&&@62
diff --git a/src/testdir/dumps/Test_tabpanel_drawing_scrolling_3.dump b/src/testdir/dumps/Test_tabpanel_drawing_scrolling_3.dump
index b041b672f..0ee2efe9d 100644
--- a/src/testdir/dumps/Test_tabpanel_drawing_scrolling_3.dump
+++ b/src/testdir/dumps/Test_tabpanel_drawing_scrolling_3.dump
@@ -6,5 +6,5 @@
| +1&&@19| +0#af5f00255&@1|6| ||+1#0000000&| +0#af5f00255&|3|0| |t+0#0000000&|e|x|t| |t|e|x|t| |t|e|x|t| |t
| +1&&@19| +0#af5f00255&@1|7| ||+1#0000000&| +0#af5f00255&|3|1| |t+0#0000000&|e|x|t| |t|e|x|t| |t|e|x|t| |t
| +1&&@19| +0#af5f00255&@1|8| ||+1#0000000&| +0#af5f00255&|3|2| |t+0#0000000&|e|x|t| |t|e|x|t| |t|e|x|t| |t
-| +1&&@19|<| |1|,| |<+3&&|.|t|x|t| |[|+|]| |2|8|,|1| @2|2|6|%
+| +1&&@19|<| |1|,| +3&&|<|.|t|x|t| |[|+|]| |2|8|,|1| @2|2|6|%
| +1&&@19| +0&&@24
diff --git a/src/testdir/dumps/Test_winhighlight_14.dump b/src/testdir/dumps/Test_winhighlight_14.dump
index 1ea869d65..176bf6ea9 100644
--- a/src/testdir/dumps/Test_winhighlight_14.dump
+++ b/src/testdir/dumps/Test_winhighlight_14.dump
@@ -4,5 +4,5 @@
|S+8&&|i|x| @33||+1&&|S+0&&|i|x| @33
|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|3| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|5| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|3| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|5| @11|A|l@1
|:+0&&|w|i|n|c|m|d| |l| @65
diff --git a/src/testdir/dumps/Test_winhighlight_15.dump b/src/testdir/dumps/Test_winhighlight_15.dump
index a90302a86..7d69f21b5 100644
--- a/src/testdir/dumps/Test_winhighlight_15.dump
+++ b/src/testdir/dumps/Test_winhighlight_15.dump
@@ -4,5 +4,5 @@
|S+8#0000000#ffffff0|i|x| @33||+1&&|S+0#ffffff16#e000002|i|x| @33
|~+0#4040ff13#ffffff0| @35||+1#0000000&|~+0#4040ff13#e000002| @35
|~+0&#ffffff0| @35||+1#0000000&|~+0#4040ff13#e000002| @35
-|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|3| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|5| @11|A|l@1
+|[+1#0000000#ffffff0|N|o| |N|a|m|e|]| |[|+|]| @5|3|,|3| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|5| @11|A|l@1
|:+0&&|s|e|t|l|o|c|a|l| |w|h|l|=|N|o|r|m|a|l|:|E|r@1|o|r|M|s|g| @45
diff --git a/src/testdir/dumps/Test_winhighlight_2.dump b/src/testdir/dumps/Test_winhighlight_2.dump
index b84ef7053..72f754114 100644
--- a/src/testdir/dumps/Test_winhighlight_2.dump
+++ b/src/testdir/dumps/Test_winhighlight_2.dump
@@ -4,5 +4,5 @@
|S|i|x| @33||+1&&|S+0&&|i|x| @33
|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1
|:+0&&|w|i|n|c|m|d| |l| @65
diff --git a/src/testdir/dumps/Test_winhighlight_6.dump b/src/testdir/dumps/Test_winhighlight_6.dump
index f5753e118..e482465ca 100644
--- a/src/testdir/dumps/Test_winhighlight_6.dump
+++ b/src/testdir/dumps/Test_winhighlight_6.dump
@@ -4,5 +4,5 @@
|S|i|x| @33||+1&&|S+0&&|i|x| @33
|~+0#4040ff13&| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1
|:+0&&|s|e|t|l|o|c|a|l| |w|h|l|=|V|e|r|t|S|p|l|i|t|:|E|r@1|o|r|M|s|g| @42
diff --git a/src/testdir/dumps/Test_winhighlight_hlsearch_2.dump b/src/testdir/dumps/Test_winhighlight_hlsearch_2.dump
index 30d643854..37a9087bb 100644
--- a/src/testdir/dumps/Test_winhighlight_hlsearch_2.dump
+++ b/src/testdir/dumps/Test_winhighlight_hlsearch_2.dump
@@ -16,5 +16,5 @@
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
|~| @35||+1#0000000&|~+0#4040ff13&| @35
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @5|2|,|1| @11|A|l@1
|/+0&&|F> @72
diff --git a/src/testdir/dumps/Test_winscrolled_once_only_1.dump b/src/testdir/dumps/Test_winscrolled_once_only_1.dump
index 56d640107..7407f4686 100644
--- a/src/testdir/dumps/Test_winscrolled_once_only_1.dump
+++ b/src/testdir/dumps/Test_winscrolled_once_only_1.dump
@@ -5,6 +5,6 @@
|a+0#0000000&@2| @26||+1&&|~+0#4040ff13&| @27
|b+0#0000000&@2| @26||+1&&|~+0#4040ff13&| @27
|~| @28||+1#0000000&|~+0#4040ff13&| @27
-|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @1|1|,|1| @8|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @1|2|,|1| @7|B|o|t
+|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @1|1|,|1| @8|A|l@1| +3&&|[|N|o| |N|a|m|e|]| |[|+|]| @1|2|,|1| @7|B|o|t
|1+0&&| |1|0@2| |[|'|r|o|w|'|,| |[@1|'|c|o|l|'|,| |[@1|'|l|e|a|f|'|,| |1|0@1|2|]|,| |[|'|l|e|a|f|'|,| |1|0@1|1|]@2|,| |[
|'|l|e|a|f|'|,| |1|0@2|]@2| @44
diff --git a/src/testdir/test_statusline.vim b/src/testdir/test_statusline.vim
index 0b1359cd5..34aa94e4c 100644
--- a/src/testdir/test_statusline.vim
+++ b/src/testdir/test_statusline.vim
@@ -978,4 +978,40 @@ func Test_statusline_empty()
set statusline&
endfunc
+func Test_statusline_vsep_borrow_hl()
+ CheckScreendump
+
+ " borrow_stl_vsep_hl(): vsep cells adjacent to a status line should
+ " borrow the highlight of the neighbouring window's status line edge so
+ " that custom highlights flow into the separator column.
+ " - vsep next to curwin: curwin's edge hl is borrowed.
+ " - vsep between two non-current windows: the left window's right-edge
+ " hl is borrowed when the status fillchar is a space.
+ let lines =<< trim END
+ hi User1 ctermfg=Red ctermbg=Yellow
+ hi User2 ctermfg=Blue ctermbg=Green
+ set laststatus=2
+ set statusline=%1*L%=%2*R
+ vsplit
+ vsplit
+ vsplit
+ " curwin is now the leftmost window; move to the second one so the
+ " layout becomes: NC | cur | NC | NC.
+ 2wincmd w
+ END
+ call writefile(lines, 'XTest_statusline_vsep_borrow_hl', 'D')
+
+ let buf = RunVimInTerminal('-S XTest_statusline_vsep_borrow_hl',
+ \ {'rows': 6, 'cols': 78})
+ call term_sendkeys(buf, "\<C-L>")
+ call VerifyScreenDump(buf, 'Test_statusline_vsep_borrow_hl_01', {})
+
+ " Move curwin to the third window: NC | NC | cur | NC.
+ " Now the leftmost vsep is between two non-current windows.
+ call term_sendkeys(buf, "\<C-w>l\<C-L>")
+ call VerifyScreenDump(buf, 'Test_statusline_vsep_borrow_hl_02', {})
+
+ call StopVimInTerminal(buf)
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 0714ec1ac..982065514 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 488,
/**/
487,
/**/