branch: externals/consult
commit f7d8dc25e1d3af2d1ef233799dfea1a6628c1b6f
Author: Daniel Mendler <m...@daniel-mendler.de>
Commit: Daniel Mendler <m...@daniel-mendler.de>

    Add consult-buffer-list customizable variable to support frame/tab isolation
---
 consult.el | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/consult.el b/consult.el
index d475dc461e..312f6f92ee 100644
--- a/consult.el
+++ b/consult.el
@@ -227,6 +227,13 @@ with a space character, the *Completions* buffer and a few 
log
 buffers.  The regular expressions are matched case sensitively."
   :type '(repeat regexp))
 
+(defcustom consult-buffer-list #'buffer-list
+  "List of buffers to use for selection.
+By default, the function `buffer-list' is used which returns all
+buffers.  Set it to a custom function to configure buffer isolation."
+  :type `(choice (const :tag "All buffers" ,#'buffer-list)
+                 (function :tag "Custom function")))
+
 (defcustom consult-buffer-sources
   '(consult--source-hidden-buffer
     consult--source-modified-buffer
@@ -4693,7 +4700,7 @@ to search and is passed to `consult--buffer-query'."
 
 (cl-defun consult--buffer-query ( &key sort directory mode as predicate 
(filter t)
                                   include (exclude consult-buffer-filter)
-                                  (buffer-list t))
+                                  (buffer-list consult-buffer-list))
   "Query for a list of matching buffers.
 The function supports filtering by various criteria which are
 used throughout Consult.  In particular it is the backbone of
@@ -4705,10 +4712,13 @@ EXCLUDE is a list of regexps.
 INCLUDE is a list of regexps.
 MODE can be a mode or a list of modes to restrict the returned buffers.
 PREDICATE is a predicate function.
-BUFFER-LIST is the unfiltered list of buffers.
+BUFFER-LIST is a function or a list of buffers.
 AS is a conversion function."
   (let ((root (consult--normalize-directory directory)))
-    (setq buffer-list (if (eq buffer-list t) (buffer-list) (copy-sequence 
buffer-list)))
+    (setq buffer-list (cond
+                        ((functionp buffer-list) (funcall buffer-list))
+                        ((listp buffer-list) (copy-sequence buffer-list))
+                        (t (buffer-list))))
     (when sort
       (setq buffer-list (funcall (intern (format "consult--buffer-sort-%s" 
sort)) buffer-list)))
     (when (or filter mode as root)

Reply via email to