changeset 24184:8ebf8b3dfc08 v8.2.2633

patch 8.2.2633: multi-byte 'fillchars' for folding do not show properly Commit: https://github.com/vim/vim/commit/196a1f740981e878091fa124a400d1fc4bfa2bb0 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Mar 21 14:39:19 2021 +0100 patch 8.2.2633: multi-byte 'fillchars' for folding do not show properly Problem: Multi-byte 'fillchars' for folding do not show properly. Solution: Handle multi-byte characters correctly. (Yegappan Lakshmanan, closes #7983, closes #7955)
author Bram Moolenaar <Bram@vim.org>
date Sun, 21 Mar 2021 14:45:06 +0100
parents daea0d44aef7
children 177f016c6405
files src/screen.c src/testdir/test_fold.vim src/version.c
diffstat 3 files changed, 14 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/screen.c
+++ b/src/screen.c
@@ -295,8 +295,13 @@ fill_foldcolumn(
     if (closed)
     {
 	if (symbol != 0)
-	    // rollback length
+	{
+	    // rollback length and the character
 	    byte_counter -= len;
+	    if (len > 1)
+		// for a multibyte character, erase all the bytes
+		vim_memset(p + byte_counter, ' ', len);
+	}
 	symbol = fill_foldclosed;
 	len = utf_char2bytes(symbol, &p[byte_counter]);
 	byte_counter += len;
--- a/src/testdir/test_fold.vim
+++ b/src/testdir/test_fold.vim
@@ -1061,6 +1061,12 @@ func Test_foldcolumn_multibyte_char()
   set fillchars+=foldopen:▾,foldsep:│,foldclose:▸
   call s:mbyte_fillchar_tests('▾', '▸', '│')
 
+  " Use a mix of multi-byte and single-byte characters
+  set fillchars+=foldopen:¬,foldsep:\|,foldclose:+
+  call s:mbyte_fillchar_tests('¬', '+', '|')
+  set fillchars+=foldopen:+,foldsep:\|,foldclose:¬
+  call s:mbyte_fillchar_tests('+', '¬', '|')
+
   bw!
   set foldenable& fdc& fdm& fillchars&
 endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2633,
+/**/
     2632,
 /**/
     2631,