+``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.
+
+``<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).
+
+``c``
+ :ref:`show-copy`
+
+``N``
+ Move to next message
+
+``P``
+ Move to previous message (or start of current message)
+
+``n``
+ Move to next matching message
+
+``p``
+ Move to previous matching message
+
+``+,-``
+ Add or remove arbitrary tags from the current message.
+
+``!``
+ |docstring::notmuch-show-toggle-elide-non-matching|
+
+``?``
+ Display full set of key bindings
+
+Display of messages can be controlled by the following variables
+
+:index:`notmuch-message-headers`
+ |docstring::notmuch-message-headers|
+
+:index:`notmuch-message-headers-visible`
+ |docstring::notmuch-message-headers-visible|
+
+:index:`notmuch-show-header-line`
+ |docstring::notmuch-show-header-line|
+
+:index:`notmuch-show-depth-limit`
+ |docstring::notmuch-show-depth-limit|
+
+:index:`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-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`.
+
+``c F`` ``notmuch-show-stash-filename``
+ |docstring::notmuch-show-stash-filename|
+
+``c G`` ``notmuch-show-stash-git-send-email``
+ |docstring::notmuch-show-stash-git-send-email|
+
+``c I`` ``notmuch-show-stash-message-id-stripped``
+ |docstring::notmuch-show-stash-message-id-stripped|
+
+``c L`` ``notmuch-show-stash-mlarchive-link-and-go``
+ |docstring::notmuch-show-stash-mlarchive-link-and-go|
+
+``c T`` ``notmuch-show-stash-tags``
+ |docstring::notmuch-show-stash-tags|
+
+``c c`` ``notmuch-show-stash-cc``
+ |docstring::notmuch-show-stash-cc|
+
+``c d`` ``notmuch-show-stash-date``
+ |docstring::notmuch-show-stash-date|
+
+``c f`` ``notmuch-show-stash-from``
+ |docstring::notmuch-show-stash-from|
+
+``c i`` ``notmuch-show-stash-message-id``
+ |docstring::notmuch-show-stash-message-id|
+
+``c l`` ``notmuch-show-stash-mlarchive-link``
+ |docstring::notmuch-show-stash-mlarchive-link|
+
+``c s`` ``notmuch-show-stash-subject``
+ |docstring::notmuch-show-stash-subject|
+
+``c t`` ``notmuch-show-stash-to``
+ |docstring::notmuch-show-stash-to|
+
+``c ?``
+ Show all available copying commands
+
+.. _notmuch-tree:
+