[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/beframe 534f11d369: Add commands to assume/unassume ind
From: |
ELPA Syncer |
Subject: |
[elpa] externals/beframe 534f11d369: Add commands to assume/unassume individual buffers |
Date: |
Mon, 27 Mar 2023 01:57:27 -0400 (EDT) |
branch: externals/beframe
commit 534f11d36964a3094595c29b470a324a2296e2b1
Author: Protesilaos Stavrou <info@protesilaos.com>
Commit: Protesilaos Stavrou <info@protesilaos.com>
Add commands to assume/unassume individual buffers
---
README.org | 19 +++++++++++++
beframe.el | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
2 files changed, 106 insertions(+), 4 deletions(-)
diff --git a/README.org b/README.org
index 1a2a1ea750..0a3116701a 100644
--- a/README.org
+++ b/README.org
@@ -116,6 +116,25 @@ The command ~beframe-unassume-frame-buffers~ (alias
~beframe-remove-frame-buffers~) prompts for a frame and then removes
its buffer list from the current frame.
+#+findex: beframe-assume-buffers
+#+findex: beframe-add-buffers
+The command ~beframe-assume-buffers~ (alias ~beframe-add-buffers~)
+adds buffers from a given frame to the current frame. In interactive
+use, the command first prompts for a frame and then asks about the
+list of buffers therein. The to-be-assumed buffer list is compiled
+with ~completing-read-multiple~. This means that the user can select
+multiple buffers, each separated by the ~crm-separator~ (typically a
+comma).
+
+#+findex: beframe-unassume-buffers
+#+findex: beframe-remove-buffers
+The command ~beframe-unassume-buffers~ (alias
+~beframe-remove-buffers~) removes buffers from the current frame. In
+interactive use, the to-be-unassumed buffer list is compiled with
+~completing-read-multiple~. This means that the user can select
+multiple buffers, each separated by the ~crm-separator~ (typically a
+comma).
+
* Features of ~beframe-mode~
:PROPERTIES:
:CUSTOM_ID: h:5b751614-8749-4aa8-aaed-f181beaddc57
diff --git a/beframe.el b/beframe.el
index 780d0e3973..bdb96fe7b4 100644
--- a/beframe.el
+++ b/beframe.el
@@ -77,6 +77,21 @@
;; `beframe-remove-frame-buffers') prompts for a frame and then
;; removes its buffer list from the current frame.
;;
+;; The command `beframe-assume-buffers' (alias `beframe-add-buffers')
+;; adds buffers from a given frame to the current frame. In interactive
+;; use, the command first prompts for a frame and then asks about the
+;; list of buffers therein. The to-be-assumed buffer list is compiled
+;; with `completing-read-multiple'. This means that the user can select
+;; multiple buffers, each separated by the `crm-separator' (typically a
+;; comma).
+;;
+;; The command `beframe-unassume-buffers' (alias
+;; `beframe-remove-buffers') removes buffers from the current frame. In
+;; interactive use, the to-be-unassumed buffer list is compiled with
+;; `completing-read-multiple'. This means that the user can select
+;; multiple buffers, each separated by the `crm-separator' (typically a
+;; comma).
+;;
;; The `beframe-mode' does the following:
;;
;; - Sets the value of `read-buffer-function' to a function that
@@ -406,7 +421,8 @@ its placement and other parameters."
When called interactively, prompt for FRAME using completion.
Else FRAME must satisfy `framep'.
-Also see `beframe-unassume-frame-buffers'."
+Also see `beframe-unassume-frame-buffers',
+`beframe-assume-buffers', `beframe-unassume-buffers'."
(interactive (list (beframe--frame-object (beframe--frame-prompt))))
(let* ((other-buffer-list (beframe-buffer-list frame))
(buffers (delete-dups (append other-buffer-list
(beframe-buffer-list)))))
@@ -423,7 +439,8 @@ Also see `beframe-unassume-frame-buffers'."
When called interactively, prompt for FRAME using completion.
Else FRAME must satisfy `framep'.
-Also see `beframe-assume-frame-buffers'."
+Also see `beframe-assume-frame-buffers',
+`beframe-assume-buffers', `beframe-unassume-buffers'."
(interactive (list (beframe--frame-object (beframe--frame-prompt))))
(let* ((other-buffer-list (beframe-buffer-list frame))
(new-buffer-list
@@ -438,8 +455,74 @@ Also see `beframe-assume-frame-buffers'."
(defalias 'beframe-remove-frame-buffers 'beframe-unassume-frame-buffers
"Alias of `beframe-unassume-frame-buffers' command.")
-;; TODO 2023-03-02: Define commands to `completing-read-multiple'
-;; assume/unassume buffers.
+(defun beframe--buffers-name-to-objects (buffers)
+ "Convert list of named BUFFERS to their corresponding objects."
+ (mapcar
+ (lambda (buf)
+ (get-buffer buf))
+ buffers))
+
+(defun beframe--buffer-list-prompt-crm (&optional frame)
+ "Select one or more buffers in FRAME separated by `crm-separator'.
+Optional FRAME argument is an object that satisfies `framep'. If
+FRAME is nil, the current frame is used."
+ (completing-read-multiple
+ "Select buffers: "
+ (beframe-buffer-names frame)
+ nil
+ :require-match))
+
+;;;###autoload
+(defun beframe-assume-buffers (buffers)
+ "Assume BUFFERS from a frame into the current buffer list.
+
+In interactive use, BUFFERS is determined with a prompt that is
+powered by `completing-read-multiple'. Multiple candidates can
+be selected, each separated by the `crm-separator' (typically a
+comma).
+
+Also see `beframe-assume-frame-buffers',
+`beframe-unassume-buffers', `beframe-unassume-frame-buffers'."
+ (interactive
+ (list
+ (beframe--buffers-name-to-objects
+ (beframe--buffer-list-prompt-crm
+ (beframe--frame-object
+ (beframe--frame-prompt))))))
+ (let ((buffer-list (delete-dups (append buffers (beframe-buffer-list)))))
+ (modify-frame-parameters
+ nil
+ `((buffer-list . ,buffer-list)))))
+
+(defalias 'beframe-add-buffers 'beframe-assume-buffers
+ "Alias of `beframe-assume-buffers' command.")
+
+;;;###autoload
+(defun beframe-unassume-buffers (buffers)
+ "Unassume BUFFERS from the current frame's buffer list.
+
+In interactive use, BUFFERS is determined with a prompt that is
+powered by `completing-read-multiple'. Multiple candidates can
+be selected, each separated by the `crm-separator' (typically a
+comma).
+
+Also see `beframe-assume-frame-buffers',
+`beframe-assume-buffers', `beframe-unassume-frame-buffers'."
+ (interactive
+ (list
+ (beframe--buffers-name-to-objects
+ (beframe--buffer-list-prompt-crm))))
+ (let ((buffer-list
+ (seq-filter
+ (lambda (buf)
+ (not (member buf buffers)))
+ (beframe-buffer-list))))
+ (modify-frame-parameters
+ nil
+ `((buffer-list . ,buffer-list)))))
+
+(defalias 'beframe-remove-buffers 'beframe-unassume-buffers
+ "Alias of `beframe-unassume-buffers' command.")
;;; Minor mode setup
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/beframe 534f11d369: Add commands to assume/unassume individual buffers,
ELPA Syncer <=