;; 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 . ;; ;; Authors: David Edmondson (defcustom notmuch-print-mechanism 'notmuch-print-lpr "How should printing be done?" :group 'notmuch :type '(choice (function :tag "Use lpr" notmuch-print-lpr) (function :tag "Use ps-print" notmuch-print-ps-print) (function :tag "Use ps-print then evince" notmuch-print-ps-print/evince) (function :tag "Use muttprint" notmuch-print-muttprint) (function :tag "Use muttprint then evince" notmuch-print-muttprint/evince) (function :tag "Using a custom function"))) (defmacro notmuch-print-with-file (filename &rest body) `(with-temp-buffer (insert-file-contents ,filename) (set-buffer-modified-p nil) ,@body)) (defun notmuch-print-lpr (filename msg) (notmuch-print-with-file filename (lpr-buffer))) (defun notmuch-print-ps-print (filename msg) (let ((subject (plist-get (notmuch-show-get-prop :headers msg) :Subject))) (notmuch-print-with-file filename (rename-buffer subject t) (ps-print-buffer)))) (defun notmuch-print-ps-print/evince (filename msg) (let ((ps-file (make-temp-file "notmuch")) (subject (plist-get (notmuch-show-get-prop :headers msg) :Subject))) (notmuch-print-with-file filename (rename-buffer subject t) (ps-print-buffer ps-file) (async-shell-command (concat "evince " ps-file))))) (defun notmuch-print-muttprint (filename msg) (shell-command (concat "muttprint " "--file " (shell-quote-argument filename) " " ;; Show the tags. "--printed-headers 'Date_To_From_CC_Newsgroups_*Subject*_/Tags/'"))) (defun notmuch-print-muttprint/evince (filename msg) (let ((ps-file (make-temp-file "notmuch"))) (call-process-shell-command (concat "muttprint " "--file " (shell-quote-argument filename) " " ;; Show the tags. "--printed-headers 'Date_To_From_CC_Newsgroups_*Subject*_/Tags/' " "--printer 'TO_FILE:" (shell-quote-argument ps-file) "'")) (async-shell-command (concat "evince " ps-file)))) (defun notmuch-print-message (filename msg) (funcall notmuch-print-mechanism filename msg)) ;; (provide 'notmuch-print)