Function: org-contextualize-keys
org-contextualize-keys is a byte-compiled function defined in
org.el.gz.
Signature
(org-contextualize-keys ALIST CONTEXTS)
Documentation
Return valid elements in ALIST depending on CONTEXTS.
org-agenda-custom-commands or org-capture-templates are the
values used for ALIST, and org-agenda-custom-commands-contexts
or org-capture-templates-contexts are the associated contexts
definitions.
Source Code
;; Defined in /usr/src/emacs/lisp/org/org.el.gz
(defun org-contextualize-keys (alist contexts)
"Return valid elements in ALIST depending on CONTEXTS.
`org-agenda-custom-commands' or `org-capture-templates' are the
values used for ALIST, and `org-agenda-custom-commands-contexts'
or `org-capture-templates-contexts' are the associated contexts
definitions."
(let ((contexts
;; normalize contexts
(mapcar
(lambda(c) (cond ((listp (cadr c))
(list (car c) (car c) (nth 1 c)))
((string= "" (cadr c))
(list (car c) (car c) (nth 2 c)))
(t c)))
contexts))
(a alist) r s)
;; loop over all commands or templates
(dolist (c a)
(let (vrules repl)
(cond
((not (assoc (car c) contexts))
(push c r))
((and (assoc (car c) contexts)
(setq vrules (org-contextualize-validate-key
(car c) contexts)))
(mapc (lambda (vr)
(unless (equal (car vr) (cadr vr))
(setq repl vr)))
vrules)
(if (not repl) (push c r)
(push (cadr repl) s)
(push
(cons (car c)
(cdr (or (assoc (cadr repl) alist)
(error "Undefined key `%s' as contextual replacement for `%s'"
(cadr repl) (car c)))))
r))))))
;; Return limited ALIST, possibly with keys modified, and deduplicated
(delq
nil
(delete-dups
(mapcar (lambda (x)
(let ((tpl (car x)))
(unless (delq
nil
(mapcar (lambda (y)
(equal y tpl))
s))
x)))
(reverse r))))))