X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=emacs%2Fnotmuch-show.el;h=d318430cdc842c71acf8acab6262c46d066d732b;hb=df96c93239b6e92e19f22f7759e7d1595c3fdcdd;hp=e0dce21070f6a8714484d3a7b40214b42bcbe9ea;hpb=af59d61a4c295a42038889a333fb39a8c05b6a91;p=notmuch diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index e0dce210..d318430c 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -30,6 +30,7 @@ (require 'goto-addr) (require 'notmuch-lib) +(require 'notmuch-tag) (require 'notmuch-query) (require 'notmuch-wash) (require 'notmuch-mua) @@ -38,10 +39,8 @@ (declare-function notmuch-call-notmuch-process "notmuch" (&rest args)) (declare-function notmuch-fontify-headers "notmuch" nil) -(declare-function notmuch-read-tag-changes "notmuch" (&optional initial-input &rest search-terms)) (declare-function notmuch-search-next-thread "notmuch" nil) (declare-function notmuch-search-show-thread "notmuch" nil) -(declare-function notmuch-update-tags "notmuch" (current-tags tag-changes)) (defcustom notmuch-message-headers '("Subject" "To" "Cc" "Date") "Headers that should be shown in a message, in this order. @@ -525,23 +524,6 @@ message at DEPTH in the current thread." (let ((handle (mm-make-handle (current-buffer) (list content-type)))) (mm-interactively-view-part handle)))) -(defun notmuch-show-mm-display-part-inline (msg part nth content-type) - "Use the mm-decode/mm-view functions to display a part in the -current buffer, if possible." - (let ((display-buffer (current-buffer))) - (with-temp-buffer - (let* ((charset (plist-get part :content-charset)) - (handle (mm-make-handle (current-buffer) `(,content-type (charset . ,charset))))) - ;; If the user wants the part inlined, insert the content and - ;; test whether we are able to inline it (which includes both - ;; capability and suitability tests). - (when (mm-inlined-p handle) - (insert (notmuch-get-bodypart-content msg part nth notmuch-show-process-crypto)) - (when (mm-inlinable-p handle) - (set-buffer display-buffer) - (mm-display-part handle) - t)))))) - (defun notmuch-show-multipart/*-to-list (part) (mapcar (lambda (inner-part) (plist-get inner-part :content-type)) (plist-get part :content))) @@ -786,7 +768,7 @@ current buffer, if possible." (defun notmuch-show-insert-part-*/* (msg part content-type nth depth declared-type) ;; This handler _must_ succeed - it is the handler of last resort. (notmuch-show-insert-part-header nth content-type declared-type (plist-get part :filename)) - (notmuch-show-mm-display-part-inline msg part nth content-type) + (notmuch-mm-display-part-inline msg part nth content-type notmuch-show-process-crypto) t) ;; Functions for determining how to handle MIME parts. @@ -1654,22 +1636,26 @@ TAG-CHANGES is a list of tag operations for `notmuch-tag'." (let* ((current-tags (notmuch-show-get-tags)) (new-tags (notmuch-update-tags current-tags tag-changes))) (unless (equal current-tags new-tags) - (apply 'notmuch-tag (notmuch-show-get-message-id) tag-changes) + (funcall 'notmuch-tag (notmuch-show-get-message-id) tag-changes) (notmuch-show-set-tags new-tags)))) -(defun notmuch-show-tag (&optional initial-input) - "Change tags for the current message, read input from the minibuffer." +(defun notmuch-show-tag (&optional tag-changes) + "Change tags for the current message. + +See `notmuch-tag' for information on the format of TAG-CHANGES." (interactive) - (let ((tag-changes (notmuch-read-tag-changes - initial-input (notmuch-show-get-message-id)))) - (apply 'notmuch-show-tag-message tag-changes))) + (setq tag-changes (funcall 'notmuch-tag (notmuch-show-get-message-id) tag-changes)) + (let* ((current-tags (notmuch-show-get-tags)) + (new-tags (notmuch-update-tags current-tags tag-changes))) + (unless (equal current-tags new-tags) + (notmuch-show-set-tags new-tags)))) -(defun notmuch-show-tag-all (&rest tag-changes) - "Change tags for all messages in the current buffer. +(defun notmuch-show-tag-all (&optional tag-changes) + "Change tags for all messages in the current show buffer. -TAG-CHANGES is a list of tag operations for `notmuch-tag'." - (interactive (notmuch-read-tag-changes nil notmuch-show-thread-id)) - (apply 'notmuch-tag (notmuch-show-get-messages-ids-search) tag-changes) +See `notmuch-tag' for information on the format of TAG-CHANGES." + (interactive) + (setq tag-changes (funcall 'notmuch-tag (notmuch-show-get-messages-ids-search) tag-changes)) (notmuch-show-mapc (lambda () (let* ((current-tags (notmuch-show-get-tags)) @@ -1741,13 +1727,10 @@ argument, hide all of the messages." (defun notmuch-show-archive-thread (&optional unarchive) "Archive each message in thread. -If a prefix argument is given, the messages will be -\"unarchived\" (ie. the \"inbox\" tag will be added instead of -removed). - Archive each message currently shown by removing the \"inbox\" -tag from each. Then kill this buffer and show the next thread -from the search from which this thread was originally shown. +tag from each. If a prefix argument is given, the messages will +be \"unarchived\" (ie. the \"inbox\" tag will be added instead of +removed). Note: This command is safe from any race condition of new messages being delivered to the same thread. It does not archive the @@ -1770,7 +1753,7 @@ buffer." (notmuch-show-next-thread)) (defun notmuch-show-archive-message (&optional unarchive) - "Archive the current message. + "Archive the current message (remove \"inbox\" tag). If a prefix argument is given, the message will be \"unarchived\" (ie. the \"inbox\" tag will be added instead of