我见过这个:
How to type a dynamic file entry for org capture
但无法让它发挥作用;我得到“无效的文件位置:无”。 org-mode或Emacs本身有什么变化来阻止它工作?否则:关于如何调试出错的建议?
我真正努力工作的是本页描述的内容:
http://www.howardism.org/Technical/Emacs/journaling-org.html
我感兴趣的捕获模板是页面底部的“Journal Note”:
(setq org-capture-templates '(
;; ...
("j" "Journal Note"
entry (file (get-journal-file-today))
"* Event: %?\n\n %i\n\n From: %a"
:empty-lines 1)
;; ..
))
感谢您的帮助。
答案 0 :(得分:3)
想出来......它正在使用反引号代替整个捕获模板块的正常引用!我错过了这个,因为我看到的所有答案都只有一个捕获模板,前面有一个反引号;我试过这样做但是如果模板是"其中一个是"那么这不起作用。 ...
所以这里有一个比我发现的更丰富的片段;我希望它可以帮助别人。
(setq org-capture-templates
`(("t" "TODO" entry (file+datetree "~/Documents/org/tasks.org" "Tasks")
"* TODO [#C] %?\n SCHEDULED: <%<%Y-%m-%d %a>>\n [%<%Y-%m-%d %a>]\n %a")
("T" "Travel" entry (file+datetree+prompt "~/Documents/org/travel.org")
"* %?\n :PROPERTIES:\n :LOCATION:\n :END:\n %t\n %a")
("j" "Journal Note" entry (
file+olp+datetree
,(concat
org-journal-dir
(format-time-string "journal-%m-%d.org")))
"* Event: %?\n %i\n From: %a")
)
)
键是捕获模板def块开始时的反引号,以及被调用函数之前(concat ...)的逗号。
答案 1 :(得分:3)
似乎Org-mode 8.2.10和9.1.9之间的某些内容发生了变化,特别是Org处理template elements的方式。而在Org的早期版本中,对(file ...)
中的第二个值可能是Org将评估的函数,现在似乎只有字符串(文件路径)在此处有效。
修复是使用backquote列表表单,并明确声明该函数需要使用逗号进行评估:
(setq org-capture-templates `(
;; ...
("j" "Journal Note"
entry (file ,(get-journal-file-today))
"* Event: %?\n\n %i\n\n From: %a"
:empty-lines 1)
;; ..
))