summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-03-21 14:39:19 +0100
committerBram Moolenaar <Bram@vim.org>2021-03-21 14:39:19 +0100
commit196a1f740981e878091fa124a400d1fc4bfa2bb0 (patch)
treece397a8e006aa7d4983ba7f868e5f6331403d5b8
parentc5cf369e9543ff065e2e1da91da3218c223840e2 (diff)
patch 8.2.2633: multi-byte 'fillchars' for folding do not show properlyv8.2.2633
Problem: Multi-byte 'fillchars' for folding do not show properly. Solution: Handle multi-byte characters correctly. (Yegappan Lakshmanan, closes #7983, closes #7955)
-rw-r--r--src/screen.c7
-rw-r--r--src/testdir/test_fold.vim6
-rw-r--r--src/version.c2
3 files changed, 14 insertions, 1 deletions
diff --git a/src/screen.c b/src/screen.c
index 84951c5cc6..d219b13c38 100644
--- 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;
diff --git a/src/testdir/test_fold.vim b/src/testdir/test_fold.vim
index d451b1eb49..a032f4536e 100644
--- 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
diff --git a/src/version.c b/src/version.c
index be2c759d99..350f0a1334 100644
--- 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,