diff options
author | Michal Sojka <sojkam1@fel.cvut.cz> | 2010-10-22 11:28:04 +0200 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2010-11-05 17:51:18 -0700 |
commit | fe9e163f199c43e23e3401cca976228340eb5f31 (patch) | |
tree | c60920368a4978732f11f4ccae4f6baa573dd2e5 /emacs | |
parent | d39d0e55f09d8cc2ba9683ec5622068bb7373f2a (diff) |
emacs: Access raw messages via cat subcommand
This patch modifies the following commands to access the messages via
cat subcommand:
- view/save attachments ('v', 'w'),
- view a raw message ('V') and
- pipe a message to a command ('|').
With this patch, it is straightforward to use notmuch emacs interface
with a remote database accessed over SSH. To do this, it is sufficient
to redefine notmuch-command variable to contain the name of a script
containing:
ssh user@host notmuch "$@"
If the ssh client has enabled connection sharing (ControlMaster option
in OpenSSH), the emacs interface is almost as responsive as when
notmuch is invoked locally.
Diffstat (limited to 'emacs')
-rw-r--r-- | emacs/notmuch-show.el | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 7ec6aa50..9b3841ff 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -85,10 +85,10 @@ any given message." (defmacro with-current-notmuch-show-message (&rest body) "Evaluate body with current buffer set to the text of current message" `(save-excursion - (let ((filename (notmuch-show-get-filename))) - (let ((buf (generate-new-buffer (concat "*notmuch-msg-" filename "*")))) + (let ((id (notmuch-show-get-message-id))) + (let ((buf (generate-new-buffer (concat "*notmuch-msg-" id "*")))) (with-current-buffer buf - (insert-file-contents filename nil nil nil t) + (call-process notmuch-command nil t nil "cat" id) ,@body) (kill-buffer buf))))) @@ -917,7 +917,11 @@ any effects from previous calls to (defun notmuch-show-view-raw-message () "View the file holding the current message." (interactive) - (view-file (notmuch-show-get-filename))) + (let ((id (notmuch-show-get-message-id))) + (let ((buf (get-buffer-create (concat "*notmuch-raw-" id "*")))) + (switch-to-buffer buf) + (save-excursion + (call-process notmuch-command nil t nil "cat" id))))) (defun notmuch-show-pipe-message (entire-thread command) "Pipe the contents of the current message (or thread) to the given command. @@ -938,7 +942,7 @@ than only the current message." (mapconcat 'identity (notmuch-show-get-message-ids-for-open-messages) " OR ")) " | " command)) (setq shell-command - (concat command " < " (shell-quote-argument (notmuch-show-get-filename))))) + (concat "notmuch cat " (shell-quote-argument (notmuch-show-get-message-id)) " | " command))) (start-process-shell-command "notmuch-pipe-command" "*notmuch-pipe*" shell-command))) (defun notmuch-show-add-tags-worker (current-tags add-tags) |