如何在 org-mode 中自动跟踪到 gnus 消息的链接?

Posted

技术标签:

【中文标题】如何在 org-mode 中自动跟踪到 gnus 消息的链接?【英文标题】:How to automatically track links in org-mode to gnus messages? 【发布时间】:2013-03-22 02:56:57 【问题描述】:

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

我的工作流程如下:

    打开 gnus INBOX 的摘要视图,并选择一条新消息 使用 org-store-link (C-c l) 捕获消息 打开我的 todo 文件 (todo.org),为其创建一个新任务,然后使用 org-insert-link (C-c C-l) 将捕获的链接粘贴到任务正文中 返回 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。

【问题讨论】:

【参考方案1】:

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

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

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

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

当我点击 C-c C-c 来归档捕获条目时,这个钩子会调用该函数:

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

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

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

HTH

【讨论】:

实际上这对我不起作用:replace-string 不会在不可见的文本中搜索,并且由于链接在我的捕获缓冲区中格式化,因此链接的文本是不可见的。为了解决这个问题,我不得不写(let ((search-invisible t)) (replace-string "INBOX" "Archive"))

以上是关于如何在 org-mode 中自动跟踪到 gnus 消息的链接?的主要内容,如果未能解决你的问题,请参考以下文章

如何将已经读过的文章提取到 gnus 的摘要缓冲区中?

在 Gnus 中处理 Outlook 风格的引用

如何在org-mode中创建多级有序(编号)普通列表?

org-mode,如何使用格式良好的组织链接自动生成漂亮的文件层次结构树

如何在org-mode中用括号中的单词加下划线以导出到LaTeX

Gnus for Emacs 中的新邮件通知