[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Orgmode] Support for linking to nnml (Gnus) mail messages by Message-ID
From: |
John Wiegley |
Subject: |
[Orgmode] Support for linking to nnml (Gnus) mail messages by Message-ID |
Date: |
Tue, 04 Sep 2007 15:04:20 -0400 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.1 (darwin) |
Because I frequently archive out e-mails to other mailboxes, I cannot rely on
the group/article-no format of the current Gnus e-mail links used by org.el.
So, I've written code that can find a message based solely on its Message-ID.
The only requirement is that the message must be in an nnml mailbox somewhere,
and not in mbox format or something else.
John
;;; org-nnml.el - Support for links to nnml messages by Message-ID
;; version 1.0, by John Wiegley <address@hidden>
(require 'org)
(eval-when-compile
(require 'nnml)
(require 'gnus-sum))
(org-add-link-type "nnml" 'org-nnml-open)
(add-hook 'org-store-link-functions 'org-nnml-store-link)
(defun org-nnml-open (message-id)
"Visit the nnml message with the given Message-ID."
(let ((info (nnml-find-group-number message-id)))
(gnus-summary-read-group (concat "nnml:" (car info)) 100 t)
(gnus-summary-goto-article (cdr info) nil t)))
(defun org-nnml-store-link ()
"Store a link to an nnml e-mail message by Message-ID."
(when (memq major-mode '(gnus-summary-mode gnus-article-mode))
(and (eq major-mode 'gnus-article-mode) (gnus-article-show-summary))
(let* ((article (gnus-summary-article-number))
(header (gnus-summary-article-header article))
(message-id (mail-header-id header)))
(if (eq (aref message-id 0) ?\<)
(setq message-id
(substring message-id 1 (1- (length message-id)))))
(org-store-link-props
:type "nnml"
:link (cons (concat "nnml://" message-id)
(concat "nnml://" message-id))
:description (mail-header-subject header)))))
(provide 'org-nnml)
;;; org-nnml.el ends here
- [Orgmode] Support for linking to nnml (Gnus) mail messages by Message-ID,
John Wiegley <=