diff --git a/modules/feature/popup/autoload.el b/modules/feature/popup/autoload.el index 7dabc64b8..7f8541924 100644 --- a/modules/feature/popup/autoload.el +++ b/modules/feature/popup/autoload.el @@ -386,6 +386,18 @@ the message buffer in a popup window." ;; Macros ;; +;;;###autoload +(defmacro with-popup-rules! (rules &rest body) + "Evaluate BODY with popup RULES. RULES is a list of popup rules. Each rule +should match the arguments of `+popup-define' or the :popup setting." + (declare (indent defun)) + `(let ((+popup--display-buffer-alist +popup--old-display-buffer-alist) + display-buffer-alist) + ,@(cl-loop for rule in rules collect `(+popup-define ,@rule)) + (when (bound-and-true-p +popup-mode) + (setq display-buffer-alist +popup--display-buffer-alist)) + ,@body)) + ;;;###autoload (defmacro without-popups! (&rest body) "Run BODY with a default `display-buffer-alist', ignoring the popup rules set