changeset 9608:fa64afb99dda v7.4.2081

commit https://github.com/vim/vim/commit/c1542744e788d96fed24dd421f43009288092504 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jul 20 21:44:37 2016 +0200 patch 7.4.2081 Problem: Line numbers in the error list are not always adjusted. Solution: Set b_has_qf_entry properly. (Yegappan Lakshmanan)
author Christian Brabandt <cb@256bit.org>
date Wed, 20 Jul 2016 21:45:05 +0200
parents 8fb453704fe8
children 17ae75ac3287
files src/quickfix.c src/structs.h src/testdir/test_quickfix.vim src/version.c
diffstat 4 files changed, 22 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -1408,7 +1408,8 @@ qf_add_entry(
 
 	qfp->qf_fnum = bufnum;
 	if (buf != NULL)
-	    buf->b_has_qf_entry = TRUE;
+	    buf->b_has_qf_entry |=
+		(qi == &ql_info) ? BUF_HAS_QF_ENTRY : BUF_HAS_LL_ENTRY;
     }
     else
 	qfp->qf_fnum = qf_get_fnum(qi, dir, fname);
@@ -1680,7 +1681,8 @@ qf_get_fnum(qf_info_T *qi, char_u *direc
     if (buf == NULL)
 	return 0;
 
-    buf->b_has_qf_entry = TRUE;
+    buf->b_has_qf_entry =
+			(qi == &ql_info) ? BUF_HAS_QF_ENTRY : BUF_HAS_LL_ENTRY;
     return buf->b_fnum;
 }
 
@@ -2728,8 +2730,9 @@ qf_mark_adjust(
     int		idx;
     qf_info_T	*qi = &ql_info;
     int		found_one = FALSE;
-
-    if (!curbuf->b_has_qf_entry)
+    int		buf_has_flag = wp == NULL ? BUF_HAS_QF_ENTRY : BUF_HAS_LL_ENTRY;
+
+    if (!(curbuf->b_has_qf_entry & buf_has_flag))
 	return;
     if (wp != NULL)
     {
@@ -2758,7 +2761,7 @@ qf_mark_adjust(
 		}
 
     if (!found_one)
-	curbuf->b_has_qf_entry = FALSE;
+	curbuf->b_has_qf_entry &= ~buf_has_flag;
 }
 
 /*
--- a/src/structs.h
+++ b/src/structs.h
@@ -1906,6 +1906,8 @@ struct file_buffer
 #ifdef FEAT_QUICKFIX
     char_u	*b_p_bh;	/* 'bufhidden' */
     char_u	*b_p_bt;	/* 'buftype' */
+#define BUF_HAS_QF_ENTRY 1
+#define BUF_HAS_LL_ENTRY 2
     int		b_has_qf_entry;
 #endif
     int		b_p_bl;		/* 'buflisted' */
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -1341,13 +1341,14 @@ function! Xadjust_qflnum(cchar)
 
   enew | only
 
-  call s:create_test_file('Xqftestfile')
-  edit Xqftestfile
+  let fname = 'Xqftestfile' . a:cchar
+  call s:create_test_file(fname)
+  exe 'edit ' . fname
 
-  Xgetexpr ['Xqftestfile:5:Line5',
-		\ 'Xqftestfile:10:Line10',
-		\ 'Xqftestfile:15:Line15',
-		\ 'Xqftestfile:20:Line20']
+  Xgetexpr [fname . ':5:Line5',
+	      \ fname . ':10:Line10',
+	      \ fname . ':15:Line15',
+	      \ fname . ':20:Line20']
 
   6,14delete
   call append(6, ['Buffer', 'Window'])
@@ -1359,11 +1360,13 @@ function! Xadjust_qflnum(cchar)
   call assert_equal(13, l[3].lnum)
 
   enew!
-  call delete('Xqftestfile')
+  call delete(fname)
 endfunction
 
 function! Test_adjust_lnum()
+  call setloclist(0, [])
   call Xadjust_qflnum('c')
+  call setqflist([])
   call Xadjust_qflnum('l')
 endfunction
 
--- a/src/version.c
+++ b/src/version.c
@@ -759,6 +759,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2081,
+/**/
     2080,
 /**/
     2079,