[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