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

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

[elpa] externals/ement 9596a2fe1e 1/2: Change: (ement-with-room-and-sess


From: ELPA Syncer
Subject: [elpa] externals/ement 9596a2fe1e 1/2: Change: (ement-with-room-and-session) Add :room-form
Date: Tue, 14 Mar 2023 09:57:58 -0400 (EDT)

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

    Change: (ement-with-room-and-session) Add :room-form
---
 ement-macros.el | 27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/ement-macros.el b/ement-macros.el
index 11c8f61a8c..0b6c9acd6b 100644
--- a/ement-macros.el
+++ b/ement-macros.el
@@ -200,15 +200,26 @@ reporter's min-value to its max-value."
   "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'."
+otherwise, prompt for them with `ement-complete-room'.
+
+BODY may begin with property list arguments, including:
+
+  :room-form  A Lisp form evaluated for the binding of
+              `ement-room'."
   (declare (indent defun))
-  `(let ((ement-room ement-room)
-         (ement-session ement-session))
-     (when (or current-prefix-arg (not ement-room))
-       (pcase-let ((`(,room ,session) (ement-complete-room :suggest t)))
-         (setf ement-room room
-               ement-session session)))
-     ,@body))
+  (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))
+       (when (or current-prefix-arg (not ement-room))
+         (pcase-let ((`(,room ,session) ,room-form))
+           (setf ement-room room
+                 ement-session session)))
+       ,@body)))
 
 ;;;; Variables
 



reply via email to

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