无意中发现这个包,让 org-capture 的设定更加规格,可读。
例子:
tl;dr
(defun my-org-template-hook ()
(when (string= (org-capture-get :key t) "p1")
(message "\"First Child\" selected.")))
(add-hook 'org-capture-mode-hook 'my-org-template-hook)
(setq org-capture-templates
'(("p" "Parent")
("p1" "First Child" entry (file+headline "~/example.org" "One")
"* TODO %^{Description} \n:PROPERTIES:\n:Created: %U\n:END:\n%?"
:prepend t)
("p2" "Second Child" entry (file+headline "~/example.org" "Two")
"* NEXT %^{Description} \n:PROPERTIES:\n:Created: %U\n:END:\n%?"
:prepend t)
("p3" "Third Child" entry (file+headline "~/example.org" "Three")
"* MAYBE %^{Description} \n:PROPERTIES:\n:Created: %U\n:END:\n%?"
:prepend t)))
becomes:
(setq org-capture-templates
(doct '(("Parent" :keys "p"
:file "~/example.org"
:prepend t
:template ("* %{todo-state} %^{Description}"
":PROPERTIES:"
":Created: %U"
":END:"
"%?")
:children (("First Child" :keys "1"
:headline "One"
:todo-state "TODO"
:hook (lambda () (message "\"First Child\" selected.")))
("Second Child" :keys "2"
:headline "Two"
:todo-state "NEXT")
("Third Child" :keys "3"
:headline "Three"
:todo-state "MAYBE"))))))