To: vim_dev@googlegroups.com Subject: Patch 8.2.4630 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.4630 Problem: 'cursorline' not always updated with 'cursorlineopt' is "screenline". Solution: Call check_redraw_cursorline() more often. (closes #10013) Files: src/normal.c, src/edit.c, src/testdir/test_cursorline.vim, src/testdir/dumps/Test_cursorline_screenline_1.dump, src/testdir/dumps/Test_cursorline_screenline_2.dump *** ../vim-8.2.4629/src/normal.c 2022-03-14 20:46:37.461884474 +0000 --- src/normal.c 2022-03-26 13:26:30.561775582 +0000 *************** *** 6971,6976 **** --- 6971,6980 ---- coladvance(getviscol()); State = save_State; } + #ifdef FEAT_SYN_HL + // Might need to update for 'cursorline'. + check_redraw_cursorline(); + #endif invoke_edit(cap, FALSE, cap->cmdchar, FALSE); } *** ../vim-8.2.4629/src/edit.c 2022-01-31 14:59:33.510943820 +0000 --- src/edit.c 2022-03-26 13:26:16.497856326 +0000 *************** *** 1058,1063 **** --- 1058,1067 ---- case K_COMMAND: // command case K_SCRIPT_COMMAND: // command do_cmdkey_command(c, 0); + #ifdef FEAT_SYN_HL + // Might need to update for 'cursorline'. + check_redraw_cursorline(); + #endif #ifdef FEAT_TERMINAL if (term_use_loop()) // Started a terminal that gets the input, exit Insert mode. *** ../vim-8.2.4629/src/testdir/test_cursorline.vim 2022-03-22 21:14:51.752456009 +0000 --- src/testdir/test_cursorline.vim 2022-03-26 13:22:52.847181925 +0000 *************** *** 272,276 **** --- 272,297 ---- call delete('Xcul_timer') endfunc + func Test_cursorline_screenline_update() + CheckScreendump + + let lines =<< trim END + call setline(1, repeat('xyz ', 30)) + set cursorline cursorlineopt=screenline + inoremap call cursor(1, 1) + END + call writefile(lines, 'Xcul_screenline') + + let buf = RunVimInTerminal('-S Xcul_screenline', #{rows: 8}) + call term_sendkeys(buf, "A") + call VerifyScreenDump(buf, 'Test_cursorline_screenline_1', {}) + call term_sendkeys(buf, "\") + call VerifyScreenDump(buf, 'Test_cursorline_screenline_2', {}) + call term_sendkeys(buf, "\") + + call StopVimInTerminal(buf) + call delete('Xcul_screenline') + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.2.4629/src/testdir/dumps/Test_cursorline_screenline_1.dump 2022-03-26 13:26:52.985649288 +0000 --- src/testdir/dumps/Test_cursorline_screenline_1.dump 2022-03-26 13:25:09.458258689 +0000 *************** *** 0 **** --- 1,8 ---- + |x+0&#ffffff0|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z + | +8&&|x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| > @29 + |~+0#4040ff13&| @73 + |~| @73 + |~| @73 + |~| @73 + |~| @73 + |-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|1|2|1| @8|A|l@1| *** ../vim-8.2.4629/src/testdir/dumps/Test_cursorline_screenline_2.dump 2022-03-26 13:26:52.989649268 +0000 --- src/testdir/dumps/Test_cursorline_screenline_2.dump 2022-03-26 13:25:10.518252091 +0000 *************** *** 0 **** --- 1,8 ---- + >x+8&#ffffff0|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z + | +0&&|x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| |x|y|z| @30 + |~+0#4040ff13&| @73 + |~| @73 + |~| @73 + |~| @73 + |~| @73 + |-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|1| @10|A|l@1| *** ../vim-8.2.4629/src/version.c 2022-03-26 10:50:06.546446647 +0000 --- src/version.c 2022-03-26 13:11:05.897059693 +0000 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 4630, /**/ -- I'm sure that I asked CBuilder to do a "full" install. Looks like I got a "fool" install, instead. Charles E Campbell, Jr, PhD /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///