emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/crdt c41e097c87 1/2: Add `crdt-switch-to-buffer` which


From: ELPA Syncer
Subject: [elpa] externals/crdt c41e097c87 1/2: Add `crdt-switch-to-buffer` which uses `completing-read` to switch
Date: Fri, 26 Aug 2022 22:57:28 -0400 (EDT)

branch: externals/crdt
commit c41e097c875ff2ec673c7e2af547e71b2f16a7b4
Author: Arte Ebrahimi <arteebrahimi@gmail.com>
Commit: Arte Ebrahimi <arteebrahimi@gmail.com>

    Add `crdt-switch-to-buffer` which uses `completing-read` to switch
    between shared buffers, as an alternative to selecting a buffer from
    the buffer list buffer.
---
 crdt.el | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/crdt.el b/crdt.el
index 89a498681a..5eda16465a 100644
--- a/crdt.el
+++ b/crdt.el
@@ -834,14 +834,26 @@ Directly return the buffer network name under point if in 
the buffer menu."
       (crdt--read-buffer session)
       (signal 'quit nil)))
 
+(defun crdt--do-to-buffer (session network-name f)
+  "Apply F to buffer with SESSION and NETWORK-NAME."
+  (let ((crdt--session session))
+    (crdt--with-buffer-name-pull (network-name)
+      (funcall f (current-buffer)))))
+
 (defun crdt-switch-to-buffer-other-window (session network-name)
-  "Open buffer with NETWORK-NAME in SESSION."
+  "From the buffer list menu, open buffer with NETWORK-NAME in SESSION."
   (interactive
    (let ((session (crdt--read-session-maybe)))
      (list session (crdt--read-buffer-maybe session))))
-  (let ((crdt--session session))
-    (crdt--with-buffer-name-pull (network-name)
-      (switch-to-buffer-other-window (current-buffer)))))
+  (crdt--do-to-buffer session network-name #'switch-to-buffer-other-window))
+
+(defun crdt-switch-to-buffer (session network-name)
+  "Switch to buffer with NETWORK-NAME in SESSION."
+  (interactive
+   (let* ((session (crdt--read-session-maybe))
+          (buffers (hash-table-keys (crdt--session-buffer-table session))))
+     (list session (completing-read "Choose a buffer: " buffers nil t))))
+  (crdt--do-to-buffer session network-name #'switch-to-buffer))
 
 (defvar crdt-buffer-menu-mode-map
   (let ((map (make-sparse-keymap)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]