From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Georg C. F. Greve" Subject: Integration of Org mode with Mairix: org-mairix.el Date: Wed, 26 Sep 2007 15:45:04 +0200 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0897539755==" Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IaXDZ-000726-9m for emacs-orgmode@gnu.org; Wed, 26 Sep 2007 09:46:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IaXDX-0006zY-Rn for emacs-orgmode@gnu.org; Wed, 26 Sep 2007 09:46:20 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IaXDX-0006zO-MI for emacs-orgmode@gnu.org; Wed, 26 Sep 2007 09:46:19 -0400 Received: from gadolin.fsfeurope.org ([195.176.254.152]) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1IaXDW-0006e7-UQ for emacs-orgmode@gnu.org; Wed, 26 Sep 2007 09:46:19 -0400 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 --===============0897539755== Content-Type: multipart/signed; boundary="20070926154504+0200-42890857-14632209178710337"; micalg=pgp-sha1; protocol="application/pgp-signature" --20070926154504+0200-42890857-14632209178710337 Content-Type: multipart/mixed; boundary="20070926154504+0200-189214978-189385688-61283792" --20070926154504+0200-189214978-189385688-61283792 Hi all, since it appears that quite some people are using Org mode to do their GTD organising, and email obviouisly plays an important role in that, I've taken a little bit of time to clean up the integration of Mairix with Org. At the moment it only has support for Gnus as MUA, but it should be fairly simple to also support other MUAs, the code supports it. I've also made sure the file has the appropriate legal notices and such, so it may eventually be elegible for integration into Org mode. The weakest point right now is the selection of the Gnus group upon matching, as I am still looking for a way to do this in Gnus that will not generate zombies. But overall I'm quite happy now: By default, this will pull an entire thread into the search group and automatically select the mail that was linked to. Please test, help debug and extend. I don't have the time to maintain this actively, but would be happy if people found it useful. Regards, Georg --20070926154504+0200-189214978-189385688-61283792 Content-Type: application/emacs-lisp Content-Disposition: attachment; filename=org-mairix.el Content-Transfer-Encoding: quoted-printable ;;; org-mairix.el - Support for hooking mairix search into Org for differen= t MUAs ;; ;; Copyright (C) 2007 Georg C. F. Greve ;; ;; Author: Georg C. F. Greve ;; Keywords: outlines, hypermedia, calendar, wp, email, mairix ;; Purpose: Integrate mairix email searching into Org mode ;; See http://orgmode.org and http://www.rpcurnow.force9.co.uk/mairix/ ;; Version: 0.1 ;; ;; This file 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. ;; It 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; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;; (require 'org) ;;; The custom variables (defgroup org-mairix nil "Mairix support/integration in org." :tag "Org Mairix" :group 'org) (defcustom org-mairix-threaded-links t "Should new links be created as threaded links? If t, links will be stored as threaded searches. If nil, links will be stored as non-threaded searches." :group 'org-mairix :type 'boolean) (defcustom org-mairix-augmented-links nil "Should new links be created as augmenting searches? If t, links will be stored as augmenting searches. If nil, links will be stored as normal searches. Attention: When activating this option, you will need to remove old articles from your mairix results group in some other way, mairix will not do it for you." :group 'org-mairix :type 'boolean) (defcustom org-mairix-display-hook 'org-mairix-gnus-display-results "Hook to call to display the results of a successful mairix search. Defaults to Gnus, feel free to add your own MUAs or methods." :group 'org-mairix :type 'hook) (defcustom org-mairix-executable "mairix" "The mairix executable to call. If your paths are set up correctly, you should not need to change this." :group 'org-mairix :type 'string) (defgroup org-mairix-gnus nil "Use gnus for mairix support in org." :tag "Org Mairix Gnus" :group 'org-mairix) (defcustom org-mairix-gnus-results-group "nnmaildir:mairix" "The group that is configured to hold the mairix search results, which needs to be setup independently of the org-mairix integration, along with general mairix configuration." :group 'org-mairix-gnus :type 'string) ;;; The hooks to integrate mairix into org (org-add-link-type "mairix" 'org-mairix-open) (add-hook 'org-store-link-functions 'org-mairix-store-link) ;;; Generic org-mairix functions (defun org-mairix-store-link () "Store a link to the current message as a Mairix search for its Message I= D." ;; gnus integration (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)) (from (mail-header-from header)) (message-id (mail-header-id header)) (date (mail-header-date header)) (subject (gnus-summary-subject-string))) (org-store-link-props :type "mairix" :from from :subject subject :message-id message-id ) (setq cpltxt (org-email-link-description)) (org-store-link-props :link (concat "mairix:" (org-remove-angle-brack= ets message-id) (if org-mairix-threaded-links " --thread") (if org-mairix-augmented-links " --augment")) :description cpltxt)))) (defun org-mairix-open (path) "Function to open mairix link. We first need to split it into its individual parts, and then extract the message-id to be passed on to the display function before call mairix, e= valuate the number of matches returned, and make sure to only call display of ma= irix succeeded in matching." (setq arguments (split-string path " ")) (setq message-id (pop arguments)) (setq cmdline org-mairix-executable) (while arguments (setq cmdline (concat cmdline " " (pop arguments)))) (setq retval (shell-command-to-string (concat cmdline " m:" message-id))) (string-match "\[0-9\]+" retval) (setq matches (string-to-number (match-string 0 retval))) (if (eq matches 0) (message "Link failed: no matches, sorry.") (message "Link returned %d matches." matches) (run-hook-with-args 'org-mairix-display-hook message-id))) ;;; Functions necessary for gnus integration (defun org-mairix-gnus-display-results (message-id) "Display results of mairix search in Gnus. Note: This does not work as cleanly as I would like it to. The problem being that Gnus should simply reread the group cleanly, without remembering anything. At the moment it seems to be unable to do that -- so you're likely to see zombies floating around. Gnus developers couldn't really help, see: http://article.gmane.org/gmane.emacs.gnus.general/65248 If you can improve this, please do!" (require 'gnus) (require 'gnus-sum) (gnus-group-quick-select-group 0 org-mairix-gnus-results-group) (gnus-summary-reselect-current-group t t) (gnus-summary-select-article nil t t (car (gnus-find-matching-articles "message-id" message-id)))) (provide 'org-mairix) ;;; org-mairix.el ends here --20070926154504+0200-189214978-189385688-61283792 Content-Transfer-Encoding: quoted-printable =2D-=20 Georg C. F. Greve Free Software Foundation Europe (http://fsfeurope.org) Join the Fellowship and protect your freedom! (http://www.fsfe.org) What everyone should know about DRM (http://DRM.info) --20070926154504+0200-189214978-189385688-61283792-- --20070926154504+0200-42890857-14632209178710337 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iQCVAwUBRvpiYCk9sUy32wQcAQLOdwQAoRC3uxczce5Dotq3bYs2jfo6dMJA8MSE zBxs1mINE9aRwUmMtDfIHxC6FlHXsWOVuNvf8ifNV/G97yDNzIRmiLCDtZPMlr0a ffYM3j6AfKkQWiqskI1fnN2cRIWUtT4mROSlLX7UI5A3mWKf2eo3kFwcpbmg5AmT IjlsoCJngNQ= =pcPN -----END PGP SIGNATURE----- --20070926154504+0200-42890857-14632209178710337-- --===============0897539755== 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 --===============0897539755==--