mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-12-03 08:30:03 +00:00
org-agenda.el: Support argument collection for custom bulk functions
* lisp/org-agenda.el (org-agenda-bulk-custom-functions): Add documentation about argument collection for custom bulk functions. (org-agenda-bulk-action): Support function to collect arguments for custom bulk functions. * etc/ORG-NEWS (Option ~org-agenda-bulk-custom-functions~ now supports collecting bulk arguments): Add entry to NEWS.
This commit is contained in:
parent
e0fb2339f4
commit
885ee086dd
@ -88,6 +88,12 @@ New variable ~org-html-meta-tags~ makes it possible to customize the
|
||||
values, or a function that generates such a list (see
|
||||
~org-html-meta-tags-default~ as an example of the latter).
|
||||
|
||||
*** Option ~org-agenda-bulk-custom-functions~ now supports collecting bulk arguments
|
||||
|
||||
When specifying a custom agenda bulk option, you can now also specify
|
||||
a function which collects the arguments to be used with each call to
|
||||
the custom function.
|
||||
|
||||
** New features
|
||||
*** =ob-python= improvements to =:return= header argument
|
||||
|
||||
|
@ -2080,9 +2080,25 @@ For example, this value makes those two functions available:
|
||||
|
||||
With selected entries in an agenda buffer, `B R' will call
|
||||
the custom function `set-category' on the selected entries.
|
||||
Note that functions in this alist don't need to be quoted."
|
||||
:type '(alist :key-type character :value-type (group function))
|
||||
:version "24.1"
|
||||
Note that functions in this alist don't need to be quoted.
|
||||
|
||||
You can also specify a function which collects arguments to be
|
||||
used for each call to your bulk custom function. The argument
|
||||
collecting function will be run once and should return a list of
|
||||
arguments to pass to the bulk function. For example:
|
||||
|
||||
\\='((?R set-category get-category))
|
||||
|
||||
Now, `B R' will call the custom `get-category' which would prompt
|
||||
the user once for a category. That category is then passed as an
|
||||
argument to `set-category' for each entry it's called against."
|
||||
:type
|
||||
'(alist :key-type character
|
||||
:value-type
|
||||
(group (function :tag "Bulk Custom Function")
|
||||
(choice (function :tag "Bulk Custom Argument Function")
|
||||
(const :tag "No Bulk Custom Argument Function" nil))))
|
||||
:package-version '(Org . "9.5")
|
||||
:group 'org-agenda)
|
||||
|
||||
(defmacro org-agenda-with-point-at-orig-entry (string &rest body)
|
||||
@ -10487,10 +10503,15 @@ The prefix arg is passed through to the command if possible."
|
||||
(completing-read "Function: " obarray #'fboundp t nil nil))))
|
||||
|
||||
(action
|
||||
(pcase (assoc action org-agenda-bulk-custom-functions)
|
||||
(`(,_ ,f) (setq cmd f) (setq redo-at-end t))
|
||||
(_ (user-error "Invalid bulk action: %c" action)))))
|
||||
|
||||
(setq cmd
|
||||
(pcase (assoc action org-agenda-bulk-custom-functions)
|
||||
(`(,_ ,fn)
|
||||
fn)
|
||||
(`(,_ ,fn ,arg-fn)
|
||||
(apply #'apply-partially fn (funcall arg-fn)))
|
||||
(_
|
||||
(user-error "Invalid bulk action: %c" action))))
|
||||
(setq redo-at-end t)))
|
||||
;; Sort the markers, to make sure that parents are handled
|
||||
;; before children.
|
||||
(setq entries (sort entries
|
||||
|
Loading…
Reference in New Issue
Block a user