diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-09-22 15:36:24 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-22 15:36:24 +0800 |
commit | 64e8a3c4d19eab40888fbac36b96e97bd9d68c42 (patch) | |
tree | d8292fcfe24ce5779a0f27ac1e006e251e3a3ea2 /src/nvim/fold.c | |
parent | 34a786bc49598eeafef3fffcb0836d4557e51638 (diff) | |
download | rneovim-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.c | 9 |
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; } |