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

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

[elpa] externals/ement cacc1ef79e 2/6: Change: (ement-with-room-and-sess


From: ELPA Syncer
Subject: [elpa] externals/ement cacc1ef79e 2/6: Change: (ement-with-room-and-session) Room-list support and argument
Date: Tue, 14 Mar 2023 16:57:59 -0400 (EDT)

branch: externals/ement
commit cacc1ef79eecd9ee31a76c3c140ccc19d43051db
Author: Adam Porter <adam@alphapapa.net>
Commit: Adam Porter <adam@alphapapa.net>

    Change: (ement-with-room-and-session) Room-list support and argument
---
 ement-macros.el | 27 ++++++++++++++++-----------
 ement-room.el   |  4 ++--
 2 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/ement-macros.el b/ement-macros.el
index 0b6c9acd6b..cac6b71f3f 100644
--- a/ement-macros.el
+++ b/ement-macros.el
@@ -198,25 +198,30 @@ reporter's min-value to its max-value."
 
 (cl-defmacro ement-with-room-and-session (&rest body)
   "Eval BODY with `ement-room' and `ement-session' bound.
-If in an `ement-room' buffer and `current-prefix-arg' is nil, use
-buffer-local value of `ement-room' and `ement-session';
-otherwise, prompt for them with `ement-complete-room'.
+If in an `ement-room-list-mode' buffer and `current-prefix-arg'
+is nil, use the room and session at point.  If in an `ement-room'
+buffer and `current-prefix-arg' is nil, use buffer-local value of
+`ement-room' and `ement-session'.  Otherwise, prompt for them
+with `ement-complete-room' or that given with :prompt-form.
 
 BODY may begin with property list arguments, including:
 
-  :room-form  A Lisp form evaluated for the binding of
-              `ement-room'."
+  :prompt-form  A Lisp form evaluated for the binding of
+                `ement-room'."
   (declare (indent defun))
   (pcase-let* ((plist (cl-loop while (keywordp (car body))
                                append (list (car body) (cadr body))
                                and do (setf body (cddr body))))
-               ((map :room-form) plist)
-               (room-form (or room-form
-                              '(ement-complete-room :suggest t))))
-    `(let ((ement-room ement-room)
-           (ement-session ement-session))
+               ((map :prompt-form) plist)
+               (prompt-form (or prompt-form
+                                '(ement-complete-room :suggest t))))
+    `(pcase-let* ((`[,list-room ,list-session] (if (eq 'ement-room-list-mode 
major-mode)
+                                                   (oref 
(magit-current-section) value)
+                                                 [nil nil]))
+                  (ement-room (or list-room ement-room))
+                  (ement-session (or list-session ement-session)))
        (when (or current-prefix-arg (not ement-room))
-         (pcase-let ((`(,room ,session) ,room-form))
+         (pcase-let ((`(,room ,session) ,prompt-form))
            (setf ement-room room
                  ement-session session)))
        ,@body)))
diff --git a/ement-room.el b/ement-room.el
index 17a8efeea4..13d9fd2d9d 100644
--- a/ement-room.el
+++ b/ement-room.el
@@ -1820,8 +1820,8 @@ reaction string, e.g. \"👍\"."
   "Toggle ROOM's membership in SPACE on SESSION."
   (interactive
    (ement-with-room-and-session
-     :room-form (ement-complete-room :session ement-session
-                  :predicate (lambda (room) (not (ement--room-space-p room))) )
+     :prompt-form (ement-complete-room :session ement-session
+                    :predicate (lambda (room) (not (ement--room-space-p 
room))) )
      (pcase-let* ((prompt (format "Toggle room %S's membership in space: "
                                   (ement--format-room ement-room)))
                   ;; TODO: Use different face for spaces the room is already 
in.



reply via email to

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