5

私は毎日の GTD ルーチンに org-mode + gnus + Gmail を使用しています。受信メッセージをすべてタスクとして扱い、INBOX 内のすべてのメッセージを org-capture を使用して組織モードのタスクに変換するという概念です。すべての新しいメッセージがタスクに変換されたら、それらをアーカイブします。うまくいけば、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")

私の質問は、メッセージが他のフォルダーに移動されたときに、キャプチャされたリンクを自動的に更新するにはどうすればよいですか? これを行うためのフックがいくつかあると思いますが、この目的に適したサンプルが見つかりませんでした。または、この種のルーチンのより簡単なソリューションは大歓迎です。ティア。

4

1 に答える 1

9

「org-store-link」と「org-insert-link」は使用しませんが、メッセージへのリンクを自動的に生成するキャプチャ テンプレートを使用します (以下の %a)。したがって、TODO エントリを格納するためにバッファを切り替える必要はありません。

(setq org-capture-templates
  '(
    ("m" "TODO from Mail" エントリ (ファイル + 見出し "~/gitfiles/org/gtd.org" "Inbox")
     "* TODO %?, リンク: %a")))

すべてのメールが受信トレイに到着し、「アーカイブ」フォルダーにアーカイブされるため、次の関数を使用して、キャプチャ バッファーの組織モード リンクの文字列「受信トレイ」を「アーカイブ」に置き換えることができます。

(defun hs/replace ()
   (相互の作用)
   (goto-char 1)
   (replace-string "INBOX" "Archive"))

このフックは、キャプチャ エントリをファイルするために Cc Cc を押すと関数を呼び出します。

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

したがって、私のワークフローは次のとおりです。

  • サマリバッファでメッセージを選択
  • Cc cm を押して、メッセージへのリンクを含む TODO アイテムをキャプチャし、説明を書き込みます (メッセージはまだ受信トレイにあるため、生成されたリンクにはグループ「INBOX」が含まれます)。
  • Cc Cc を押して TODO エントリをファイルします (これは、文字列 INBOX を Archive に置き換える関数 'hs/replace' を呼び出します)。
  • メールをアーカイブ フォルダーにアーカイブします。

HTH

于 2013-04-02T19:16:16.760 に答える