]> git.cworth.org Git - notmuch/blobdiff - doc/notmuch-emacs.rst
doc/emacs: add discussion about notmuch-show performance.
[notmuch] / doc / notmuch-emacs.rst
index fed619b78720e106808ef2f4c0aa6adf7c3c8d18..14d189c102839549d399dd6e2459459fa942faff 100644 (file)
@@ -46,8 +46,47 @@ a mouse or by positioning the cursor and pressing ``<return>``
 |                    Customize Notmuch or this page.
 
 You can change the overall appearance of the notmuch-hello screen by
-customizing the variable :index:`notmuch-hello-sections`.
+customizing the variables
 
+:index:`notmuch-hello-sections`
+       |docstring::notmuch-hello-sections|
+
+:index:`notmuch-hello-thousands-separator`
+       |docstring::notmuch-hello-thousands-separator|
+
+:index:`notmuch-show-logo`
+       |docstring::notmuch-show-logo|
+
+:index:`!notmuch-column-control`
+    Controls the number of columns for saved searches/tags in notmuch view.
+
+    This variable has three potential types of values:
+
+    .. describe:: t
+
+       Automatically calculate the number of columns possible based
+       on the tags to be shown and the window width.
+
+    .. describe:: integer <n>
+
+       A lower bound on the number of characters that will
+       be used to display each column.
+
+    .. describe:: float <f>
+
+       A fraction of the window width that is the lower bound on the
+       number of characters that should be used for each column.
+
+    So:
+
+    - if you would like two columns of tags, set this to 0.5.
+
+    - if you would like a single column of tags, set this to 1.0.
+
+    - if you would like tags to be 30 characters wide, set this to 30.
+
+    - if you don't want to worry about all of this nonsense, leave
+      this set to `t`.
 
 
 notmuch-hello key bindings
@@ -175,6 +214,16 @@ variables.
 :index:`notmuch-search-oldest-first`
     Display the oldest threads at the top of the buffer
 
+It is also possible to customize how the name of buffers containing
+search results is formatted using the following variables:
+
+:index:`notmuch-search-buffer-name-format`
+       |docstring::notmuch-search-buffer-name-format|
+
+:index:`notmuch-saved-search-buffer-name-format`
+       |docstring::notmuch-saved-search-buffer-name-format|
+
+
 .. _notmuch-show:
 
 notmuch-show
@@ -211,10 +260,13 @@ pressing RET after positioning the cursor on a hidden part.
 ``+,-``
     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
+Display of messages can be controlled by the following variables; see also :ref:`show-large`.
 
 :index:`notmuch-message-headers`
        |docstring::notmuch-message-headers|
@@ -225,6 +277,57 @@ Display of messages can be controlled by the following variables
 :index:`notmuch-show-header-line`
        |docstring::notmuch-show-header-line|
 
+: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-large:
+
+Dealing with large messages and threads
+---------------------------------------
+
+If you are finding :ref:`notmuch-show` is annoyingly slow displaying
+large messages, you can customize
+:index:`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 :index:`notmuch-show-depth-limit`,
+:index:`notmuch-show-height-limit` and
+:index:`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.
+
+:index:`notmuch-show-depth-limit`
+       |docstring::notmuch-show-depth-limit|
+
+:index:`notmuch-show-height-limit`
+       |docstring::notmuch-show-height-limit|
+
+:index:`notmuch-show-max-text-part-size`
+       |docstring::notmuch-show-max-text-part-size|
+
 .. _show-copy:
 
 Copy to kill-ring
@@ -321,11 +424,21 @@ tags.
 As is the case with :ref:`notmuch-search`, the presentation of results
 can be controlled by the variable ``notmuch-search-oldest-first``.
 
+.. _notmuch-unthreaded:
+
+notmuch-unthreaded
+------------------
+
+``notmuch-unthreaded-mode`` is similar to :any:`notmuch-tree` in that
+each line corresponds to a single message, but no thread information
+is presented.
+
+Keybindings are the same as :any:`notmuch-tree`.
 
 Global key bindings
 ===================
 
-Several features are accessible from anywhere in notmuch through the
+Several features are accessible from most places in notmuch through the
 following key bindings:
 
 ``j``
@@ -334,6 +447,8 @@ following key bindings:
 ``k``
     Tagging operations using :ref:`notmuch-tag-jump`
 
+``C-_`` ``C-/`` ``C-x u``: Undo previous tagging operation using :ref:`notmuch-tag-undo`
+
 .. _notmuch-jump:
 
 notmuch-jump
@@ -363,6 +478,21 @@ operations specified in ``notmuch-tagging-keys``; i.e. each
 
   |docstring::notmuch-tagging-keys|
 
+.. _notmuch-tag-undo:
+
+notmuch-tag-undo
+----------------
+
+Each notmuch buffer supporting tagging operations (i.e buffers in
+:any:`notmuch-show`, :any:`notmuch-search`, :any:`notmuch-tree`, and
+:any:`notmuch-unthreaded` mode) keeps a local stack of tagging
+operations. These can be undone via ``notmuch-tag-undo``. By default
+this is bound to the usual Emacs keys for undo.
+
+:index:`notmuch-tag-undo`
+
+   |docstring::notmuch-tag-undo|
+
 Buffer navigation
 =================
 
@@ -393,6 +523,15 @@ Sending Mail
        :code:`compose-mail`.  To use ``notmuch`` for this, customize this
        variable to the symbol :code:`notmuch-user-agent`.
 
+:index:`message-dont-reply-to-names`
+
+       When composing mail replies, Emacs's message mode uses the
+       variable :code:`message-dont-reply-to-names` to exclude
+       recipients matching a given collection of regular expressions
+       or satisfying an arbitrary predicate.  Notmuch's MUA inherits
+       this standard mechanism and will honour your customization of
+       this variable.
+
 Init File
 ---------