5

我将 org-mode + gnus + Gmail 用于我的日常 GTD 例程。其概念是将所有传入的消息视为任务,并使用 org-capture 将 INBOX 中的所有消息转换为 org-mode 的任务。一旦所有新消息都转换为任务,将它们存档,并希望 INBOX 保持为零。

我的工作流程如下:

  1. 打开 gnus INBOX 的摘要视图,并选择一条新消息
  2. 使用 org-store-link (Cc l) 捕获消息
  3. 打开我的 todo 文件 (todo.org),并为其创建一个新任务,然后使用 org-insert-link (Cc Cl) 将捕获的链接粘贴到任务的主体
  4. 返回 gnus 摘要视图并归档消息 (B del)

问题是当将邮件移动到存档文件夹时,捕获的链接会损坏,我无法再点击该链接。这是因为捕获的链接包含 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。

4

1 回答 1

9

我不使用 'org-store-link' 和 'org-insert-link' 而是使用捕获模板,它会自动生成指向消息的链接(下面的 %a)。因此,您不必切换缓冲区来存储 TODO 条目:

(setq 组织捕获模板
  '(
    (“m”“邮件中的 TODO”条目(文件+标题“~/gitfiles/org/gtd.org”“收件箱”)
     "* TODO %?,链接:%a")))

由于我所有的电子邮件都到达收件箱并存档在“存档”文件夹中,因此我可以使用以下函数将捕获缓冲区中组织模式链接中的字符串“收件箱”替换为“存档”:

(defun hs/replace ()
   (交互的)
   (转到字符 1)
   (替换字符串“收件箱”“存档”))

当我点击 Cc Cc 来归档捕获条目时,此挂钩会调用该函数:

(add-hook 'org-capture-prepare-finalize-hook 'hs/replace)

所以,我的工作流程如下:

  • 在摘要缓冲区中选择一条消息
  • 点击 Cc cm 以使用 Link to message 捕获 TODO 项目并编写描述(由于消息仍在收件箱中,生成的链接包含组“INBOX”)
  • 点击 Cc Cc 以归档 TODO 条目(这调用函数“hs/replace”,它将字符串 INBOX 替换为存档)
  • 在存档文件夹中存档电子邮件。

高温高压

于 2013-04-02T19:16:16.760 回答