From f4fed7ea0cd9c2b8f97bcc2088ddb2941183cd6d Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Mon, 4 May 2020 23:13:25 -0400 Subject: [PATCH] org: Retain prefix arg when dispatching dynamic block commands * lisp/org.el (org-dynamic-block-insert-dblock): Add an interactive-p argument that is non-nil for interactive calls and signals to call the dynamic block function interactively. org-clock-report takes a prefix argument. When it had a regular binding, this was easy to access. As of 34b71a0ca (Add a dispatcher command for inserting dynamic blocks, 2018-12-23), its only "binding" is through the dynamic block dispatcher. Make it possible to supply a prefix argument in that context too. --- lisp/org.el | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index bf82a49cc..751223f06 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -9652,15 +9652,18 @@ block of such type." (`nil (push (cons type func) org-dynamic-block-alist)) (def (setcdr def func)))) -(defun org-dynamic-block-insert-dblock (type) +(defun org-dynamic-block-insert-dblock (type &optional interactive-p) "Insert a dynamic block of type TYPE. When used interactively, select the dynamic block types among -defined types, per `org-dynamic-block-define'." +defined types, per `org-dynamic-block-define'. If INTERACTIVE-P +is non-nil, call the dynamic block function interactively." (interactive (list (completing-read "Dynamic block: " - (org-dynamic-block-types)))) + (org-dynamic-block-types)) + t)) (pcase (org-dynamic-block-function type) (`nil (error "No such dynamic block: %S" type)) - ((and f (pred functionp)) (funcall f)) + ((and f (pred functionp)) + (if interactive-p (call-interactively f) (funcall f))) (_ (error "Invalid function for dynamic block %S" type)))) (defun org-dblock-update (&optional arg)