patch 7.4.2081
Problem: Line numbers in the error list are not always adjusted.
Solution: Set b_has_qf_entry properly. (Yegappan Lakshmanan)
diff --git a/src/quickfix.c b/src/quickfix.c
index fecc2c9..51f96dc 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -1408,7 +1408,8 @@
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 @@
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 @@
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 @@
}
if (!found_one)
- curbuf->b_has_qf_entry = FALSE;
+ curbuf->b_has_qf_entry &= ~buf_has_flag;
}
/*