branch: externals/beframe
commit 42e988c5b354d37acc22e5075710bf0490a1274d
Author: Protesilaos Stavrou <i...@protesilaos.com>
Commit: Protesilaos Stavrou <i...@protesilaos.com>

    Add user option framed-buffers-global-buffers
---
 framed-buffers.el | 37 ++++++++++++++++++++++++++++++++-----
 1 file changed, 32 insertions(+), 5 deletions(-)

diff --git a/framed-buffers.el b/framed-buffers.el
index 211441641c..8e1b3948e1 100644
--- a/framed-buffers.el
+++ b/framed-buffers.el
@@ -34,12 +34,39 @@
   "Isolate buffers per frame WORK-IN-PROGRESS."
   :group 'frames)
 
-(defun framed-buffers-buffer-list (&optional frame)
+(defcustom framed-buffers-global-buffers '("*scratch*" "*Messages*" 
"*Backtrace*")
+  "List of buffer names to include in all frames.
+These buffers are shown in the buffer selection prompts even if
+they have not been used by---and thus associated with---the
+current frame.
+
+Otherwise framed buffers are limited to the frame that uses them."
+  :type '(repeat string))
+
+(defun framed-buffers--frame-buffer-list (&optional frame)
   "Produce list of buffers for either specified or current FRAME."
-  (seq-filter (lambda (buf)
-                (and (bufferp buf)
-                     (not (string-prefix-p " " (buffer-name buf)))))
-              (frame-parameter frame 'buffer-list)))
+  (seq-filter
+   (lambda (buf)
+     (and (bufferp buf)
+          (not (string-prefix-p " " (buffer-name buf)))))
+   (frame-parameter frame 'buffer-list)))
+
+(defun framed-buffers--global-buffer-list ()
+  "Return list of `framed-buffers-global-buffers' buffer objects."
+  (mapcar
+   (lambda (name)
+     (get-buffer name))
+   framed-buffers-global-buffers))
+
+(defun framed-buffers-buffer-list (&optional frame)
+  "Return list of buffers that are used by the current frame.
+With optional FRAME as an object that satisfies `framep', return
+the list of buffers that are used by FRAME.
+
+Include `framed-buffers-global-buffers' in the list."
+  (delete-dups
+   (append (framed-buffers--frame-buffer-list frame)
+           (framed-buffers--global-buffer-list))))
 
 (defun framed-buffers--read-buffer-p (buf &optional frame)
   "Return non-nil if BUF belongs to the current FRAME.

Reply via email to