emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp/org ChangeLog org-rmail.el


From: Glenn Morris
Subject: [Emacs-diffs] emacs/lisp/org ChangeLog org-rmail.el
Date: Thu, 05 Feb 2009 06:40:59 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Glenn Morris <gm>       09/02/05 06:40:59

Modified files:
        lisp/org       : ChangeLog org-rmail.el 

Log message:
        (rmail-show-message): Update declaration.
        (rmail-buffer, rmail-view-buffer): Declare.
        (org-rmail-store-link, org-rmail-follow-link): Handle mbox Rmail.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/org/ChangeLog?cvsroot=emacs&r1=1.63&r2=1.64
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/org/org-rmail.el?cvsroot=emacs&r1=1.24&r2=1.25

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/org/ChangeLog,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -b -r1.63 -r1.64
--- ChangeLog   4 Feb 2009 23:01:59 -0000       1.63
+++ ChangeLog   5 Feb 2009 06:40:58 -0000       1.64
@@ -1,3 +1,9 @@
+2009-02-05  Glenn Morris  <address@hidden>
+
+       * org-rmail.el (rmail-show-message): Update declaration.
+       (rmail-buffer, rmail-view-buffer): Declare.
+       (org-rmail-store-link, org-rmail-follow-link): Handle mbox Rmail.
+
 2009-02-04  Carsten Dominik  <address@hidden>
 
        * org.el (org-return-follows-link): Revert setting

Index: org-rmail.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/org/org-rmail.el,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- org-rmail.el        2 Feb 2009 20:57:17 -0000       1.24
+++ org-rmail.el        5 Feb 2009 06:40:59 -0000       1.25
@@ -35,9 +35,12 @@
 (require 'org)
 
 ;; Declare external functions and variables
-(declare-function rmail-show-message "rmail" (&optional n no-summary))
+(declare-function rmail-show-message "rmail")
+(declare-function rmail-get-header "rmail" (name &optional msgnum))
 (declare-function rmail-what-message "rmail" ())
 (defvar rmail-current-message)
+(defvar rmail-buffer)
+(defvar rmail-view-buffer)
 
 ;; Install the link type
 (org-add-link-type "rmail" 'org-rmail-open)
@@ -46,29 +49,35 @@
 ;; Implementation
 (defun org-rmail-store-link ()
   "Store a link to an Rmail folder or message."
-  (when (or (eq major-mode 'rmail-mode)
-           (eq major-mode 'rmail-summary-mode))
-    (save-window-excursion
+  (when (memq major-mode '(rmail-mode rmail-summary-mode))
+    (let (message-id from to subject desc link)
+      (if (fboundp 'rmail-get-header)  ; Emacs 23
+         (setq message-id (rmail-get-header "message-id")
+               from (rmail-get-header "from")
+               to (rmail-get-header "to")
+               subject (rmail-get-header "subject"))
+       (save-window-excursion          ; Emacs 22
       (save-restriction
        (when (eq major-mode 'rmail-summary-mode)
          (rmail-show-message rmail-current-message))
-       (when (fboundp 'rmail-narrow-to-non-pruned-header)
+           (with-no-warnings     ; don't warn when compiling Emacs 23
          (rmail-narrow-to-non-pruned-header))
-       (let* ((folder buffer-file-name)
-              (message-id (mail-fetch-field "message-id"))
-              (from (mail-fetch-field "from"))
-              (to (mail-fetch-field "to"))
-              (subject (mail-fetch-field "subject"))
-              desc link)
+           (setq message-id (mail-fetch-field "message-id")
+                 from (mail-fetch-field "from")
+                 to (mail-fetch-field "to")
+                 subject (mail-fetch-field "subject"))
+           (rmail-show-message rmail-current-message))))
          (org-store-link-props
           :type "rmail" :from from :to to
           :subject subject :message-id message-id)
          (setq message-id (org-remove-angle-brackets message-id))
          (setq desc (org-email-link-description))
-         (setq link (org-make-link "rmail:" folder "#" message-id))
+      (setq link (org-make-link "rmail:"
+                               (with-current-buffer rmail-buffer
+                                 buffer-file-name)
+                               "#" message-id))
          (org-add-link-props :link link :description desc)
-         (rmail-show-message rmail-current-message)
-         link)))))
+      link)))
 
 (defun org-rmail-open (path)
   "Follow an Rmail message link to the specified PATH."
@@ -83,11 +92,17 @@
   "Follow an Rmail link to FOLDER and ARTICLE."
   (require 'rmail)
   (setq article (org-add-angle-brackets article))
-  (let (message-number)
+  (let (message-number buff)
     (save-excursion
       (save-window-excursion
        (rmail (if (string= folder "RMAIL") rmail-file-name folder))
-       (setq message-number
+       (setq buff (current-buffer)
+             message-number
+             (with-current-buffer
+                 (if (and (fboundp 'rmail-buffers-swapped-p)
+                          (rmail-buffers-swapped-p))
+                     rmail-view-buffer
+                   (current-buffer))
              (save-restriction
                (widen)
                (goto-char (point-max))
@@ -95,7 +110,9 @@
                     (concat "^Message-ID:\\s-+" (regexp-quote
                                                  (or article "")))
                     nil t)
-                   (rmail-what-message))))))
+                     ;; This is an rmail "debugging" function. :(
+                     (with-current-buffer buff
+                       (rmail-what-message))))))))
     (if message-number
        (progn
          (rmail (if (string= folder "RMAIL") rmail-file-name folder))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]