]> git.ipfire.org Git - thirdparty/vim.git/commit
patch 9.2.0488: statusline: status line highlight blends into adjacent vsep cells v9.2.0488
authorHirohito Higashi <h.east.727@gmail.com>
Fri, 15 May 2026 16:50:27 +0000 (16:50 +0000)
committerChristian Brabandt <cb@256bit.org>
Fri, 15 May 2026 16:52:29 +0000 (16:52 +0000)
commitb467b56ef064c952e5014fcd8b0888ddbc8c8a56
tree4e5e0e28c2bffd895867e439f46c032c0d5ff817
parentee49669e8f3b5ecdcfd2fdd08aeaac0e3de26ea8
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) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
82 files changed:
runtime/doc/syntax.txt
src/drawscreen.c
src/testdir/dumps/Test_VertSplitNC_2.dump
src/testdir/dumps/Test_VertSplitNC_3.dump
src/testdir/dumps/Test_VertSplitNC_whl2.dump
src/testdir/dumps/Test_VertSplitNC_winbar_1.dump
src/testdir/dumps/Test_diff_anchors_07.dump
src/testdir/dumps/Test_diff_anchors_scrollbind_topline_01.dump
src/testdir/dumps/Test_diff_anchors_scrollbind_topline_02.dump
src/testdir/dumps/Test_diff_anchors_scrollbind_topline_03.dump
src/testdir/dumps/Test_diff_anchors_scrollbind_topline_04.dump
src/testdir/dumps/Test_diff_anchors_scrollbind_topline_05.dump
src/testdir/dumps/Test_diff_anchors_scrollbind_topline_06.dump
src/testdir/dumps/Test_diff_anchors_scrollbind_topline_07.dump
src/testdir/dumps/Test_diff_anchors_scrollbind_topline_08.dump
src/testdir/dumps/Test_diff_anchors_scrollbind_topline_13.dump
src/testdir/dumps/Test_diff_anchors_scrollbind_topline_14.dump
src/testdir/dumps/Test_diff_anchors_scrollbind_topline_15.dump
src/testdir/dumps/Test_diff_anchors_scrollbind_topline_16.dump
src/testdir/dumps/Test_diff_anchors_scrollbind_topline_17.dump
src/testdir/dumps/Test_diff_get_put_linematch_16.dump
src/testdir/dumps/Test_diff_get_put_linematch_17.dump
src/testdir/dumps/Test_diff_get_put_linematch_18.dump
src/testdir/dumps/Test_diff_get_put_linematch_19.dump
src/testdir/dumps/Test_diff_get_put_linematch_3.dump
src/testdir/dumps/Test_diff_get_put_linematch_4.dump
src/testdir/dumps/Test_diff_inline_multiline_07.dump
src/testdir/dumps/Test_diff_inline_multiline_08.dump
src/testdir/dumps/Test_diff_inline_multiline_09.dump
src/testdir/dumps/Test_diff_inline_multiline_10.dump
src/testdir/dumps/Test_diff_rnu_01.dump
src/testdir/dumps/Test_diff_rnu_02.dump
src/testdir/dumps/Test_diff_rnu_03.dump
src/testdir/dumps/Test_diff_scroll_1.dump
src/testdir/dumps/Test_diff_scroll_2.dump
src/testdir/dumps/Test_diff_scroll_change_03.dump
src/testdir/dumps/Test_diff_topline_1.dump
src/testdir/dumps/Test_diff_topline_2.dump
src/testdir/dumps/Test_diff_topline_4.dump
src/testdir/dumps/Test_diff_with_cul_bri_01.dump
src/testdir/dumps/Test_diff_with_cul_bri_02.dump
src/testdir/dumps/Test_diff_with_cul_bri_03.dump
src/testdir/dumps/Test_diff_with_cul_bri_04.dump
src/testdir/dumps/Test_diff_with_cursorline_01.dump
src/testdir/dumps/Test_diff_with_cursorline_02.dump
src/testdir/dumps/Test_diff_with_cursorline_03.dump
src/testdir/dumps/Test_hor_scroll_1.dump
src/testdir/dumps/Test_hor_scroll_2.dump
src/testdir/dumps/Test_hor_scroll_3.dump
src/testdir/dumps/Test_hor_scroll_4.dump
src/testdir/dumps/Test_hor_scroll_5.dump
src/testdir/dumps/Test_linematch_3diffs1.dump
src/testdir/dumps/Test_listchars_01.dump
src/testdir/dumps/Test_listchars_02.dump
src/testdir/dumps/Test_listchars_03.dump
src/testdir/dumps/Test_listchars_04.dump
src/testdir/dumps/Test_listchars_05.dump
src/testdir/dumps/Test_listchars_06.dump
src/testdir/dumps/Test_listchars_07.dump
src/testdir/dumps/Test_popup_prop_not_visible_01.dump
src/testdir/dumps/Test_popup_prop_not_visible_01a.dump
src/testdir/dumps/Test_popup_prop_not_visible_01b.dump
src/testdir/dumps/Test_popup_prop_not_visible_02.dump
src/testdir/dumps/Test_popup_prop_not_visible_03.dump
src/testdir/dumps/Test_prop_diff_mode_2.dump
src/testdir/dumps/Test_smooth_diff_change_line_1.dump
src/testdir/dumps/Test_smooth_diff_change_line_2.dump
src/testdir/dumps/Test_smooth_diff_change_line_3.dump
src/testdir/dumps/Test_smooth_diff_change_line_3a.dump
src/testdir/dumps/Test_smooth_diff_change_line_4.dump
src/testdir/dumps/Test_statusline_vsep_borrow_hl_01.dump [new file with mode: 0644]
src/testdir/dumps/Test_statusline_vsep_borrow_hl_02.dump [new file with mode: 0644]
src/testdir/dumps/Test_switchwin_clear_pum_02.dump
src/testdir/dumps/Test_tabpanel_drawing_scrolling_3.dump
src/testdir/dumps/Test_winhighlight_14.dump
src/testdir/dumps/Test_winhighlight_15.dump
src/testdir/dumps/Test_winhighlight_2.dump
src/testdir/dumps/Test_winhighlight_6.dump
src/testdir/dumps/Test_winhighlight_hlsearch_2.dump
src/testdir/dumps/Test_winscrolled_once_only_1.dump
src/testdir/test_statusline.vim
src/version.c