From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tokuya Kameshima Subject: Re: org-mew.el: Bug in creating links to messages marked for refile Date: Wed, 19 Nov 2008 00:04:07 +0900 () Message-ID: <20081119.000407.94369039.kames@fa2.so-net.ne.jp> Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Wed_Nov_19_00_04_07_2008_363)--" Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1L2SAW-0005Vn-JO for emacs-orgmode@gnu.org; Tue, 18 Nov 2008 10:07:08 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1L2SAU-0005VJ-Pa for emacs-orgmode@gnu.org; Tue, 18 Nov 2008 10:07:08 -0500 Received: from [199.232.76.173] (port=52044 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1L2SAU-0005VE-HN for emacs-orgmode@gnu.org; Tue, 18 Nov 2008 10:07:06 -0500 Received: from mail.ms.so-net.ne.jp ([202.238.82.30]:27317 helo=mx08.ms.so-net.ne.jp) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1L2SAU-0002NY-75 for emacs-orgmode@gnu.org; Tue, 18 Nov 2008 10:07:06 -0500 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Cc: kames@fa2.so-net.ne.jp ----Next_Part(Wed_Nov_19_00_04_07_2008_363)-- Content-Type: Text/Plain; charset=utf-8 Content-Transfer-Encoding: base64 SGkgSGFycmksDQoNClRoYW5rIHlvdSBmb3IgdGhlIGJ1ZyByZXBvcnQgYW5kIGNsZWFyIGV4cGxh bmF0aW9uLiAgQ291bGQgeW91IHRyeSB0aGUNCmF0dGFjaGVkIHZlcnNpb24gb2Ygb3JnLW1ldy5l bD8NCg0KVGhhbmtzLA0KLS1Ub2t1eWENCg0KPiBGcm9tOiBIYXJyaSBLaWlza2luZW4gPGhhcnJp LmtpaXNraW5lbiA8YXQ+IHV0dS5maT4NCj4gU3ViamVjdDogb3JnLW1ldy5lbDogQnVnIGluIGNy ZWF0aW5nIGxpbmtzIHRvIG1lc3NhZ2VzIG1hcmtlZCBmb3IgcmVmaWxlDQo+IE5ld3Nncm91cHM6 IGdtYW5lLmVtYWNzLm9yZ21vZGUNCj4gRGF0ZTogMjAwOC0xMS0xNyAxMDowNzo1MSBHTVQgKDEg ZGF5LCA0IGhvdXJzIGFuZCA0OCBtaW51dGVzIGFnbykNCj4gDQo+IFRoZXJlJ3MgYSBzbWFsbCBi dWcgaW4gb3JnLW1ldy5lbCwgd2hpY2ggYXBwZWFycyB3aGVuIHRyeWluZyB0byBzdG9yZQ0KPiBs aW5rcyB0byBtZXNzYWdlcyB3aGljaCBoYXZlIGJlZW4gbWFya2VkIGZvciByZWZpbGUuIEkgdHJ5 IHRvIGJlIGFzDQo+IGNsZWFyIGFzIHBvc3NpYmxlOg0KPiANCj4gRmlyc3QsIGEgd29ya2luZyBj YXNlOg0KPiANCj4gd2hlbiBzdG9yaW5nIGEgbGluayB0byBhIG1lc3NhZ2Ugb24gYW4gSU1BUCBz ZXJ2ZXIsIHRoZSByZXN1bHQgaXMgbGlrZQ0KPiB0aGlzOg0KPiANCj4gW1ttZXc6VVRVOiVpbmJv eCMyMDA4MTExNy4xMTUwNDMuMTQ0MjkyOTA4LmhhcnJpLmtpaXNraW5lbiA8YXQ+IHV0dS5maV1b RW1haWwNCj4gZnJvbSBIYXJyaSBLaWlza2luZW46IHRlc3RdXQ0KPiANCj4gd2hpY2ggaXMgZXhh Y3RseSBhcyBpdCBzaG91bGQgYmU6IEZpcnN0IHRoZSBsaW5rIHR5cGUgKCJtZXc6IiksIHRoZW4N Cj4gdGhlIG1ldyBjYXNlIGFuZCB0aGUgZm9sZGVyIG5hbWUgKCJVVFU6JWluYm94IiksIGFuZCB0 aGVuIHRoZSBNZXNzYWdlDQo+IElELiAoVGhpcyBpcyBhIG1lc3NhZ2UgSSBzZW50IHRvIG15c2Vs Zi4pDQo+IExpbmsgdHlwZTogIm1ldzoiDQo+IG1ldyBjYXNlOiAiVVRVOiINCj4gZm9sZGVyOiAi 4oCwaW5ib3giDQo+IG1lc3NhZ2UgaWQ6ICIjMjAwODExMTcuLi4uLi4iDQo+IA0KPiBOb3csIEkg c2V0IHRoZSByZWZpbGUgbWFyayBvbiB0aGUgbWVzc2FnZSwgYW5kIGNyZWF0ZSBhIG5ldyBsaW5r IHRvDQo+IGl0LiBUaGUgcmVzdWx0IGlzOg0KPiANCj4gW1ttZXc6JTIwMDgjMjAwODExMTcuMTE1 MDQzLjE0NDI5MjkwOC5oYXJyaS5raWlza2luZW4gPGF0PiB1dHUuZmldW0VtYWlsDQo+IGZyb20g SGFycmkgS2lpc2tpbmVuOiB0ZXN0XV0NCj4gDQo+IE5vdywgdGhlIG1ldyBjYXNlIGlzIHN0aWxs IHNldCB0byBVVFUsIG1lYW5pbmcgdGhhdCBtZXcgd2lsbCByZWZpbGUNCj4gdGhlIG1lc3NhZ2Ug dG8gZm9sZGVyIFVUVTolMjAwOCwgYnV0IHRoZSBsaW5rIHRoYXQgaXMgY3JlYXRlZCBieQ0KPiBv cmctbWV3LXN0b3JlLWxpbmsgZG9lcyBub3QgaW5jbHVkZSB0aGUgY2FzZSBpbmZvcm1hdGlvbi4g V2UgaGF2ZToNCj4gTGluayB0eXBlOiBtZXc6DQo+IGNhc2U6IChlbXB0eSkNCj4gZm9sZGVyOiAl MjAwOA0KPiBtZXNzYWdlIGlkOiAodGhlIHJlc3QpDQo+IA0KPiBJJ20gbm8gcXVpdGUgYWJsZSB0 byBmaWd1cmUgd2hlcmUgdGhlIGJ1ZyBtaWdodCBiZSwgYnV0IEknbGwga2VlcA0KPiB0cnlpbmcu DQo+IA0KPiBIYXJyaSBLLg0KDQo= ----Next_Part(Wed_Nov_19_00_04_07_2008_363)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="org-mew.el" ;;; org-mew.el --- Support for links to Mew messages from within Org-mode ;; Copyright (C) 2008 Free Software Foundation, Inc. ;; Author: Tokuya Kameshima ;; Keywords: outlines, hypermedia, calendar, wp ;; Homepage: http://orgmode.org ;; Version: 6.03pre03 ;; This file is part of GNU Emacs. ;; GNU Emacs 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 of the License, or ;; (at your option) any later version. ;; GNU Emacs 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 GNU Emacs. If not, see . ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Commentary: ;; This file implements links to Mew messages from within Org-mode. ;; Org-mode loads this module by default - if this is not what you want, ;; configure the variable `org-modules'. ;;; Code: (require 'org) (defgroup org-mew nil "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) ;; 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" ()) (declare-function mew-summary-message-number2 "ext:mew-syntax" ()) (declare-function mew-summary-pick-with-mewl "ext:mew-pick" (pattern folder src-msgs)) (declare-function mew-summary-search-msg "ext:mew-const" (msg)) (declare-function mew-summary-set-message-buffer "ext:mew-summary3" (fld msg)) (declare-function mew-summary-visit-folder "ext:mew-summary4" (folder &optional goend no-ls)) (declare-function mew-window-push "ext:mew" ()) (defvar mew-init-p) (defvar mew-summary-goto-line-then-display) ;; Install the link type (org-add-link-type "mew" 'org-mew-open) (add-hook 'org-store-link-functions 'org-mew-store-link) ;; 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)) (mark-info (mew-summary-get-mark)) (folder-name (if (and org-mew-link-to-refile-destination (eq mark-info ?o)) ; marked as refile (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 (if (fboundp 'mew-summary-set-message-buffer) (mew-summary-set-message-buffer folder-name msgnum) (set-buffer (mew-cache-hit folder-name msgnum t))) (setq message-id (mew-header-get-value "Message-Id:")) (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 :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 "#" message-id)) (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 (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)) (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-goto-line-then-display (mew-summary-display)) (error "Message not found"))))) (provide 'org-mew) ;; arch-tag: 07ccdca7-6020-4941-a593-588a1e51b870 ;;; org-mew.el ends here ----Next_Part(Wed_Nov_19_00_04_07_2008_363)-- Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ----Next_Part(Wed_Nov_19_00_04_07_2008_363)----