Emacs 如何在组织模式下自动跟踪gnus消息的链接?

Emacs 如何在组织模式下自动跟踪gnus消息的链接?,emacs,org-mode,gnus,Emacs,Org Mode,Gnus,我使用组织模式+gnus+Gmail作为我的日常GTD程序。其概念是将所有传入消息视为任务,并使用组织捕获将收件箱中的所有消息转换为组织模式的任务。一旦所有新邮件都转换成任务,将它们归档,希望收件箱保持为零 我的工作流程如下: 打开gnus收件箱的摘要视图,然后选择一条新消息 使用组织存储链接C-C l捕获消息 打开我的todo文件todo.org,并为其创建一个新任务,然后使用org insert link C-C C-l将捕获的链接粘贴到任务的正文中 返回gnus摘要视图并归档消息B del

我使用组织模式+gnus+Gmail作为我的日常GTD程序。其概念是将所有传入消息视为任务,并使用组织捕获将收件箱中的所有消息转换为组织模式的任务。一旦所有新邮件都转换成任务,将它们归档,希望收件箱保持为零

我的工作流程如下:

打开gnus收件箱的摘要视图,然后选择一条新消息 使用组织存储链接C-C l捕获消息 打开我的todo文件todo.org,并为其创建一个新任务,然后使用org insert link C-C C-l将捕获的链接粘贴到任务的正文中 返回gnus摘要视图并归档消息B del 问题是,将邮件移动到存档文件夹时,捕获的链接会断开,我无法再跟踪该链接。这是因为捕获的链接包含IMAP文件夹的名称,而存档消息会更改消息的IMAP文件夹名称。例如:

捕获的链接:[[gnus:nnimap%2Blocalhost:%5BGmail%5D.Important1364607772002。9702fb8c@Nodemailer][来自Geeklist团队的电子邮件:Geekli.st Suggestions&Activi]]IMAP文件夹名称非常重要 指向存档邮件的链接:[[gnus:nnimap%2Blocalhost:%5BGmail%5D。所有邮件1364607772002。9702fb8c@Nodemailer][来自Geeklist团队的电子邮件:Geekli.st Suggestions&Activi]]IMAP文件夹名称为[Gmail]所有邮件
所以我的问题是:当邮件移动到其他文件夹时,如何自动更新捕获的链接?我想有一些钩子可以做到这一点,但我找不到一个好的样本。或者,对于这种例行程序,任何简单的解决方案都是受欢迎的。TIA.

我不使用“组织存储链接”和“组织插入链接”,而是使用一个自动生成指向下面消息%a的链接的链接。因此,您不必切换缓冲区来存储TODO条目:

(setq org-capture-templates '( ("m" "TODO from Mail" entry (file+headline "~/gitfiles/org/gtd.org" "Inbox") "* TODO %?, Link: %a"))) 由于我的所有电子邮件都到达收件箱并存档在文件夹存档中,因此我可以使用以下功能,将捕获缓冲区中组织模式链接中的字符串“收件箱”替换为“存档”:

(defun hs/replace () (interactive) (goto-char 1) (replace-string "INBOX" "Archive")) 当我点击C-C-C以归档捕获条目时,此钩子调用函数:

(add-hook 'org-capture-prepare-finalize-hook 'hs/replace) 因此,我的工作流程如下:

在摘要缓冲区中选择一条消息 点击C-C-m以捕获带有邮件链接的待办事项并编写说明,因为邮件仍在收件箱中,生成的链接包含组收件箱 点击C-C C-C以归档TODO条目。这将调用函数“hs/replace”,该函数通过归档替换字符串收件箱 将电子邮件归档到归档文件夹中。
HTH

实际上,这对我来说并不直接有效:replace string不会在不可见文本中搜索,而且由于链接在我的捕获缓冲区中格式化,因此链接的文本是不可见的。为了解决这个问题,我必须编写“让搜索不可见”来替换字符串收件箱存档