# HG changeset patch # User Bram Moolenaar # Date 1668344404 -3600 # Node ID 7678a5c9334a4c319df4abf831e2cc0c5b5e62a8 # Parent f5a13ec7013e86ecc8dde65cac24140cacc0ccc9 patch 9.0.0870: get E967 when using text property in quickfix window Commit: https://github.com/vim/vim/commit/2f7bfe66a1373051792f2ecaeefb66049825221d Author: Bram Moolenaar Date: Sun Nov 13 12:54:50 2022 +0000 patch 9.0.0870: get E967 when using text property in quickfix window Problem: Get E967 when using text property in quickfix window. (Sergey Vlasov) Solution: Do not add an extra NUL and compute the text length correctly. (closes #11513) diff --git a/src/quickfix.c b/src/quickfix.c --- 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); - } - - ga_append(gap, NUL); - - if (ml_append_buf(buf, lnum, gap->ga_data, gap->ga_len + 1, FALSE) == FAIL) + qf_fmt_text(gap, gap->ga_len > 3 ? skipwhite(qfp->qf_text) + : qfp->qf_text); + } + + 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 --- 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 --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 870, +/**/ 869, /**/ 868,