To: vim_dev@googlegroups.com Subject: Patch 8.2.3018 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.3018 Problem: Formatting using quickfixtextfunc is lost when updating location lists for different buffers. (Yorick Peterse) Solution: Use the right window for the locaiton list. (Yegappan Lakshmanan, closes #8400, closes #8403) Files: src/quickfix.c, src/testdir/test_quickfix.vim *** ../vim-8.2.3017/src/quickfix.c 2021-06-02 13:28:11.435120452 +0200 --- src/quickfix.c 2021-06-19 18:16:44.669502608 +0200 *************** *** 4473,4479 **** 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 --- 4473,4489 ---- int qf_winid = 0; if (IS_LL_STACK(qi)) ! { ! if (curwin->w_llist == qi) ! win = curwin; ! else ! { ! win = qf_find_win_with_loclist(qi); ! if (win == NULL) ! return; ! } ! qf_winid = win->w_id; ! } if (old_last == NULL) // set curwin/curbuf to buf and save a few things *** ../vim-8.2.3017/src/testdir/test_quickfix.vim 2021-05-05 21:31:36.068018579 +0200 --- src/testdir/test_quickfix.vim 2021-06-19 18:16:44.673502585 +0200 *************** *** 5231,5236 **** --- 5231,5294 ---- call Xtest_qftextfunc('l') endfunc + " Test for updating a location list for some other window and check that + " 'qftextfunc' uses the correct location list. + func Test_qftextfunc_other_loclist() + %bw! + call setloclist(0, [], 'f') + + " create a window and a location list for it and open the location list + " window + lexpr ['F1:10:12:one', 'F1:20:14:two'] + let w1_id = win_getid() + call setloclist(0, [], ' ', + \ {'lines': ['F1:10:12:one', 'F1:20:14:two'], + \ 'quickfixtextfunc': + \ {d -> map(getloclist(d.winid, {'id' : d.id, + \ 'items' : 1}).items[d.start_idx-1:d.end_idx-1], + \ "'Line ' .. v:val.lnum .. ', Col ' .. v:val.col")}}) + lwindow + let w2_id = win_getid() + + " create another window and a location list for it and open the location + " list window + topleft new + let w3_id = win_getid() + call setloclist(0, [], ' ', + \ {'lines': ['F2:30:32:eleven', 'F2:40:34:twelve'], + \ 'quickfixtextfunc': + \ {d -> map(getloclist(d.winid, {'id' : d.id, + \ 'items' : 1}).items[d.start_idx-1:d.end_idx-1], + \ "'Ligne ' .. v:val.lnum .. ', Colonne ' .. v:val.col")}}) + lwindow + let w4_id = win_getid() + + topleft new + lexpr ['F3:50:52:green', 'F3:60:54:blue'] + let w5_id = win_getid() + + " change the location list for some other window + call setloclist(0, [], 'r', {'lines': ['F3:55:56:aaa', 'F3:57:58:bbb']}) + call setloclist(w1_id, [], 'r', {'lines': ['F1:62:63:bbb', 'F1:64:65:ccc']}) + call setloclist(w3_id, [], 'r', {'lines': ['F2:76:77:ddd', 'F2:78:79:eee']}) + call assert_equal(['Line 62, Col 63', 'Line 64, Col 65'], + \ getbufline(winbufnr(w2_id), 1, '$')) + call assert_equal(['Ligne 76, Colonne 77', 'Ligne 78, Colonne 79'], + \ getbufline(winbufnr(w4_id), 1, '$')) + call setloclist(w2_id, [], 'r', {'lines': ['F1:32:33:fff', 'F1:34:35:ggg']}) + call setloclist(w4_id, [], 'r', {'lines': ['F2:46:47:hhh', 'F2:48:49:jjj']}) + call assert_equal(['Line 32, Col 33', 'Line 34, Col 35'], + \ getbufline(winbufnr(w2_id), 1, '$')) + call assert_equal(['Ligne 46, Colonne 47', 'Ligne 48, Colonne 49'], + \ getbufline(winbufnr(w4_id), 1, '$')) + + call win_gotoid(w5_id) + lwindow + call assert_equal(['F3|55 col 56| aaa', 'F3|57 col 58| bbb'], + \ getline(1, '$')) + %bw! + endfunc + " Running :lhelpgrep command more than once in a help window, doesn't jump to " the help topic func Test_lhelpgrep_from_help_window() *** ../vim-8.2.3017/src/version.c 2021-06-17 22:27:44.505773022 +0200 --- src/version.c 2021-06-19 18:20:49.528244304 +0200 *************** *** 752,753 **** --- 752,755 ---- { /* Add new patch number below this line */ + /**/ + 3018, /**/ -- hundred-and-one symptoms of being an internet addict: 18. Your wife drapes a blond wig over your monitor to remind you of what she looks like. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///