branch: externals/consult commit 53943b69605f15e0dc9a16df4662fa2dbd750246 Author: Daniel Mendler <m...@daniel-mendler.de> Commit: Daniel Mendler <m...@daniel-mendler.de>
consult--source-buffer-register: New source for buffer registers --- CHANGELOG.org | 1 + README.org | 2 +- consult.el | 18 +++++++++++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.org b/CHANGELOG.org index c038c3083d..0972a652e6 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -4,6 +4,7 @@ * Development +- ~consult--source-buffer-register~: New source for buffer registers. - ~consult--directory-prompt~: Use current directory as default, no initial input such that multiple files or directories can be selected more easily. - ~consult-compile-error~: Add prefix argument to jump to error message in the diff --git a/README.org b/README.org index d8bfe84166..7dc96dcaa6 100644 --- a/README.org +++ b/README.org @@ -98,7 +98,7 @@ their descriptions. - SPC Hidden buffers - * Modified buffers - f Files (Requires =recentf-mode=) - - r File registers + - r File and buffer registers - m Bookmarks - p Project - B Project buffers diff --git a/consult.el b/consult.el index 39d8608d99..d97bc2884f 100644 --- a/consult.el +++ b/consult.el @@ -232,6 +232,7 @@ buffers. The regular expressions are matched case sensitively." consult--source-modified-buffer consult--source-buffer consult--source-recent-file + consult--source-buffer-register consult--source-file-register consult--source-bookmark consult--source-project-buffer-hidden @@ -4916,11 +4917,26 @@ If NORECORD is non-nil, do not record the buffer switch in the buffer list." :as #'consult--buffer-pair))) "Buffer source for `consult-buffer'.") +(autoload 'consult-register--candidates "consult-register") + +(defun consult--buffer-register-p (reg) + "Return non-nil if REG is a buffer register." + (and (eq (car-safe reg) 'buffer) (buffer-live-p (get-buffer (cdr reg))))) + +(defvar consult--source-buffer-register + `( :name "Buffer Register" + :narrow (?r . "Register") + :category buffer + :state ,#'consult--buffer-state + :enabled ,(lambda () (cl-loop for (_ . reg) in register-alist + thereis (consult--buffer-register-p reg))) + :items ,(lambda () (consult-register--candidates #'consult--buffer-register-p))) + "Buffer register source.") + (defun consult--file-register-p (reg) "Return non-nil if REG is a file register." (memq (car-safe reg) '(file-query file))) -(autoload 'consult-register--candidates "consult-register") (defvar consult--source-file-register `( :name "File Register" :narrow (?r . "Register")