summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-07-20 21:44:37 +0200
committerBram Moolenaar <Bram@vim.org>2016-07-20 21:44:37 +0200
commitc1542744e788d96fed24dd421f43009288092504 (patch)
tree502ef35e555f7ef44ae84e6984dc407703af1af0
parentb869c0da31716ff14bbfd63346d140d0a1d68af7 (diff)
downloadvim-git-c1542744e788d96fed24dd421f43009288092504.tar.gz
patch 7.4.2081v7.4.2081
Problem: Line numbers in the error list are not always adjusted. Solution: Set b_has_qf_entry properly. (Yegappan Lakshmanan)
-rw-r--r--src/quickfix.c11
-rw-r--r--src/structs.h2
-rw-r--r--src/testdir/test_quickfix.vim17
-rw-r--r--src/version.c2
4 files changed, 21 insertions, 11 deletions
diff --git a/src/quickfix.c b/src/quickfix.c
index fecc2c9eb..51f96dcaa 100644
--- 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 *directory, char_u *fname)
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;
+ int buf_has_flag = wp == NULL ? BUF_HAS_QF_ENTRY : BUF_HAS_LL_ENTRY;
- if (!curbuf->b_has_qf_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;
}
/*
diff --git a/src/structs.h b/src/structs.h
index 00a8e035b..191fa1f92 100644
--- 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' */
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index 83f4d0cbe..e79315b96 100644
--- 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
diff --git a/src/version.c b/src/version.c
index 742f78b29..4a8235599 100644
--- 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,