Mercurial > vim
changeset 14307:df27d6270691 v8.1.0169
patch 8.1.0169: calling message_filtered() a bit too often
commit https://github.com/vim/vim/commit/a9defadb8f03ecd03f3297305d5482ba380774dc
Author: Bram Moolenaar <Bram@vim.org>
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.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 08 Jul 2018 18:30:06 +0200 |
parents | 006f608a77b5 |
children | 5ffdc5efb1f4 |
files | runtime/doc/quickfix.txt src/quickfix.c src/version.c |
diffstat | 3 files changed, 15 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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;