我使用org-mode + gnus + Gmail作为我的日常GTD例程。这个概念是将所有传入的消息视为任务,并使用org-capture将INBOX中的所有消息转换为org-mode的任务。将所有新消息转换为任务后,将其存档,并希望INBOX保持为零。
我的工作流程如下:
问题是,当将邮件移动到存档文件夹时,捕获的链接会中断,我无法再关注该链接。这是因为捕获的链接包含IMAP文件夹的名称,归档消息会更改邮件的IMAP文件夹名称。如,
[[gnus:nnimap%2Blocalhost:%5BGmail%5D.Important#1364607772002.9702fb8c@Nodemailer][Email from Geeklist Team: Geekli.st Suggestions & Activi]]
(IMAP文件夹名称为"[Gmail]Important"
)[[gnus:nnimap%2Blocalhost:%5BGmail%5D.All Mail#1364607772002.9702fb8c@Nodemailer][Email from Geeklist Team: Geekli.st Suggestions & Activi]]
(IMAP文件夹名称为"[Gmail]All Mail"
)所以我的问题是:当邮件移动到其他文件夹时,如何自动更新捕获的链接?我想有一些钩子可以做到这一点,但我找不到一个好的样本用于此目的。或者欢迎任何更简单的解决方案。 TIA。
答案 0 :(得分:7)
我不使用'org-store-link'和'org-insert-link'而是使用capture template,它会自动生成指向消息的链接(下面的%a)。因此,您不必切换缓冲区来存储TODO条目:
(setq org-capture-templates '( ("m" "TODO from Mail" entry (file+headline "~/gitfiles/org/gtd.org" "Inbox") "* TODO %?, Link: %a")))
由于我的所有电子邮件都在INBOX中存档并存档在“存档”文件夹中,我可以使用以下函数在捕获缓冲区的Org模式链接中用'Archive'替换字符串'INBOX':
(defun hs/replace () (interactive) (goto-char 1) (replace-string "INBOX" "Archive"))
当我点击C-c C-c来提交捕获条目时,这个钩子调用该函数:
(add-hook 'org-capture-prepare-finalize-hook 'hs/replace)
所以,我的工作流程如下:
HTH