2013-04-01 41 views
3

我使用org-mode + gnus + Gmail來處理我的日常GTD例程。其理念是將所有傳入的消息視爲任務,並使用org-capture將INBOX中的所有消息轉換爲組織模式的任務。一旦所有新消息都轉換爲任務,將其歸檔,並希望INBOX保持爲零。如何自動跟蹤組織模式下的鏈接到gnus消息?

我的工作流程如下:

  1. 開角馬收件箱的摘要視圖,並選擇一個新的消息
  2. 捕捉與組織店內鏈接消息(CC L)
  3. 打開我的todo文件(todo.org),然後爲它創建一個新任務,並使用org-insert-link(Cc Cl)將捕獲的鏈接粘貼到任務的主體上
  4. 返回gnus摘要視圖並存檔消息(B del)

問題是,當將消息移入存檔文件夾時,捕獲的鏈接變得中斷,我無法再跟隨該鏈接。這是因爲捕獲的鏈接包含IMAP文件夾的名稱,歸檔消息會更改消息的IMAP文件夾名稱。例如,

  • 捕獲鏈接:[[gnus:nnimap%2Blocalhost:%5BGmail%5D.Important#[email protected]][Email from Geeklist Team: Geekli.st Suggestions & Activi]](IMAP文件夾名稱爲"[Gmail]Important"
  • 鏈接到已歸檔消息:[[gnus:nnimap%2Blocalhost:%5BGmail%5D.All Mail#[email protected]][Email from Geeklist Team: Geekli.st Suggestions & Activi]](IMAP文件夾名稱爲"[Gmail]All Mail"

所以我的問題是:我該怎麼更新當郵件移動到其他文件夾時自動捕獲鏈接?我想有一些鉤子可以做到這一點,但我無法爲此找到一個好樣本。或者歡迎任何更簡單的解決方案。 TIA。

回答

6

我不使用'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"))) 

因爲我所有的電子郵件到達收件箱和文件夾中的存檔「存檔」我可以使用下面的函數替換字符串「

 
(defun hs/replace() 
    (interactive) 
    (goto-char 1) 
    (replace-string "INBOX" "Archive")) 

這個鉤子調用函數時,我打CC CC到文件捕獲項:在捕獲緩衝的組織模式鏈路收件箱」的‘存檔’

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

所以,我的W酒店orkflow如下:

  • 在摘要緩衝區中選擇的消息
  • 命中抄送釐米捕獲TODO項與鏈接到消息並寫描述(因爲該消息是仍然在收件箱中,所生成的鏈接包含組「INBOX」)
  • 打開抄送抄送文件的TODO條目(這稱爲函數'hs /替換',它將替換字符串的INBOX歸檔)
  • 歸檔電子郵件歸檔文件夾中。

HTH

+0

感謝卡爾,它的工作就像一個魅力! –

+0

其實這並不直接適用於我:'替換字符串'不搜索不可見的文本,並且由於鏈接被格式化在我的捕獲緩衝區中,鏈接的文本是不可見的。爲了解決這個問題,我必須編寫'(let((search-invisible t))(replace-string「INBOX」「Archive」))'' –