org-mode/lisp/org-mew.el

73 lines
2.2 KiB
EmacsLisp

;;; org-mew.el --- Support for links to messages in Mew
;;
;; Copyright 2008 Bastien Guerry
;;
;; Emacs Lisp Archive Entry
;; Filename: org-mew.el
;; Version: 6.02pre02
;; Author: Bastien Guerry <bzg AT altern DOT org>
;; Maintainer: Bastien Guerry <bzg AT altern DOT org>
;; Keywords: org, mail, Mew
;;
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program; if not, write to the Free Software
;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
;;
;;; Commentary:
;;
;; Mew is an Emacs mailer written by Kazu Yamamoto: http://www.mew.org
;;
;; This Org add-on provides a way to link to Mew messages.
;;
;; PUT this file into your load-path and the following into your ~/.emacs:
;; (require 'org-mew)
;;
;;; Code:
(eval-when-compile
(require 'cl))
(require 'org)
(org-add-link-type "mew" 'org-mew-open)
(add-hook 'org-store-link-functions 'org-mew-store-link)
(defun org-mew-open (mew-link)
"Visit the message targetted at by MEW-LINK."
(when (string-match "\\(+.*\\)+\\+\\([0-9]+\\)" mew-link)
(let ((folder (match-string 1 mew-link))
(msg-num (match-string 2 mew-link)))
(mew-summary-visit-folder folder)
(when (mew-summary-search-msg msg-num)
(if mew-summary-goto-line-then-display
(mew-summary-display))))))
(defun org-mew-store-link ()
"Store a link to a Mew message."
(when (and (fboundp 'mew-summary-p) (mew-summary-p))
(let ((folder (mew-summary-folder-name))
(number (mew-summary-message-number))
(subject (mew-summary-get-subject)))
(org-store-link-props
:type "mew"
:link (concat "mew:" folder "+" number)
:description subject))))
(provide 'org-mew)
;;; User Options, Variables
;;; org-mew.el ends here