changeset 25172:406ab8d0bc0f v8.2.3122

patch 8.2.3122: with 'nowrap' cursor position is unexected in narrow window Commit: https://github.com/vim/vim/commit/30441bb3d5fa73f888b09684db3f54ff5ab48dbc Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jul 8 13:19:31 2021 +0200 patch 8.2.3122: with 'nowrap' cursor position is unexected in narrow window Problem: With 'nowrap' cursor position is unexected in narrow window. (Leonid V. Fedorenchik) Solution: Put cursor on the last non-empty line. (closes #8525)
author Bram Moolenaar <Bram@vim.org>
date Thu, 08 Jul 2021 13:30:04 +0200
parents fcd571f05dbc
children 74d0efab9bb4
files src/move.c src/testdir/dumps/Test_listchars_06.dump src/testdir/dumps/Test_listchars_07.dump src/testdir/test_listchars.vim src/version.c
diffstat 5 files changed, 33 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/move.c
+++ b/src/move.c
@@ -993,8 +993,12 @@ curs_columns(
     if (textwidth <= 0)
     {
 	// No room for text, put cursor in last char of window.
+	// If not wrapping, the last non-empty line.
 	curwin->w_wcol = curwin->w_width - 1;
-	curwin->w_wrow = curwin->w_height - 1;
+	if (curwin->w_p_wrap)
+	    curwin->w_wrow = curwin->w_height - 1;
+	else
+	    curwin->w_wrow = curwin->w_height - 1 - curwin->w_empty_rows;
     }
     else if (curwin->w_p_wrap && curwin->w_width != 0)
     {
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_listchars_06.dump
@@ -0,0 +1,10 @@
+| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@2| @13||+1&&| +0#0000e05#a8a8a8255@4||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@2| @26
+| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@16||+1&&| +0#0000e05#a8a8a8255@4||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@29
+| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @15||+1&&| +0#0000e05#a8a8a8255@4||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @28
+| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @10||+1&&| +0#0000e05#a8a8a8255@3> ||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @23
+|~+0#4040ff13&| @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
+|~| @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
+|:+0&&|s|e|t| |n|o|w|r|a|p| |f|o|l|d|c|o|l|u|m|n|=|4| @35
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_listchars_07.dump
@@ -0,0 +1,10 @@
+| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@2| @13||+1&&| +0#0000e05#a8a8a8255||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@2| @30
+| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@16||+1&&| +0#0000e05#a8a8a8255||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2| +0#0000000#ffffff0@33
+| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @15||+1&&| +0#0000e05#a8a8a8255||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0| @32
+| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @10||+1&&> +0#0000e05#a8a8a8255||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@2|a+0#0000000#ffffff0@5| @27
+|~+0#4040ff13&| @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
+|~| @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
+|:+0&&|s|e|t| |n|o|w|r|a|p| |f|o|l|d|c|o|l|u|m|n|=|4| @35
--- a/src/testdir/test_listchars.vim
+++ b/src/testdir/test_listchars.vim
@@ -381,6 +381,12 @@ func Test_listchars_foldcolumn()
   call VerifyScreenDump(buf, 'Test_listchars_04', {})
   call term_sendkeys(buf, "\<C-W>>")
   call VerifyScreenDump(buf, 'Test_listchars_05', {})
+  call term_sendkeys(buf, "\<C-W>h")
+  call term_sendkeys(buf, ":set nowrap foldcolumn=4\<CR>")
+  call term_sendkeys(buf, "15\<C-W><")
+  call VerifyScreenDump(buf, 'Test_listchars_06', {})
+  call term_sendkeys(buf, "4\<C-W><")
+  call VerifyScreenDump(buf, 'Test_listchars_07', {})
 
   " clean up
   call StopVimInTerminal(buf)
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3122,
+/**/
     3121,
 /**/
     3120,