mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
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.
This commit is contained in:
parent
d39d0e55f0
commit
fe9e163f19
1 changed files with 9 additions and 5 deletions
|
@ -85,10 +85,10 @@ any given message."
|
||||||
(defmacro with-current-notmuch-show-message (&rest body)
|
(defmacro with-current-notmuch-show-message (&rest body)
|
||||||
"Evaluate body with current buffer set to the text of current message"
|
"Evaluate body with current buffer set to the text of current message"
|
||||||
`(save-excursion
|
`(save-excursion
|
||||||
(let ((filename (notmuch-show-get-filename)))
|
(let ((id (notmuch-show-get-message-id)))
|
||||||
(let ((buf (generate-new-buffer (concat "*notmuch-msg-" filename "*"))))
|
(let ((buf (generate-new-buffer (concat "*notmuch-msg-" id "*"))))
|
||||||
(with-current-buffer buf
|
(with-current-buffer buf
|
||||||
(insert-file-contents filename nil nil nil t)
|
(call-process notmuch-command nil t nil "cat" id)
|
||||||
,@body)
|
,@body)
|
||||||
(kill-buffer buf)))))
|
(kill-buffer buf)))))
|
||||||
|
|
||||||
|
@ -917,7 +917,11 @@ any effects from previous calls to
|
||||||
(defun notmuch-show-view-raw-message ()
|
(defun notmuch-show-view-raw-message ()
|
||||||
"View the file holding the current message."
|
"View the file holding the current message."
|
||||||
(interactive)
|
(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)
|
(defun notmuch-show-pipe-message (entire-thread command)
|
||||||
"Pipe the contents of the current message (or thread) to the given 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 "))
|
(mapconcat 'identity (notmuch-show-get-message-ids-for-open-messages) " OR "))
|
||||||
" | " command))
|
" | " command))
|
||||||
(setq shell-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)))
|
(start-process-shell-command "notmuch-pipe-command" "*notmuch-pipe*" shell-command)))
|
||||||
|
|
||||||
(defun notmuch-show-add-tags-worker (current-tags add-tags)
|
(defun notmuch-show-add-tags-worker (current-tags add-tags)
|
||||||
|
|
Loading…
Reference in a new issue