To: vim_dev@googlegroups.com Subject: Patch 8.2.0933 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.0933 Problem: 'quickfixtextfunc' does not get window ID of location list. Solution: Add "winid" to the dict argument. (Yegappan Lakshmanan, closes #6222) Files: runtime/doc/quickfix.txt, src/quickfix.c, src/testdir/test_quickfix.vim *** ../vim-8.2.0932/runtime/doc/quickfix.txt 2020-06-07 14:10:34.896126427 +0200 --- runtime/doc/quickfix.txt 2020-06-08 19:16:54.224572111 +0200 *************** *** 1954,1959 **** --- 1953,1961 ---- quickfix set to 1 when called for a quickfix list and 0 when called for a location list. + winid for a location list, set to the id of the window with the + location list. For a quickfix list, set to 0. Can be used in + getloclist() to get the location list entry. id quickfix or location list identifier idx index of the entry in the quickfix or location list *** ../vim-8.2.0932/src/quickfix.c 2020-06-07 14:10:34.896126427 +0200 --- src/quickfix.c 2020-06-08 19:16:54.224572111 +0200 *************** *** 175,181 **** static win_T *qf_find_win(qf_info_T *qi); static buf_T *qf_find_buf(qf_info_T *qi); static void qf_update_buffer(qf_info_T *qi, qfline_T *old_last); ! static void qf_fill_buffer(qf_list_T *qfl, buf_T *buf, qfline_T *old_last); static buf_T *load_dummy_buffer(char_u *fname, char_u *dirname_start, char_u *resulting_dir); static void wipe_dummy_buffer(buf_T *buf, char_u *dirname_start); static void unload_dummy_buffer(buf_T *buf, char_u *dirname_start); --- 175,181 ---- static win_T *qf_find_win(qf_info_T *qi); static buf_T *qf_find_buf(qf_info_T *qi); static void qf_update_buffer(qf_info_T *qi, qfline_T *old_last); ! static void qf_fill_buffer(qf_list_T *qfl, buf_T *buf, qfline_T *old_last, int qf_winid); static buf_T *load_dummy_buffer(char_u *fname, char_u *dirname_start, char_u *resulting_dir); static void wipe_dummy_buffer(buf_T *buf, char_u *dirname_start); static void unload_dummy_buffer(buf_T *buf, char_u *dirname_start); *************** *** 4189,4195 **** lnum = qfl->qf_index; // Fill the buffer with the quickfix list. ! qf_fill_buffer(qfl, curbuf, NULL); decr_quickfix_busy(); --- 4189,4195 ---- lnum = qfl->qf_index; // Fill the buffer with the quickfix list. ! qf_fill_buffer(qfl, curbuf, NULL, curwin->w_id); decr_quickfix_busy(); *************** *** 4381,4386 **** --- 4381,4390 ---- if (buf != NULL) { linenr_T old_line_count = buf->b_ml.ml_line_count; + int qf_winid = 0; + + if (IS_LL_STACK(qi)) + qf_winid = curwin->w_id; if (old_last == NULL) // set curwin/curbuf to buf and save a few things *************** *** 4388,4394 **** qf_update_win_titlevar(qi); ! qf_fill_buffer(qf_get_curlist(qi), buf, old_last); ++CHANGEDTICK(buf); if (old_last == NULL) --- 4392,4398 ---- qf_update_win_titlevar(qi); ! qf_fill_buffer(qf_get_curlist(qi), buf, old_last, qf_winid); ++CHANGEDTICK(buf); if (old_last == NULL) *************** *** 4415,4421 **** buf_T *buf, // quickfix window buffer linenr_T lnum, qfline_T *qfp, ! char_u *dirname) { int len; buf_T *errbuf; --- 4419,4426 ---- buf_T *buf, // quickfix window buffer linenr_T lnum, qfline_T *qfp, ! char_u *dirname, ! int qf_winid) { int len; buf_T *errbuf; *************** *** 4433,4442 **** typval_T args[1]; dict_T *d; ! // create 'info' dict argument if ((d = dict_alloc_lock(VAR_FIXED)) == NULL) return FAIL; dict_add_number(d, "quickfix", (long)IS_QF_LIST(qfl)); dict_add_number(d, "id", (long)qfl->qf_id); dict_add_number(d, "idx", (long)(lnum + 1)); ++d->dv_refcount; --- 4438,4448 ---- typval_T args[1]; dict_T *d; ! // create the dict argument if ((d = dict_alloc_lock(VAR_FIXED)) == NULL) return FAIL; dict_add_number(d, "quickfix", (long)IS_QF_LIST(qfl)); + dict_add_number(d, "winid", (long)qf_winid); dict_add_number(d, "id", (long)qfl->qf_id); dict_add_number(d, "idx", (long)(lnum + 1)); ++d->dv_refcount; *************** *** 4535,4541 **** * ml_delete() is used and autocommands will be triggered. */ static void ! qf_fill_buffer(qf_list_T *qfl, buf_T *buf, qfline_T *old_last) { linenr_T lnum; qfline_T *qfp; --- 4541,4547 ---- * ml_delete() is used and autocommands will be triggered. */ static void ! qf_fill_buffer(qf_list_T *qfl, buf_T *buf, qfline_T *old_last, int qf_winid) { linenr_T lnum; qfline_T *qfp; *************** *** 4574,4580 **** } while (lnum < qfl->qf_count) { ! if (qf_buf_add_line(qfl, buf, lnum, qfp, dirname) == FAIL) break; ++lnum; --- 4580,4586 ---- } while (lnum < qfl->qf_count) { ! if (qf_buf_add_line(qfl, buf, lnum, qfp, dirname, qf_winid) == FAIL) break; ++lnum; *** ../vim-8.2.0932/src/testdir/test_quickfix.vim 2020-06-07 14:10:34.900126463 +0200 --- src/testdir/test_quickfix.vim 2020-06-08 19:16:54.228572094 +0200 *************** *** 4822,4828 **** let qfl = getqflist({'id' : a:info.id, 'idx' : a:info.idx, \ 'items' : 1}).items else ! let qfl = getloclist(0, {'id' : a:info.id, 'idx' : a:info.idx, \ 'items' : 1}).items endif --- 4822,4828 ---- let qfl = getqflist({'id' : a:info.id, 'idx' : a:info.idx, \ 'items' : 1}).items else ! let qfl = getloclist(a:info.winid, {'id' : a:info.id, 'idx' : a:info.idx, \ 'items' : 1}).items endif *************** *** 4863,4869 **** let qfl = getqflist({'id' : a:info.id, 'idx' : a:info.idx, \ 'items' : 1}).items else ! let qfl = getloclist(0, {'id' : a:info.id, 'idx' : a:info.idx, \ 'items' : 1}).items endif if empty(qfl) --- 4863,4869 ---- let qfl = getqflist({'id' : a:info.id, 'idx' : a:info.idx, \ 'items' : 1}).items else ! let qfl = getloclist(a:info.winid, {'id' : a:info.id, 'idx' : a:info.idx, \ 'items' : 1}).items endif if empty(qfl) *************** *** 4878,4883 **** --- 4878,4888 ---- call assert_equal('Line 10, Col 2', getline(1)) call assert_equal('Line 20, Col 4', getline(2)) Xclose + " Add entries to the list when the quickfix buffer is hidden + Xaddexpr ['F1:30:6:red'] + Xwindow + call assert_equal('Line 30, Col 6', getline(3)) + Xclose call g:Xsetlist([], 'r', {'quickfixtextfunc' : ''}) set quickfixtextfunc& delfunc PerQfText *** ../vim-8.2.0932/src/version.c 2020-06-08 18:54:44.957796367 +0200 --- src/version.c 2020-06-08 19:19:29.359987225 +0200 *************** *** 756,757 **** --- 756,759 ---- { /* Add new patch number below this line */ + /**/ + 933, /**/ -- You were lucky to have a LAKE! There were a hundred and sixty of us living in a small shoebox in the middle of the road. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///