# HG changeset patch # User Christian Brabandt # Date 1531067406 -7200 # Node ID df27d6270691cf1aacca4fd4ef7cb26b1b9fcca8 # Parent 006f608a77b578e30ee3729cd42da04cc63df66f patch 8.1.0169: calling message_filtered() a bit too often commit https://github.com/vim/vim/commit/a9defadb8f03ecd03f3297305d5482ba380774dc Author: Bram Moolenaar Date: Sun Jul 8 18:20:24 2018 +0200 patch 8.1.0169: calling message_filtered() a bit too often Problem: Calling message_filtered() a bit too often. Solution: Only call message_filtered() when filtering is already false. diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -298,6 +298,10 @@ processing a quickfix or location list c from the last error backwards, -1 being the last error. The 'switchbuf' settings are respected when jumping to a buffer. + The |:filter| command can be used to display only the + quickfix entries matching a supplied pattern. The + pattern is matched against the filename, module name, + pattern and text of the entry. :cl[ist] +{count} List the current and next {count} valid errors. This is similar to ":clist from from+count", where "from" @@ -1287,7 +1291,7 @@ to the file. Changing directory The following uppercase conversion characters specify the type of special -format strings. At most one of them may be given as a prefix at the begin +format strings. At most one of them may be given as a prefix at the beginning of a single comma-separated format pattern. Some compilers produce messages that consist of directory names that have to be prepended to each file name read by %f (example: GNU make). The following diff --git a/src/quickfix.c b/src/quickfix.c --- a/src/quickfix.c +++ b/src/quickfix.c @@ -3139,18 +3139,21 @@ qf_list(exarg_T *eap) sprintf((char *)IObuff, "%2d", i); else vim_snprintf((char *)IObuff, IOSIZE, "%2d %s", - i, (char *)fname); + i, (char *)fname); } // Support for filtering entries using :filter /pat/ clist - filter_entry = 1; + // Match against the module name, file name, search pattern and + // text of the entry. + filter_entry = TRUE; if (qfp->qf_module != NULL && *qfp->qf_module != NUL) filter_entry &= message_filtered(qfp->qf_module); - if (fname != NULL) + if (filter_entry && fname != NULL) filter_entry &= message_filtered(fname); - if (qfp->qf_pattern != NULL) + if (filter_entry && qfp->qf_pattern != NULL) filter_entry &= message_filtered(qfp->qf_pattern); - filter_entry &= message_filtered(qfp->qf_text); + if (filter_entry) + filter_entry &= message_filtered(qfp->qf_text); if (filter_entry) goto next_entry; diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -790,6 +790,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 169, +/**/ 168, /**/ 167,