mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
emacs: Allow '|' to operate on multiple messages (by means of prefix argument).
We extend the '|' command so that passing a prefix argument, (for example, "C-u |"), causes it to pipe all open messages in the current thread rather than just the single, current message.
This commit is contained in:
parent
9f0accb6aa
commit
4e77148a4b
1 changed files with 34 additions and 7 deletions
|
@ -774,6 +774,22 @@ All currently available key bindings:
|
||||||
"Mark the current message as read."
|
"Mark the current message as read."
|
||||||
(notmuch-show-remove-tag "unread"))
|
(notmuch-show-remove-tag "unread"))
|
||||||
|
|
||||||
|
;; Functions for getting attributes of several messages in the current
|
||||||
|
;; thread.
|
||||||
|
|
||||||
|
(defun notmuch-show-get-message-ids-for-open-messages ()
|
||||||
|
"Return a list of all message IDs for open messages in the current thread."
|
||||||
|
(save-excursion
|
||||||
|
(let (message-ids done)
|
||||||
|
(goto-char (point-min))
|
||||||
|
(while (not done)
|
||||||
|
(if (notmuch-show-message-visible-p)
|
||||||
|
(setq message-ids (append message-ids (list (notmuch-show-get-message-id)))))
|
||||||
|
(setq done (not (notmuch-show-goto-message-next)))
|
||||||
|
)
|
||||||
|
message-ids
|
||||||
|
)))
|
||||||
|
|
||||||
;; Commands typically bound to keys.
|
;; Commands typically bound to keys.
|
||||||
|
|
||||||
(defun notmuch-show-advance-and-archive ()
|
(defun notmuch-show-advance-and-archive ()
|
||||||
|
@ -904,16 +920,27 @@ any effects from previous calls to
|
||||||
(interactive)
|
(interactive)
|
||||||
(view-file (notmuch-show-get-filename)))
|
(view-file (notmuch-show-get-filename)))
|
||||||
|
|
||||||
(defun notmuch-show-pipe-message (command)
|
(defun notmuch-show-pipe-message (entire-thread command)
|
||||||
"Pipe the contents of the current message to the given command.
|
"Pipe the contents of the current message (or thread) to the given command.
|
||||||
|
|
||||||
The given command will be executed with the raw contents of the
|
The given command will be executed with the raw contents of the
|
||||||
current email message as stdin. Anything printed by the command
|
current email message as stdin. Anything printed by the command
|
||||||
to stdout or stderr will appear in the *Messages* buffer."
|
to stdout or stderr will appear in the *Messages* buffer.
|
||||||
(interactive "sPipe message to command: ")
|
|
||||||
(apply 'start-process-shell-command "notmuch-pipe-command" "*notmuch-pipe*"
|
When invoked with a prefix argument, the command will receive all
|
||||||
(list command " < "
|
open messages in the current thread (formatted as an mbox) rather
|
||||||
(shell-quote-argument (notmuch-show-get-filename)))))
|
than only the current message."
|
||||||
|
(interactive "P\nsPipe message to command: ")
|
||||||
|
(let (shell-command)
|
||||||
|
(if entire-thread
|
||||||
|
(setq shell-command
|
||||||
|
(concat "notmuch show --format=mbox "
|
||||||
|
(shell-quote-argument
|
||||||
|
(mapconcat 'identity (notmuch-show-get-message-ids-for-open-messages) " OR "))
|
||||||
|
" | " command))
|
||||||
|
(setq shell-command
|
||||||
|
(concat command " < " (shell-quote-argument (notmuch-show-get-filename)))))
|
||||||
|
(start-process-shell-command "notmuch-pipe-command" "*notmuch-pipe*" shell-command)))
|
||||||
|
|
||||||
(defun notmuch-show-add-tag (&rest toadd)
|
(defun notmuch-show-add-tag (&rest toadd)
|
||||||
"Add a tag to the current message."
|
"Add a tag to the current message."
|
||||||
|
|
Loading…
Reference in a new issue