+``notmuch-show-mode`` is used to display a single thread of email from
+your email archives.
+
+By default, various components of email messages, (citations,
+signatures, already-read messages), are hidden. You can make
+these parts visible by clicking with the mouse button or by
+pressing RET after positioning the cursor on a hidden part.
+
+.. el:define-key:: <space>
+
+ Scroll the current message (if necessary),
+ advance to the next message, or advance to the next thread (if
+ already on the last message of a thread).
+
+.. el:define-key:: c
+
+ :ref:`show-copy`
+
+.. el:define-key:: N
+
+ Move to next message
+
+.. el:define-key:: P
+
+ Move to previous message (or start of current message)
+
+.. el:define-key:: n
+
+ Move to next matching message
+
+.. el:define-key:: p
+
+ Move to previous matching message
+
+.. el:define-key:: +
+ -
+
+ Add or remove arbitrary tags from the current message.
+
+.. el:define-key:: !
+
+ |docstring::notmuch-show-toggle-elide-non-matching|
+
+.. el:define-key:: ?
+
+ Display full set of key bindings
+
+Display of messages can be controlled by the following variables; see also :ref:`show-large`.
+
+.. el:defcustom:: notmuch-message-headers
+
+ |docstring::notmuch-message-headers|
+
+.. el:defcustom:: notmuch-message-headers-visible
+
+ |docstring::notmuch-message-headers-visible|
+
+.. el:defcustom:: notmuch-show-header-line
+
+ |docstring::notmuch-show-header-line|
+
+.. el:defcustom:: notmuch-multipart/alternative-discouraged
+
+ Which mime types to hide by default for multipart messages.
+
+ Can either be a list of mime types (as strings) or a function
+ mapping a plist representing the current message to such a list.
+ The following example function would discourage `text/html` and
+ `multipart/related` generally, but discourage `text/plain` should
+ the message be sent from `whatever@example.com`.
+
+ .. code:: lisp
+
+ (defun my--determine-discouraged (msg)
+ (let* ((headers (plist-get msg :headers))
+ (from (or (plist-get headers :From) "")))
+ (cond
+ ((string-match "whatever@example.com" from)
+ (list "text/plain"))
+ (t
+ (list "text/html" "multipart/related")))))
+
+.. _show-large:
+
+Dealing with large messages and threads
+---------------------------------------
+
+If you are finding :ref:`notmuch-show` is annoyingly slow displaying
+large messages, you can customize
+:el:defcustom:`notmuch-show-max-text-part-size`. If you want to speed up the
+display of large threads (with or without large messages), there are
+several options. First, you can display the same query in one of the
+other modes. :ref:`notmuch-unthreaded` is the most robust for
+extremely large queries, but :ref:`notmuch-tree` is also be faster
+than :ref:`notmuch-show` in general, since it only renders a single
+message a time. If you prefer to stay with the rendered thread
+("conversation") view of :ref:`notmuch-show`, you can customize the
+variables :el:defcustom:`notmuch-show-depth-limit`,
+:el:defcustom:`notmuch-show-height-limit` and
+:el:defcustom:`notmuch-show-max-text-part-size` to limit the amount of
+rendering done initially. Note that these limits are implicitly
+*OR*-ed together, and combinations might have surprising effects.
+
+.. el:defcustom:: notmuch-show-depth-limit
+
+ |docstring::notmuch-show-depth-limit|
+
+.. el:defcustom:: notmuch-show-height-limit
+
+ |docstring::notmuch-show-height-limit|
+
+.. el:defcustom:: notmuch-show-max-text-part-size
+
+ |docstring::notmuch-show-max-text-part-size|
+
+.. _show-copy:
+
+Copy to kill-ring
+-----------------
+
+You can use the usually Emacs ways of copying text to the kill-ring,
+but notmuch also provides some shortcuts. These keys are available in
+:ref:`notmuch-show`, and :ref:`notmuch-tree`. A subset are available
+in :ref:`notmuch-search`.
+
+.. el:define-key:: c F
+ M-x notmuch-show-stash-filename
+
+ |docstring::notmuch-show-stash-filename|
+
+.. el:define-key:: c G
+ M-x notmuch-show-stash-git-send-email
+
+ |docstring::notmuch-show-stash-git-send-email|
+
+.. el:define-key:: c I
+ M-x notmuch-show-stash-message-id-stripped
+
+ |docstring::notmuch-show-stash-message-id-stripped|
+
+.. el:define-key:: c L
+ M-x notmuch-show-stash-mlarchive-link-and-go
+
+ |docstring::notmuch-show-stash-mlarchive-link-and-go|
+
+.. el:define-key:: c T
+ M-x notmuch-show-stash-tags
+
+ |docstring::notmuch-show-stash-tags|
+
+.. el:define-key:: c c
+ M-x notmuch-show-stash-cc
+
+ |docstring::notmuch-show-stash-cc|
+
+.. el:define-key:: c d
+ M-x notmuch-show-stash-date
+
+ |docstring::notmuch-show-stash-date|
+
+.. el:define-key:: c f
+ M-x notmuch-show-stash-from
+
+ |docstring::notmuch-show-stash-from|
+
+.. el:define-key:: c i
+ M-x notmuch-show-stash-message-id
+
+ |docstring::notmuch-show-stash-message-id|
+
+.. el:define-key:: c l
+ M-x notmuch-show-stash-mlarchive-link
+
+ |docstring::notmuch-show-stash-mlarchive-link|
+
+.. el:define-key:: c s
+ M-x notmuch-show-stash-subject
+
+ |docstring::notmuch-show-stash-subject|
+
+.. el:define-key:: c t
+ M-x notmuch-show-stash-to
+
+ |docstring::notmuch-show-stash-to|
+
+.. el:define-key:: c ?
+ M-x notmuch-subkeymap-help
+
+ Show all available copying commands
+
+.. _emacs-show-duplicates:
+
+Dealing with duplicates
+-----------------------
+
+If there are multiple files with the same :mailheader:`Message-ID`
+(see :any:`duplicate-files`), then :any:`notmuch-show` displays the
+number of duplicates and identifies the current duplicate. In the
+following example duplicate 3 of 5 is displayed.
+
+.. code-block::
+ :emphasize-lines: 1
+
+ M. Mustermann <max@example.com> (Sat, 30 Jul 2022 10:33:10 -0300) (inbox signed) 3/5
+ Subject: Re: Multiple files per message in emacs
+ To: notmuch@notmuchmail.org
+
+.. el:define-key:: %
+ M-x notmuch-show-choose-duplicate
+
+ |docstring::notmuch-show-choose-duplicate|
+
+.. _notmuch-tree:
+