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")

Reply via email to