mutt/orgmode integration: point to new Git repo
authorStefano Zacchiroli <zack@upsilon.cc>
Sun, 17 Feb 2013 17:04:29 +0000 (18:04 +0100)
committerStefano Zacchiroli <zack@upsilon.cc>
Sun, 17 Feb 2013 17:04:29 +0000 (18:04 +0100)
blog/posts/2009/10/mail_indexing_for_mutt/mutt-open [deleted file]
blog/posts/2010/02/integrating_Mutt_with_Org-mode.mdwn
blog/posts/2010/02/integrating_Mutt_with_Org-mode/emacs-conf [deleted file]
blog/posts/2010/02/integrating_Mutt_with_Org-mode/mutt-conf [deleted file]
blog/posts/2010/02/integrating_Mutt_with_Org-mode/mutt-open [deleted file]
blog/posts/2010/02/integrating_Mutt_with_Org-mode/remember-mail [deleted file]
hacking/software.mdwn

diff --git a/blog/posts/2009/10/mail_indexing_for_mutt/mutt-open b/blog/posts/2009/10/mail_indexing_for_mutt/mutt-open
deleted file mode 100644 (file)
index f46dc7a..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/bash
-#
-# Fire up mutt on a given mail, located in some Maildir
-# Mail can be specified either by path or by Messsage-ID; in the latter case
-# file lookup is performed using some mail indexing tool.
-#
-# Copyright: © 2009 Stefano Zacchiroli <zack@upsilon.cc> 
-# License: GNU General Public License (GPL), version 3 or above
-
-MUTT=mutt
-MUTT_FLAGS="-R"
-HIDE_SIDEBAR_CMD="B"   # set to empty string if sidebar is not used
-
-# Sample output of 'mu-find -f P i:MESSAGE-ID', which gets passed to mutt-open
-#  /home/zack/Maildir/INBOX/cur/1256673179_0.8700.usha,U=37420,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,S
-
-die_usage () {
-    echo "Usage: mutt-open FILE" 1>&2
-    echo "       mutt-open MESSAGE-ID" 1>&2
-    echo 'E.g.:  mutt-open `mu-find -f P m:MESSAGE-ID`' 1>&2
-    echo '       mutt-open 20091030112543.GA4230@usha.takhisis.invalid' 1>&2
-    exit 3
-}
-
-# Lookup: Message-ID -> mail path. Store results in global $fname
-lookup_msgid () {
-    fname=$(mu-find --format P m:"$1" | head -n 1)
-}
-
-dump_info () {
-    echo "fname: $fname"
-    echo "msgid: $msgid"
-}
-
-if [ -z "$1" -o "$1" = "-h" -o "$1" = "-help" -o "$1" = "--help" ] ; then
-    die_usage
-fi
-if (echo "$1" | grep -q /) && test -f "$1" ; then      # arg is a file
-    fname="$1"
-    msgid=$(egrep -i '^message-id:' "$fname" | cut -f 2 -d':' | sed 's/[ <>]//g')
-elif ! (echo "$1" | grep -q /) ; then  # arg is a Message-ID
-    msgid="$1"
-    lookup_msgid "$msgid"      # side-effect: set $fname
-fi
-# dump_info ; exit 3
-if ! dirname "$fname" | egrep -q '/(cur|new|tmp)$' ; then
-    echo "Path not pointing inside a maildir: $fname" 1>&2
-    exit 2
-fi
-maildir=$(dirname $(dirname "$fname"))
-
-if ! [ -d "$maildir" ] ; then
-    echo "Not a (mail)dir: $maildir" 1>&1
-    exit 2
-fi
-
-# UGLY HACK: without sleep, push keys do not reach mutt, I _guess_ that there
-# might be some terminal-related issue here, since also waiting for an input
-# with "read" similarly "solves" the problem
-sleep 0.1
-mutt_keys="$HIDE_SIDEBAR_CMD/~i$msgid\n\n"
-exec $MUTT $MUTT_FLAGS -f "$maildir/" -e "push $mutt_keys"
index 3b6f6b4..98b836c 100644 (file)
@@ -42,8 +42,10 @@ The Mutt glue macro from my `~/.muttrc` is as follow:
 
        macro index \eR "|~/bin/remember-mail\n"
 
-The [[remember-mail]] script is trivial: it parses the fed mail from STDIN
-(using a couple of legacy Perl modules) and then invokes org-protocol.
+The
+[remember-mail](http://git.upsilon.cc/?p=utils/org-mutt.git;a=blob_plain;f=remember-mail;hb=HEAD)
+script is trivial: it parses the fed mail from STDIN (using a couple of legacy
+Perl modules) and then invokes org-protocol.
 
 The relevant configuration from my `~/.emacs` is reported below; the comments
 explain the various parts:
@@ -97,9 +99,10 @@ sample setup. Using mu, `Message-ID` lookups are as simple as:
 <small> Note: I'm relying upon *maildir-utils version 0.6* or greater, for all
 presented scripts. </small>
 
-For the second part I use the [[mutt-open]] script which fires upon a Mutt
-instance on the maildir containing a specific message, and then "hits" the
-appropriate keys to open the message and shutdown
+For the second part I use the
+[mutt-open](http://git.upsilon.cc/?p=utils/org-mutt.git;a=blob_plain;f=mutt-open;hb=HEAD)
+script which fires upon a Mutt instance on the maildir containing a specific
+message, and then "hits" the appropriate keys to open the message and shutdown
 [the sidebar](http://packages.debian.org/lenny/mutt-patched) (if desired). It
 is a nicely reusable script, which I've being using elsewhere too.
 
@@ -123,16 +126,23 @@ Voilà!
 
 ## Download
 
-Summary of scripts and configuration snippets discussed above:
+Scripts and configuration snippets discussed above are available from the
+[org-mutt Git repository](http://git.upsilon.cc/?p=utils/org-mutt.git;a=summary):
 
-* [[remember-mail]] - store in Org-mode a note back-referencing an email
-* [[mutt-open]] - open Mutt on an email having a specific `Message-ID`
-* [[Emacs configuration|emacs-conf]]
-* [[Mutt configuration|mutt-conf]]
+* [remember-mail](http://git.upsilon.cc/?p=utils/org-mutt.git;a=blob_plain;f=remember-mail;hb=HEAD) -
+  store in Org-mode a note back-referencing an email
+* [mutt-open](http://git.upsilon.cc/?p=utils/org-mutt.git;a=blob_plain;f=mutt-open;hb=HEAD) -
+  open Mutt on an email having a specific `Message-ID`
+* [Emacs configuration](http://git.upsilon.cc/?p=utils/org-mutt.git;a=blob_plain;f=emacs-conf.sample;hb=HEAD)
+* [Mutt configuration](http://git.upsilon.cc/?p=utils/org-mutt.git;a=blob_plain;f=mutt-conf.sample;hb=HEAD)
 
 
-**Update:** fix [[mutt-open]] to work with maildir-utils, version 7 or above
+**Update:** fix mutt-open to work with maildir-utils, version 7 or above
 (22/01/2011, at
 [org-camp](http://www.lifehacking.fr/mediawiki/index.php/OrgModeCampJanvier2011))
 
+**Update:** move scripts and conf to the
+[org-mutt Git repo](http://git.upsilon.cc/?p=utils/org-mutt.git;a=summary)
+(17/02/2012)
+
 [[!tag lang/english planet-debian orgmode mutt gtd hack]]
diff --git a/blog/posts/2010/02/integrating_Mutt_with_Org-mode/emacs-conf b/blog/posts/2010/02/integrating_Mutt_with_Org-mode/emacs-conf
deleted file mode 100644 (file)
index f1415dd..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-;; standard org <-> remember stuff, RTFM
-(org-remember-insinuate)
-(setq org-default-notes-file "~/org/gtd.org")
-(setq org-remember-templates  ;; mail-specific note template, identified by "m"
-      '(("Mail" ?m "* %?\n\n  Source: %u, %c\n %i" nil)))
-
-;; ensure that emacsclient will show just the note to be edited when invoked
-;; from Mutt, and that it will shut down emacsclient once finished;
-;; fallback to legacy behavior when not invoked via org-protocol.
-(add-hook 'org-remember-mode-hook 'delete-other-windows)
-(setq my-org-protocol-flag nil)
-(defadvice org-remember-finalize (after delete-frame-at-end activate)
-  "Delete frame at remember finalization"
-  (progn (if my-org-protocol-flag (delete-frame))
-        (setq my-org-protocol-flag nil)))
-(defadvice org-remember-kill (after delete-frame-at-end activate)
-  "Delete frame at remember abort"
-  (progn (if my-org-protocol-flag (delete-frame))
-        (setq my-org-protocol-flag nil)))
-(defadvice org-protocol-remember (before set-org-protocol-flag activate)
-  (setq my-org-protocol-flag t))
-
-(defun open-mail-in-mutt (message)
-  "Open a mail message in Mutt, using an external terminal.
-
-Message can be specified either by a path pointing inside a
-Maildir, or by Message-ID."
-  (interactive "MPath or Message-ID: ")
-  (shell-command
-   (format "gnome-terminal -e \"%s %s\""
-          (substitute-in-file-name "$HOME/bin/mutt-open") message)))
-
-;; add support for "mutt:ID" links
-(org-add-link-type "mutt" 'open-mail-in-mutt)
diff --git a/blog/posts/2010/02/integrating_Mutt_with_Org-mode/mutt-conf b/blog/posts/2010/02/integrating_Mutt_with_Org-mode/mutt-conf
deleted file mode 100644 (file)
index 4cd5b6f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-macro index \eR "|~/bin/remember-mail\n"
diff --git a/blog/posts/2010/02/integrating_Mutt_with_Org-mode/mutt-open b/blog/posts/2010/02/integrating_Mutt_with_Org-mode/mutt-open
deleted file mode 100644 (file)
index 368a384..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/bash
-#
-# Fire up mutt on a given mail, located in some Maildir
-# Mail can be specified either by path or by Messsage-ID; in the latter case
-# file lookup is performed using some mail indexing tool.
-#
-# Copyright: © 2009-2011 Stefano Zacchiroli <zack@upsilon.cc> 
-# License: GNU General Public License (GPL), version 3 or above
-
-# requires maildir-utils >= 0.7
-
-MUTT=mutt
-MUTT_FLAGS="-R"
-HIDE_SIDEBAR_CMD="B"   # set to empty string if sidebar is not used
-
-# Sample output of 'mu find -f l i:MESSAGE-ID', which gets passed to mutt-open
-#  /home/zack/Maildir/INBOX/cur/1256673179_0.8700.usha,U=37420,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,S
-
-die_usage () {
-    echo "Usage: mutt-open FILE" 1>&2
-    echo "       mutt-open MESSAGE-ID" 1>&2
-    echo 'E.g.:  mutt-open `mu find -f l i:MESSAGE-ID`' 1>&2
-    echo '       mutt-open 20091030112543.GA4230@usha.takhisis.invalid' 1>&2
-    exit 3
-}
-
-# Lookup: Message-ID -> mail path. Store results in global $fname
-lookup_msgid () {
-    #fname=$(mu find -f p m:"$1" | head -n 1)
-    fname=$(mu find -f l i:"$1" | head -n 1)
-}
-
-dump_info () {
-    echo "fname: $fname"
-    echo "msgid: $msgid"
-}
-
-if [ -z "$1" -o "$1" = "-h" -o "$1" = "-help" -o "$1" = "--help" ] ; then
-    die_usage
-fi
-if (echo "$1" | grep -q /) && test -f "$1" ; then      # arg is a file
-    fname="$1"
-    msgid=$(egrep -i '^message-id:' "$fname" | cut -f 2 -d':' | sed 's/[ <>]//g')
-elif ! (echo "$1" | grep -q /) ; then  # arg is a Message-ID
-    msgid="$1"
-    lookup_msgid "$msgid"      # side-effect: set $fname
-fi
-# dump_info ; exit 3
-if ! dirname "$fname" | egrep -q '/(cur|new|tmp)$' ; then
-    echo "Path not pointing inside a maildir: $fname" 1>&2
-    exit 2
-fi
-maildir=$(dirname $(dirname "$fname"))
-
-if ! [ -d "$maildir" ] ; then
-    echo "Not a (mail)dir: $maildir" 1>&1
-    exit 2
-fi
-
-# UGLY HACK: without sleep, push keys do not reach mutt, I _guess_ that there
-# might be some terminal-related issue here, since also waiting for an input
-# with "read" similarly "solves" the problem
-sleep 0.1
-mutt_keys="$HIDE_SIDEBAR_CMD/~i$msgid\n\n"
-exec $MUTT $MUTT_FLAGS -f "$maildir/" -e "push $mutt_keys"
diff --git a/blog/posts/2010/02/integrating_Mutt_with_Org-mode/remember-mail b/blog/posts/2010/02/integrating_Mutt_with_Org-mode/remember-mail
deleted file mode 100644 (file)
index 9e13e75..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Helper for mutt to remember mails in Emacs' Org mode
-#
-# Copyright: © 2009-2010 Stefano Zacchiroli <zack@upsilon.cc> 
-# License: GNU General Public License (GPL), version 3 or above
-#
-# Example of mutt macro to invoke this hitting ESC-R (to be put in ~/.muttrc):
-#  macro index \eR "|~/bin/remember-mail\n"
-
-use strict;
-use Mail::Internet;
-use URI::Escape;
-
-my $msg = Mail::Internet->new(\*STDIN);
-$msg->head->get('message-id') =~ /^<(.*)>$/;
-my $mid = $1;
-my $subject = $msg->head->get('subject') || "";
-my $from = $msg->head->get('from') || "";
-chomp ($subject, $from);
-my $note_body = uri_escape("  Subject: $subject\n    From: $from");
-
-exec "emacsclient", "-t", "org-protocol:/remember:/m/mutt:$mid/mail/$note_body";
index b37ef9e..4d90eac 100644 (file)
@@ -92,7 +92,8 @@ debugger](http://caml.inria.fr/pub/docs/manual-ocaml/manual030.html)
   [ [[blog post|blog/posts/2010/05/tickler_file_for_maildir]],
   [git](http://git.upsilon.cc/?p=utils/rotate-tickler.git) ]
 * **integration of Mutt with Org-mode**, to implement your GTD work flow
-  [ [[blog post|blog/posts/2010/02/integrating_Mutt_with_Org-mode]] ]
+  [ [[blog post|blog/posts/2010/02/integrating_Mutt_with_Org-mode]],
+  [git](http://git.upsilon.cc/?p=utils/org-mutt.git;a=summary) ]
 * **pam-hooks** - PAM module that support execution of login/logout hooks
   [ [[homepage|pam-hooks]]]
 * **flickr download** - batch downloader for [flickr](http://flickr.com) photos