+(defun notmuch-show-tag-all (&rest tag-changes)
+ "Change tags for all messages in the current thread.
+
+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)
+ (notmuch-show-mapc
+ (lambda ()
+ (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))))))
+