aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/fold.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-09-22 15:36:24 +0800
committerGitHub <noreply@github.com>2023-09-22 15:36:24 +0800
commit64e8a3c4d19eab40888fbac36b96e97bd9d68c42 (patch)
treed8292fcfe24ce5779a0f27ac1e006e251e3a3ea2 /src/nvim/fold.c
parent34a786bc49598eeafef3fffcb0836d4557e51638 (diff)
downloadrneovim-64e8a3c4d19eab40888fbac36b96e97bd9d68c42.tar.gz
rneovim-64e8a3c4d19eab40888fbac36b96e97bd9d68c42.tar.bz2
rneovim-64e8a3c4d19eab40888fbac36b96e97bd9d68c42.zip
fix(ui): handle virtual text with multiple hl in more cases (#25304)
Diffstat (limited to 'src/nvim/fold.c')
-rw-r--r--src/nvim/fold.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/nvim/fold.c b/src/nvim/fold.c
index 1d5ba49301..d874e904d0 100644
--- a/src/nvim/fold.c
+++ b/src/nvim/fold.c
@@ -3344,8 +3344,13 @@ void f_foldtextresult(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
}
if (kv_size(vt) > 0) {
assert(*text == NUL);
- for (size_t i = 0; i < kv_size(vt); i++) {
- char *new_text = concat_str(text, kv_A(vt, i).text);
+ for (size_t i = 0; i < kv_size(vt);) {
+ int attr = 0;
+ char *new_text = next_virt_text_chunk(vt, &i, &attr);
+ if (new_text == NULL) {
+ break;
+ }
+ new_text = concat_str(text, new_text);
xfree(text);
text = new_text;
}