diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index d20a91dc2d..7b9c418a46 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1257,7 +1257,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/nvim/quickfix.c b/src/nvim/quickfix.c index 81da410826..6779f4e05d 100644 --- a/src/nvim/quickfix.c +++ b/src/nvim/quickfix.c @@ -2551,17 +2551,21 @@ void qf_list(exarg_T *eap) } // Support for filtering entries using :filter /pat/ clist - int filter_entry = 1; + // Match against the module name, file name, search pattern and + // text of the entry. + bool 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; }