Commit: patch 9.2.0892: highlight: wrong column highlighted with 'cursorcolumn'
Christian Brabandt <[email protected]> Sat, 1 Aug 2026 15:45:05 +0200
| Newsgroups | gmane.editors.vim.devel |
|---|---|
| Message-ID | <[email protected]> |
patch 9.2.0892: highlight: wrong column highlighted with 'cursorcolumn' Commit: https://github.com/vim/vim/commit/5a90b9dbd2e1915b7aea98813316c7279e5dd27f Author: Hirohito Higashi <[email protected]> Date: Sat Aug 1 13:32:48 2026 +0000 patch 9.2.0892: highlight: wrong column highlighted with 'cursorcolumn' Problem: With 'virtualedit' set to "all" and 'cursorcolumn' set, the wrong column may be highlighted after a command that moved the cursor into virtual space and back (van-de-bugger). Solution: Make sure the virtual column is up to date before drawing the window (Hirohito Higashi). fixes: #2576 closes: #20902 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Signed-off-by: Hirohito Higashi <[email protected]> Signed-off-by: Christian Brabandt <[email protected]> diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 38b6ae454..2698ad6ff 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 9.2. Last change: 2026 Jul 31 +*todo.txt* For Vim version 9.2. Last change: 2026 Aug 01 VIM REFERENCE MANUAL by Bram Moolenaar @@ -57,9 +57,6 @@ Virtual text problems: #12232) - truncated Virtual text below an empty line causes display error #12493 -When 'virtualedit' is "all" and 'cursorcolumn' is set, the wrong column may be -highlighted. (van-de-bugger, 2018 Jan 23, #2576) - Errors when running tests with valgrind: - test_codestyle.vim: e.g.: command line..script /home/mool/vim/vim91/src/testdir/runtest.vim[569]..function RunTheTest[52]..Test_test_files line 6: keycode_check.vim: space before tab: Expected 0 but got 7 diff --git a/src/drawscreen.c b/src/drawscreen.c index a5b312421..f5271e7c1 100644 --- a/src/drawscreen.c +++ b/src/drawscreen.c @@ -1660,6 +1660,13 @@ win_update(win_T *wp) } #endif +#ifdef FEAT_SYN_HL + // 'cursorcolumn' is drawn with w_virtcol, make sure it is up to date. + // This may set w_redr_type, thus do it before using it below. + if (wp->w_p_cuc) + validate_virtcol_win(wp); +#endif + type = wp->w_redr_type; if (type == UPD_NOT_VALID) diff --git a/src/testdir/dumps/Test_cursorcolumn_virtualedit_1.dump b/src/testdir/dumps/Test_cursorcolumn_virtualedit_1.dump new file mode 100644 index 000000000..552b8cf5f --- /dev/null +++ b/src/testdir/dumps/Test_cursorcolumn_virtualedit_1.dump @@ -0,0 +1,8 @@ +| +0&#e0e0e08| +0&#ffffff0@73 +| +0&#e0e0e08| +0&#ffffff0@73 +> @74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +| +0#0000000&@56|3|,|0|-|1| @8|A|l@1| diff --git a/src/testdir/test_highlight.vim b/src/testdir/test_highlight.vim index 081eff43c..3824ecff7 100644 --- a/src/testdir/test_highlight.vim +++ b/src/testdir/test_highlight.vim @@ -622,6 +622,30 @@ func Test_cursorcolumn_insert_on_tab() call StopVimInTerminal(buf) endfunc +" The column highlighted with 'cursorcolumn' must be the column of the cursor, +" also after a command that moved the cursor into virtual space and back. +func Test_cursorcolumn_virtualedit() + CheckScreendump + + let lines =<< trim END + set virtualedit=all + set cursorcolumn + call setline(1, ['', '', '']) + call cursor(3, 1) + END + call writefile(lines, 'Xcuc_virtualedit', 'D') + + let buf = RunVimInTerminal('-S Xcuc_virtualedit', #{rows: 8}) + call TermWait(buf) + call VerifyScreenDump(buf, 'Test_cursorcolumn_virtualedit_1', {}) + + call term_sendkeys(buf, "\<Del>") + call TermWait(buf) + call VerifyScreenDump(buf, 'Test_cursorcolumn_virtualedit_1', {}) + + call StopVimInTerminal(buf) +endfunc + func Test_cursorcolumn_callback() CheckScreendump CheckFeature timers diff --git a/src/version.c b/src/version.c index c48aca0ff..fe82bcdc4 100644 --- a/src/version.c +++ b/src/version.c @@ -758,6 +758,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 892, /**/ 891, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1wqA1S-007YXy-0L%40256bit.org.