branch: externals/consult
commit 1f0ae1ee8b96b7050b3995d2942c5d6b4eaa08f4
Author: Daniel Mendler <[email protected]>
Commit: Daniel Mendler <[email protected]>
Add new command consult-grep-match
consult-compile-error: Stop showing grep matches.
---
CHANGELOG.org | 8 ++++++++
README.org | 8 ++++++--
consult-compile.el | 49 ++++++++++++++++++++++++++-----------------------
consult.el | 13 +++++++++++++
4 files changed, 53 insertions(+), 25 deletions(-)
diff --git a/CHANGELOG.org b/CHANGELOG.org
index 0dab3eb1f5..915d6c23d6 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -2,6 +2,14 @@
#+author: Daniel Mendler
#+language: en
+* Development
+
+- New command =consult-grep-match= based on =consult-compile-error=, which
shows
+ Grep matches of related Grep buffers.
+- =consult-compile-error=: Exclude Grep matches. Show only compilation errors
from
+ compilation buffers.
+- ~consult-compile-error~: Remove =g= narrow key.
+
* Version 2.7 (2025-08-05)
- ~consult-buffer-list-function~: New customizable variable to support frame or
diff --git a/README.org b/README.org
index f6b30ac78a..040e5a714c 100644
--- a/README.org
+++ b/README.org
@@ -246,12 +246,15 @@ their descriptions.
#+cindex: find
#+cindex: locate
+#+findex: consult-grep-match
#+findex: consult-grep
#+findex: consult-ripgrep
#+findex: consult-git-grep
#+findex: consult-find
#+findex: consult-fd
#+findex: consult-locate
+- =consult-grep-match=: Jump to a Grep match in related Grep buffers. Supports
+ live preview narrowing and recursive editing.
- =consult-grep=, =consult-ripgrep=, =consult-git-grep=: Search for regular
expression
in files. Consult invokes Grep asynchronously, while you enter the search
term. After at least =consult-async-min-input= characters, the search gets
@@ -287,8 +290,8 @@ their descriptions.
#+findex: consult-compile-error
#+findex: consult-flymake
#+findex: consult-xref
-- =consult-compile-error=: Jump to a compilation error. Supports live preview
- narrowing and recursive editing.
+- =consult-compile-error=: Jump to a compilation error in related compilation
+ buffers. Supports live preview narrowing and recursive editing.
- =consult-flymake=: Jump to Flymake diagnostic. Supports live preview and
recursive editing. The command supports narrowing. Press =e SPC=, =w SPC=,
=n SPC=
to only show errors, warnings and notes respectively.
@@ -795,6 +798,7 @@ configuration examples.
("M-y" . consult-yank-pop) ;; orig. yank-pop
;; M-g bindings in `goto-map'
("M-g e" . consult-compile-error)
+ ("M-g r" . consult-grep-match)
("M-g f" . consult-flymake) ;; Alternative:
consult-flycheck
("M-g g" . consult-goto-line) ;; orig. goto-line
("M-g M-g" . consult-goto-line) ;; orig. goto-line
diff --git a/consult-compile.el b/consult-compile.el
index 6b1f8aae26..0342261bf8 100644
--- a/consult-compile.el
+++ b/consult-compile.el
@@ -45,10 +45,11 @@
(setq pos end)))
str))
-(defun consult-compile--error-candidates (buffer)
+(defun consult-compile--candidates (buffer)
"Return alist of errors and positions in BUFFER, a compilation buffer."
(with-current-buffer buffer
(let ((candidates)
+ (grep (derived-mode-p 'grep-mode 'grep-edit-mode))
(pos (point-min)))
(save-excursion
(while (setq pos (compilation-next-single-property-change pos
'compilation-message))
@@ -57,10 +58,9 @@
(goto-char pos)
(push (propertize
(consult-compile--font-lock (consult--buffer-substring pos
(pos-eol)))
- 'consult--type (pcase (compilation--message->type msg)
- (0 ?i)
- (1 ?w)
- (_ ?e))
+ 'consult--type (and (not grep)
+ (pcase (compilation--message->type msg)
+ (0 ?i) (1 ?w) (_ ?e)))
'consult--candidate (point-marker))
candidates))))
(nreverse candidates))))
@@ -77,14 +77,16 @@
(compilation-next-error-function 0)
(point-marker)))))))
-(defun consult-compile--compilation-buffers (file)
- "Return a list of compilation buffers relevant to FILE."
+(defun consult-compile--buffers (grep file)
+ "List of compilation buffers relevant to FILE.
+If GREP is non-nil, search Grep buffers."
(consult--buffer-query
:sort 'alpha :predicate
(lambda (buffer)
- (with-current-buffer buffer
- (and (compilation-buffer-internal-p)
- (file-in-directory-p file default-directory))))))
+ (and (buffer-local-value 'compilation-locs buffer)
+ (file-in-directory-p file (buffer-local-value 'default-directory
buffer))
+ (with-current-buffer buffer
+ (eq (not grep) (not (derived-mode-p 'grep-mode
'grep-edit-mode))))))))
(defun consult-compile--state ()
"Like `consult--jump-state', also setting the current compilation error."
@@ -100,21 +102,22 @@
(funcall jump action pos)))))
;;;###autoload
-(defun consult-compile-error (&optional arg)
- "Jump to a compilation error in the current buffer.
-
-This command collects entries from compilation buffers and grep buffers
-related to the current buffer. The command supports preview of the
-currently selected error. With prefix ARG, jump to the error message in
-the compilation buffer, instead of to the actual location of the error."
+(defun consult-compile-error (&optional arg grep)
+ "Jump to a compilation error related to the current project or file.
+
+This command collects entries from all related compilation buffers. The
+command supports preview of the currently selected error. With prefix
+ARG, jump to the error message in the compilation buffer, instead of to
+the actual location of the error. If GREP is non-nil, Grep buffers are
+searched."
(interactive "P")
(consult--read
- (or (mapcan #'consult-compile--error-candidates
- (or (consult-compile--compilation-buffers
- default-directory)
- (user-error "No compilation buffers found for the current
buffer")))
- (user-error "No compilation errors found"))
- :prompt "Go to error: "
+ (or (mapcan #'consult-compile--candidates
+ (or (consult-compile--buffers
+ grep (or (consult--project-root) default-directory))
+ (user-error "No related buffers")))
+ (user-error "No %s" (if grep "matches" "errors")))
+ :prompt (format "Go to %s: " (if grep "match" "error"))
:category 'consult-compile-error
:sort nil
:require-match t
diff --git a/consult.el b/consult.el
index 2723a9e3ce..64974ede69 100644
--- a/consult.el
+++ b/consult.el
@@ -5230,6 +5230,19 @@ input."
opts paths)
hl))))))))
+(autoload 'consult-compile-error "consult-compile")
+
+;;;###autoload
+(defun consult-grep-match (&optional arg)
+ "Jump to grep matches related to the current project or file.
+
+This command collects entries from all related Grep buffers. The
+command supports preview of the currently selected match. With prefix
+ARG, jump to the match in the Grep buffer, instead of to the actual
+location of the match."
+ (interactive "P")
+ (consult-compile-error arg t))
+
;;;###autoload
(defun consult-grep (&optional dir initial)
"Search with `grep' for files in DIR where the content matches a regexp.