changeset 31990:27ab829631df v9.0.1327

patch 9.0.1327: cursor in wrong position below line with virtual text below Commit: https://github.com/vim/vim/commit/ea62cee85e9e77ec86edd9843926dadb69978753 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Feb 19 18:36:41 2023 +0000 patch 9.0.1327: cursor in wrong position below line with virtual text below Problem: Cursor in wrong position below line with virtual text below ending in multi-byte character. Solution: When checking for last character take care of multi-byte character.
author Bram Moolenaar <Bram@vim.org>
date Sun, 19 Feb 2023 19:45:03 +0100
parents bfb00817db23
children 19571fecac05
files src/charset.c src/testdir/dumps/Test_prop_multibyte_below_1.dump src/testdir/test_textprop.vim src/version.c
diffstat 4 files changed, 34 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/charset.c
+++ b/src/charset.c
@@ -1196,7 +1196,7 @@ win_lbr_chartabsize(
 		       || (tp->tp_col == MAXCOL
 			   && ((tp->tp_flags & TP_FLAG_ALIGN_ABOVE)
 				? col == 0
-				: (s[0] == NUL || s[1] == NUL)
+				: (s[0] == NUL || s[charlen] == NUL)
 						  && cts->cts_with_trailing)))
 		    && -tp->tp_id - 1 < gap->ga_len)
 	    {
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_multibyte_below_1.dump
@@ -0,0 +1,10 @@
+| +0#af5f00255#ffffff0@1|1| |©+0#0000000&| @54
+| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52
+| +0#af5f00255&@1|2| |©+0#0000000&| @54
+| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52
+| +0#af5f00255&@1|3| >©+0#0000000&| @54
+| +0#af5f00255&@3|++0#0000001#ffff4012@2| +0#0000000#ffffff0@52
+|~+0#4040ff13&| @58
+|~| @58
+|~| @58
+| +0#0000000&@41|3|,|1| @10|A|l@1| 
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -2817,6 +2817,27 @@ func Test_prop_with_text_above_below_emp
   call StopVimInTerminal(buf)
 endfunc
 
+func Test_prop_with_multibyte_below()
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+      setlocal number
+      call setline(1, ['©', '©', '©'])
+
+      let vt = 'test'
+      call prop_type_add(vt, {'highlight': 'ToDo'})
+      for ln in range(1, line('$'))
+        call prop_add(ln, 0, {'type': vt, 'text': '+++', 'text_align': 'below'})
+      endfor
+      normal G
+  END
+  call writefile(lines, 'XscriptPropMultibyteBelow', 'D')
+  let buf = RunVimInTerminal('-S XscriptPropMultibyteBelow', #{rows: 10, cols: 60})
+  call VerifyScreenDump(buf, 'Test_prop_multibyte_below_1', {})
+
+  call StopVimInTerminal(buf)
+endfunc
+
 func Test_prop_with_text_above_empty()
   CheckRunVimInTerminal
 
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1327,
+/**/
     1326,
 /**/
     1325,