diff --git a/src/quickfix.c b/src/quickfix.c index f85fff56f..403c397d5 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -4645,7 +4645,10 @@ qf_buf_add_line( // If the 'quickfixtextfunc' function returned a non-empty custom string // for this entry, then use it. if (qftf_str != NULL && *qftf_str != NUL) + { ga_concat(gap, qftf_str); + ga_append(gap, NUL); + } else { if (qfp->qf_module != NULL) @@ -4687,12 +4690,11 @@ qf_buf_add_line( // Remove newlines and leading whitespace from the text. // For an unrecognized line keep the indent, the compiler may // mark a word with ^^^^. - qf_fmt_text(gap, gap->ga_len > 3 ? skipwhite(qfp->qf_text) : qfp->qf_text); + qf_fmt_text(gap, gap->ga_len > 3 ? skipwhite(qfp->qf_text) + : qfp->qf_text); } - ga_append(gap, NUL); - - if (ml_append_buf(buf, lnum, gap->ga_data, gap->ga_len + 1, FALSE) == FAIL) + if (ml_append_buf(buf, lnum, gap->ga_data, gap->ga_len, FALSE) == FAIL) return FAIL; return OK; diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim index 7ec5998da..ac2be259a 100644 --- a/src/testdir/test_textprop.vim +++ b/src/testdir/test_textprop.vim @@ -3434,4 +3434,31 @@ func Test_insert_text_change_arg() call StopVimInTerminal(buf) endfunc +def Test_textprop_in_quickfix_window() + enew! + var prop_type = 'my_prop' + prop_type_add(prop_type, {}) + + for lnum in range(1, 10) + setline(lnum, 'hello world') + endfor + + cgetbuffer + copen + + var bufnr = bufnr() + for lnum in range(1, line('$', bufnr->bufwinid())) + prop_add(lnum, 1, { + id: 1000 + lnum, + type: prop_type, + bufnr: bufnr, + }) + endfor + + prop_type_delete(prop_type) + cclose + bwipe! +enddef + + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 10aa6dedc..73c106e1d 100644 --- a/src/version.c +++ b/src/version.c @@ -695,6 +695,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 870, /**/ 869, /**/