Printing mail

2010-11-11 Thread Sebastian Spaeth
On Thu, 11 Nov 2010 12:57:05 +, David Edmondson  wrote:
> How about something like the attached?

Still untested, but hurray, yes please! :) \o/

Sebastian
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: 



Printing mail

2010-11-11 Thread David Edmondson
On Tue, 09 Nov 2010 23:43:53 -0800, Keith Packard  wrote:
> On Wed, 10 Nov 2010 08:32:01 +0100, Sebastian Spaeth  SSpaeth.de> wrote:
> 
> > which gives me nice menu entries for previewing my printouts (defaults
> > to 'gv' but can easily be set to use 'evince') and which provides the
> > M-x pr-ps-buffer-preview command to invoke the print preview directly
> > (unfortunately it still asks about the n-up scaling of pages).
> 
> Oh, but that doesn't print a message, it prints a buffer which may contain
> other stuff, and may have some elided lines.

Which is swings and roundabouts, especially if the message in question
has multiple parts - muttprint produces mostly horrid output for
something with both text/plain and text/html parts.

How about something like the attached?
-- next part --
A non-text attachment was scrubbed...
Name: 0001-emacs-Improved-printing-support.patch
Type: text/x-diff
Size: 5640 bytes
Desc: not available
URL: 

-- next part --

dme.
-- 
David Edmondson, http://dme.org


Re: Printing mail

2010-11-11 Thread David Edmondson
On Tue, 09 Nov 2010 23:43:53 -0800, Keith Packard kei...@keithp.com wrote:
 On Wed, 10 Nov 2010 08:32:01 +0100, Sebastian Spaeth sebast...@sspaeth.de 
 wrote:
 
  which gives me nice menu entries for previewing my printouts (defaults
  to 'gv' but can easily be set to use 'evince') and which provides the
  M-x pr-ps-buffer-preview command to invoke the print preview directly
  (unfortunately it still asks about the n-up scaling of pages).
 
 Oh, but that doesn't print a message, it prints a buffer which may contain
 other stuff, and may have some elided lines.

Which is swings and roundabouts, especially if the message in question
has multiple parts - muttprint produces mostly horrid output for
something with both text/plain and text/html parts.

How about something like the attached?
From 2fefbe83fd5d0abed4aa063f5d0d2a7b59873bd8 Mon Sep 17 00:00:00 2001
From: David Edmondson d...@dme.org
Date: Thu, 11 Nov 2010 12:33:19 +
Subject: [PATCH] emacs: Improved printing support.

---
 emacs/Makefile.local   |3 +-
 emacs/notmuch-print.el |   67 
 emacs/notmuch-show.el  |   38 +++
 3 files changed, 107 insertions(+), 1 deletions(-)
 create mode 100644 emacs/notmuch-print.el

diff --git a/emacs/Makefile.local b/emacs/Makefile.local
index c5280f1..df87427 100644
--- a/emacs/Makefile.local
+++ b/emacs/Makefile.local
@@ -13,7 +13,8 @@ emacs_sources := \
 	$(dir)/notmuch-maildir-fcc.el \
 	$(dir)/notmuch-message.el \
 	$(dir)/coolj.el \
-	$(dir)/notmuch-lkml.el
+	$(dir)/notmuch-lkml.el \
+	$(dir)/notmuch-print.el
 
 emacs_images := \
 	$(dir)/notmuch-logo.png
