I use org-mode + gnus + Gmail for my daily GTD routine. The concept is that treating all incoming messages as tasks, and converting all messages in INBOX into org-mode's tasks using org-capture. Once all new messages are converted into tasks, archive them, and hopefully INBOX is kept zero.
My workflow is as follows:
- Open the summary view of gnus INBOX, and select a new message
- Capture the message with org-store-link (C-c l)
- Open my todo file (todo.org), and create a new task for it, and paste the captured link to the task's body with org-insert-link (C-c C-l)
- Go back to gnus summary view and archive the message (B del)
The problem is that when moving a message into the archive folder, the captured link becomes broken, and I cannot follow the link anymore. This is because the captured link includes the IMAP folders' name and archiving message changes the message's IMAP folder name. E.g.,
- Captured link:
[[gnus:nnimap%2Blocalhost:%5BGmail%5D.Important#1364607772002.9702fb8c@Nodemailer][Email from Geeklist Team: Geekli.st Suggestions & Activi]]
(IMAP folder name is"[Gmail]Important"
) - Link to archived message:
[[gnus:nnimap%2Blocalhost:%5BGmail%5D.All Mail#1364607772002.9702fb8c@Nodemailer][Email from Geeklist Team: Geekli.st Suggestions & Activi]]
(IMAP folder name is"[Gmail]All Mail"
)
So my question is: how can I update the captured link automatically when the message is moved to other folders? I guess there are some hooks to do this, but I could not find a good sample for this purpose. Or any simpler solutions for this kind of routine are welcome. TIA.
replace-string
does not search in invisible text, and as the link is formatted in my capture buffer, the text of the link is invisible. To workaround the issue, I had to write(let ((search-invisible t)) (replace-string "INBOX" "Archive"))
– Dipole