changeset 23203:db97415750ce v8.2.2147

patch 8.2.2147: quickfix window title not updated in all tab pages Commit: https://github.com/vim/vim/commit/530bed993e41bda6f717a8ddd0acb39464f95336 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Dec 16 21:02:56 2020 +0100 patch 8.2.2147: quickfix window title not updated in all tab pages Problem: Quickfix window title not updated in all tab pages. Solution: Update the quickfix window title in all tab pages. (Yegappan Lakshmanan, closes #7481, closes #7466)
author Bram Moolenaar <Bram@vim.org>
date Wed, 16 Dec 2020 21:15:04 +0100
parents 71089c6b385c
children a5acdf9557e8
files src/quickfix.c src/testdir/test_quickfix.vim src/version.c
diffstat 3 files changed, 41 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -4431,21 +4431,26 @@ qf_process_qftf_option(void)
 }
 
 /*
- * Update the w:quickfix_title variable in the quickfix/location list window
+ * Update the w:quickfix_title variable in the quickfix/location list window in
+ * all the tab pages.
  */
     static void
 qf_update_win_titlevar(qf_info_T *qi)
 {
+    qf_list_T	*qfl = qf_get_curlist(qi);
+    tabpage_T	*tp;
     win_T	*win;
-    win_T	*curwin_save;
-
-    if ((win = qf_find_win(qi)) != NULL)
-    {
-	curwin_save = curwin;
-	curwin = win;
-	qf_set_title_var(qf_get_curlist(qi));
-	curwin = curwin_save;
-    }
+    win_T	*save_curwin = curwin;
+
+    FOR_ALL_TAB_WINDOWS(tp, win)
+    {
+	if (is_qf_win(win, qi))
+	{
+	    curwin = win;
+	    qf_set_title_var(qfl);
+	}
+    }
+    curwin = save_curwin;
 }
 
 /*
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -4165,6 +4165,30 @@ func Test_qftitle()
   call setqflist([], 'r', {'items' : [{'filename' : 'a.c', 'lnum' : 10}]})
   call assert_equal('Errors', w:quickfix_title)
   cclose
+
+  " Switching to another quickfix list in one tab page should update the
+  " quickfix window title and statusline in all the other tab pages also
+  call setqflist([], 'f')
+  %bw!
+  cgetexpr ['file_one:1:1: error in the first quickfix list']
+  call setqflist([], 'a', {'title': 'first quickfix list'})
+  cgetexpr ['file_two:2:1: error in the second quickfix list']
+  call setqflist([], 'a', {'title': 'second quickfix list'})
+  copen
+  wincmd t
+  tabnew two
+  copen
+  wincmd t
+  colder
+  call assert_equal('first quickfix list', gettabwinvar(1, 2, 'quickfix_title'))
+  call assert_equal('first quickfix list', gettabwinvar(2, 2, 'quickfix_title'))
+  call assert_equal(1, tabpagewinnr(1))
+  call assert_equal(1, tabpagewinnr(2))
+  tabnew
+  call setqflist([], 'a', {'title': 'new quickfix title'})
+  call assert_equal('new quickfix title', gettabwinvar(1, 2, 'quickfix_title'))
+  call assert_equal('new quickfix title', gettabwinvar(2, 2, 'quickfix_title'))
+  %bw!
 endfunc
 
 func Test_lbuffer_with_bwipe()
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2147,
+/**/
     2146,
 /**/
     2145,