diff --git a/emacs/notmuch-print.el b/emacs/notmuch-print.el
new file mode 100644
index 000..2ad4b45
--- /dev/null
+++ b/emacs/notmuch-print.el
@@ -0,0 +1,67 @@
+;; notmuch-print.el --- printing messages from notmuch.
+;;
+;; Copyright © David Edmondson
+;;
+;; This file is part of Notmuch.
+;;
+;; Notmuch 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.
+;;
+;; Notmuch 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 Notmuch.  If not, see http://www.gnu.org/licenses/.
+;;
+;; Authors: David Edmondson d...@dme.org
+
+(defcustom notmuch-print-mechanism 'lpr
+  How should printing be done?
+  :group 'notmuch
+  :type '(choice
+	  (const :tag Use lpr lpr)
+	  (const :tag Use ps-print ps-print)
+	  (const :tag Use muttprint muttprint)
+	  (function :tag Using a custom function)))
+
+(defvar notmuch-print-mechanism-map
+  '((lpr . notmuch-print-lpr)
+(ps-print . notmuch-print-ps-print)
+(muttprint . notmuch-print-muttprint)))
+
+(defmacro notmuch-print-with-file (filename rest body)
+  `(with-temp-buffer
+ (insert-file-contents ,filename)
+ (setq buffer-modified-p nil)
+ ,@body))
+
+(defun notmuch-print-lpr (filename)
+  (notmuch-print-with-file filename
+			   (lpr-buffer)))
+
+(defun notmuch-print-ps-print (filename)
+  (notmuch-print-with-file filename
+			   (ps-print-buffer)))
+
+(defun notmuch-print-muttprint (filename)
+  (shell-command
+   (concat cat  (shell-quote-argument filename)  | muttprint)))
+
+(defun notmuch-print-message (filename)
+  (let ((fn
+	 (cond
+	  ((functionp 'notmuch-print-mechanism)
+	   'notmuch-print-mechanism)
+	  ((assoc notmuch-print-mechanism notmuch-print-mechanism-map)
+	   (cdr (assoc notmuch-print-mechanism notmuch-print-mechanism-map)))
+	  (t
+	   (error No printing mechanism found)
+(funcall fn filename)))
+
+;;
+
+(provide 'notmuch-print)
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 5efdf84..3680faf 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -32,6 +32,7 @@
 (require 'notmuch-query)
 (require 'notmuch-wash)
 (require 'notmuch-mua)
+(require 'notmuch-print)
 
 (declare-function notmuch-call-notmuch-process notmuch (rest args))
 (declare-function notmuch-fontify-headers notmuch nil)
@@ -174,6 +175,38 @@ Set `notmuch-show-address-simplication' to:
   mm-handle ( (notmuch-count-attachments mm-handle) 1
   (message Done))
 
+(defun notmuch-show-with-message-as-text (fn)
+  Apply function `fn' to a text representation of the current
+message.
+  (let* ((from (notmuch-show-clean-address
+		(mail-header-parse-address (notmuch-show-get-from
+	 (subject (notmuch-show-get-subject))
+	 (date (notmuch-show-get-date))
+	 (header (concat
+		  Tags:  (mapconcat '(lambda (tag) tag)
+  (notmuch-show-get-tags) , )
+		  \n
+		  From:  from \n
+		  Date:  date \n))
+	 (body (save-excursion
+		 (goto-char 

Re: Printing mail

2010-11-11 Thread Sebastian Spaeth
On Thu, 11 Nov 2010 12:57:05 +, David Edmondson d...@dme.org wrote:
 How about something like the attached?

Still untested, but hurray, yes please! :) \o/

Sebastian


pgpcXdH8XiwFf.pgp
Description: PGP signature
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Printing mail

2010-11-10 Thread Sebastian Spaeth
On Tue, 09 Nov 2010 10:00:59 -0800, Keith Packard wrote:
> I like the header formatting. And, using evince provides a 'friendly'
> print dialog. But, yeah, something that dealt with mail encodings and
> attachments would be even nicer.

I have the printing package loaded
(require 'printing)
(pr-update-menus)

which gives me nice menu entries for previewing my printouts (defaults
to 'gv' but can easily be set to use 'evince') and which provides the
M-x pr-ps-buffer-preview command to invoke the print preview directly
(unfortunately it still asks about the n-up scaling of pages).

Better header formatting could be achieved by locally customizing the
"ps-print-header" thing when in notmuch mode. But I know too little
about elisp to actually do that myself. That would actually be pretty
nifty.

Sebastian
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: 



Printing mail

2010-11-09 Thread Keith Packard
On Wed, 10 Nov 2010 08:32:01 +0100, Sebastian Spaeth  
wrote:

> which gives me nice menu entries for previewing my printouts (defaults
> to 'gv' but can easily be set to use 'evince') and which provides the
> M-x pr-ps-buffer-preview command to invoke the print preview directly
> (unfortunately it still asks about the n-up scaling of pages).

Oh, but that doesn't print a message, it prints a buffer which may contain
other stuff, and may have some elided lines.

-- 
keith.packard at intel.com
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 



Printing mail

2010-11-09 Thread Sebastian Spaeth
On Tue, 09 Nov 2010 06:51:12 -0800, "Keith Packard"  
wrote:
> Here's a script I'm using with '|' to get mail printed.

Cool script, thanks. Isn't invoking latex a bit heavy-handed to get a
simple mail printed? Given that we are running in almighty emacs anyway.

M-x ps-print buffer doesn't look too bad here and even copes with the
encoding better than the printout of your mail with muttprint had
looked.

Not sure if we should bind a key to ps-print-buffer in notmuch by
default?

The only nuissane is that the title bar simply says "*Printing mail*
(unsave)* here. Is there a way to customize that?

Sebastian
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: 
<http://notmuchmail.org/pipermail/notmuch/attachments/20101109/a12374e7/attachment-0001.pgp>


Printing mail

2010-11-09 Thread Keith Packard
On Tue, 09 Nov 2010 17:16:48 +0100, Sebastian Spaeth  
wrote:

> M-x ps-print buffer doesn't look too bad here and even copes with the
> encoding better than the printout of your mail with muttprint had
> looked.

I like the header formatting. And, using evince provides a 'friendly'
print dialog. But, yeah, something that dealt with mail encodings and
attachments would be even nicer.

-- 
keith.packard at intel.com
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 



Printing mail

2010-11-09 Thread Keith Packard

Print is dead. Or so they say

Here's a script I'm using with '|' to get mail printed. As you can see,
it previews the mail on-screen with 'evince', from which you use the
regular 'print' dialog.

#!/bin/sh
tmp=`mktemp`
muttprint -p "TO_FILE:$tmp"
evince $tmp
rm $tmp

Making this more secure would be nice.

-- 
keith.packard at intel.com
-- next part --
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 



Printing mail

2010-11-09 Thread Keith Packard

Print is dead. Or so they say

Here's a script I'm using with '|' to get mail printed. As you can see,
it previews the mail on-screen with 'evince', from which you use the
regular 'print' dialog.

#!/bin/sh
tmp=`mktemp`
muttprint -p TO_FILE:$tmp
evince $tmp
rm $tmp

Making this more secure would be nice.

-- 
keith.pack...@intel.com


pgpgkqMQnLV66.pgp
Description: PGP signature
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: Printing mail

2010-11-09 Thread Keith Packard
On Tue, 09 Nov 2010 17:16:48 +0100, Sebastian Spaeth sebast...@sspaeth.de 
wrote:

 M-x ps-print buffer doesn't look too bad here and even copes with the
 encoding better than the printout of your mail with muttprint had
 looked.

I like the header formatting. And, using evince provides a 'friendly'
print dialog. But, yeah, something that dealt with mail encodings and
attachments would be even nicer.

-- 
keith.pack...@intel.com


pgpMIVdu3cz0x.pgp
Description: PGP signature
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch