;; 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 '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)