فهرست منبع

Fix bug with MEW case folder.

Reported by Harri Kiiskinen, fixed by Tokuya Kameshima.
Carsten Dominik 16 سال پیش
والد
کامیت
0a402deeb9
2فایلهای تغییر یافته به همراه37 افزوده شده و 28 حذف شده
  1. 6 0
      lisp/ChangeLog
  2. 31 28
      lisp/org-mew.el

+ 6 - 0
lisp/ChangeLog

@@ -1,3 +1,9 @@
+
+2008-11-21  Tokuya Kameshime  <kames@fa2.so-net.ne.jp>
+
+	* org-mew.el (org-mew-store-link): Get the correct case folder
+	for refiled messages.
+
 2008-11-21  Carsten Dominik  <carsten.dominik@gmail.com>
 
 	* org-exp.el (org-export-as-ascii): Remove the "\\" forced

+ 31 - 28
lisp/org-mew.el

@@ -5,7 +5,7 @@
 ;; Author: Tokuya Kameshima <kames at fa2 dot so-net dot ne dot jp>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.13pre03
+;; Version: 6.03pre03
 
 ;; This file is part of GNU Emacs.
 
@@ -34,21 +34,23 @@
 (require 'org)
 
 (defgroup org-mew nil
- "Options concerning the Mew link."
- :tag "Org Startup"
- :group 'org-link)
+  "Options concerning the Mew link."
+  :tag "Org Startup"
+  :group 'org-link)
 
 (defcustom org-mew-link-to-refile-destination t
- "Create a link to the refile destination if the message is marked as refile."
- :group 'org-mew
- :type 'boolean)
+  "Create a link to the refile destination if the message is marked as refile."
+  :group 'org-mew
+  :type 'boolean)
 
 ;; Declare external functions and variables
 (declare-function mew-cache-hit "ext:mew-cache" (fld msg &optional must-hit))
+(declare-function mew-case-folder "ext:mew-func" (case folder))
 (declare-function mew-header-get-value "ext:mew-header"
 		  (field &optional as-list))
 (declare-function mew-init "ext:mew" ())
 (declare-function mew-refile-get "ext:mew-refile" (msg))
+(declare-function mew-sinfo-get-case "ext:mew-summary" ())
 (declare-function mew-summary-display "ext:mew-summary2" (&optional redisplay))
 (declare-function mew-summary-folder-name "ext:mew-syntax" (&optional ext))
 (declare-function mew-summary-get-mark "ext:mew-mark" ())
@@ -69,17 +71,18 @@
 
 ;; Implementation
 (defun org-mew-store-link ()
- "Store a link to a Mew folder or message."
- (when (memq major-mode '(mew-summary-mode mew-virtual-mode))
-   (let* ((msgnum (mew-summary-message-number2))
+  "Store a link to a Mew folder or message."
+  (when (memq major-mode '(mew-summary-mode mew-virtual-mode))
+    (let* ((msgnum (mew-summary-message-number2))
 	   (mark-info (mew-summary-get-mark))
 	   (folder-name
 	    (if (and org-mew-link-to-refile-destination
 		     (eq mark-info ?o))	; marked as refile
-		(nth 1 (mew-refile-get msgnum))
+		(mew-case-folder (mew-sinfo-get-case)
+				 (nth 1 (mew-refile-get msgnum)))
 	      (mew-summary-folder-name)))
 	   message-id from to subject desc link)
-     (save-window-excursion
+      (save-window-excursion
 	(if (fboundp 'mew-summary-set-message-buffer)
 	    (mew-summary-set-message-buffer folder-name msgnum)
 	  (set-buffer (mew-cache-hit folder-name msgnum t)))
@@ -87,35 +90,35 @@
 	(setq from (mew-header-get-value "From:"))
 	(setq to (mew-header-get-value "To:"))
 	(setq subject (mew-header-get-value "Subject:")))
-     (org-store-link-props :type "mew" :from from :to to
+      (org-store-link-props :type "mew" :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 "mew:" folder-name
+      (setq message-id (org-remove-angle-brackets message-id))
+      (setq desc (org-email-link-description))
+      (setq link (org-make-link "mew:" folder-name
 				"#" message-id))
-     (org-add-link-props :link link :description desc)
-     link)))
+      (org-add-link-props :link link :description desc)
+      link)))
 
 (defun org-mew-open (path)
- "Follow the Mew message link specified by PATH."
- (let (folder msgnum)
-   (cond ((string-match "\\`\\(+.*\\)+\\+\\([0-9]+\\)\\'" path) ; for Bastien's
+  "Follow the Mew message link specified by PATH."
+  (let (folder msgnum)
+    (cond ((string-match "\\`\\(+.*\\)+\\+\\([0-9]+\\)\\'" path) ; for Bastien's
 	   (setq folder (match-string 1 path))
 	   (setq msgnum (match-string 2 path)))
 	  ((string-match "\\`\\(\\(%#\\)?[^#]+\\)\\(#\\(.*\\)\\)?" path)
 	   (setq folder (match-string 1 path))
 	   (setq msgnum (match-string 4 path)))
 	  (t (error "Error in Mew link")))
-   (require 'mew)
-   (mew-window-push)
-   (unless mew-init-p (mew-init))
-   (mew-summary-visit-folder folder)
-   (when msgnum
-     (if (not (string-match "\\`[0-9]+\\'" msgnum))
+    (require 'mew)
+    (mew-window-push)
+    (unless mew-init-p (mew-init))
+    (mew-summary-visit-folder folder)
+    (when msgnum
+      (if (not (string-match "\\`[0-9]+\\'" msgnum))
 	  (let* ((pattern (concat "message-id=" msgnum))
 		 (msgs (mew-summary-pick-with-mewl pattern folder nil)))
 	    (setq msgnum (car msgs))))
-     (if (mew-summary-search-msg msgnum)
+      (if (mew-summary-search-msg msgnum)
 	  (if mew-summary-goto-line-then-display
 	      (mew-summary-display))
 	(error "Message not found")))))