Function: org-agenda-run-series
org-agenda-run-series is a byte-compiled function defined in
org-agenda.el.gz.
Signature
(org-agenda-run-series NAME SERIES)
Documentation
Run agenda NAME as a SERIES of agenda commands.
Source Code
;; Defined in /usr/src/emacs/lisp/org/org-agenda.el.gz
(defun org-agenda-run-series (name series)
"Run agenda NAME as a SERIES of agenda commands."
(let* ((gprops (nth 1 series))
(gvars (mapcar #'car gprops))
(gvals (mapcar (lambda (binding) (eval (cadr binding) t)) gprops)))
(cl-progv gvars gvals (org-agenda-prepare name))
;; We need to reset agenda markers here, because when constructing a
;; block agenda, the individual blocks do not do that.
(org-agenda-reset-markers)
(with-no-warnings
(defvar match)) ;Used via the `eval' below.
(let* ((org-agenda-multi t)
;; FIXME: Redo should contain lists of (FUNS . ARGS) rather
;; than expressions, so you don't need to `quote' the args
;; and you just need to `apply' instead of `eval' when using it.
(redo (list 'org-agenda-run-series name (list 'quote series)))
(cmds (car series))
match
org-cmd type lprops)
(while (setq org-cmd (pop cmds))
(setq type (car org-cmd))
(setq match (eval (nth 1 org-cmd) t))
(setq lprops (nth 2 org-cmd))
(let ((org-agenda-overriding-arguments
(if (eq org-agenda-overriding-cmd org-cmd)
(or org-agenda-overriding-arguments
org-agenda-overriding-cmd-arguments)))
(lvars (mapcar #'car lprops))
(lvals (mapcar (lambda (binding) (eval (cadr binding) t)) lprops)))
(cl-progv (append gvars lvars) (append gvals lvals)
(pcase type
(`agenda
(call-interactively 'org-agenda-list))
(`agenda*
(funcall 'org-agenda-list nil nil nil t))
(`alltodo
(call-interactively 'org-todo-list))
(`search
(org-search-view current-prefix-arg match nil))
(`stuck
(call-interactively 'org-agenda-list-stuck-projects))
(`tags
(org-tags-view current-prefix-arg match))
(`tags-todo
(org-tags-view '(4) match))
(`todo
(org-todo-list match))
((pred fboundp)
(funcall type match))
(_ (error "Invalid type in command series"))))))
(widen)
(let ((inhibit-read-only t))
(add-text-properties (point-min) (point-max)
`(org-series t org-series-redo-cmd ,redo)))
(setq org-agenda-redo-command redo)
(goto-char (point-min)))
(org-agenda-fit-window-to-buffer)
(cl-progv gvars gvals (org-agenda-finalize))))