2022-06-30 14:27:10 +02:00
|
|
|
|
.. _notmuch-emacs:
|
|
|
|
|
|
|
|
|
|
==========================
|
|
|
|
|
Emacs Frontend for Notmuch
|
|
|
|
|
==========================
|
2014-01-28 17:12:37 +01:00
|
|
|
|
|
|
|
|
|
About this Manual
|
|
|
|
|
=================
|
|
|
|
|
|
2014-04-03 22:53:03 +02:00
|
|
|
|
This manual covers only the Emacs interface to Notmuch. For information
|
2014-10-03 16:27:26 +02:00
|
|
|
|
on the command line interface, see section “Description” in the Notmuch
|
|
|
|
|
Manual Pages. To save typing, we will sometimes use *notmuch* in this
|
|
|
|
|
manual to refer to the Emacs interface to Notmuch. When this distinction
|
|
|
|
|
is important, we’ll refer to the Emacs interface as
|
2014-01-28 17:12:37 +01:00
|
|
|
|
*notmuch-emacs*.
|
|
|
|
|
|
|
|
|
|
Notmuch-emacs is highly customizable via the the Emacs customization
|
|
|
|
|
framework (or just by setting the appropriate variables). We try to
|
|
|
|
|
point out relevant variables in this manual, but in order to avoid
|
2014-10-03 16:27:26 +02:00
|
|
|
|
duplication of information, you can usually find the most detailed
|
|
|
|
|
description in the variables' docstring.
|
2014-01-28 17:12:37 +01:00
|
|
|
|
|
|
|
|
|
notmuch-hello
|
|
|
|
|
=============
|
|
|
|
|
|
|
|
|
|
.. index::
|
|
|
|
|
single: notmuch-hello
|
|
|
|
|
single: notmuch
|
|
|
|
|
|
2014-04-03 22:53:03 +02:00
|
|
|
|
``notmuch-hello`` is the main entry point for Notmuch. You can start it
|
2014-01-28 17:12:37 +01:00
|
|
|
|
with ``M-x notmuch`` or ``M-x notmuch-hello``. The startup screen looks
|
|
|
|
|
something like the following. There are some hints at the bottom of the
|
|
|
|
|
screen. There are three main parts to the notmuch-hello screen,
|
|
|
|
|
discussed below. The **bold** text indicates buttons you can click with
|
|
|
|
|
a mouse or by positioning the cursor and pressing ``<return>``
|
|
|
|
|
|
|
|
|
|
| Welcome to **notmuch** You have 52 messages.
|
|
|
|
|
|
|
|
|
|
|
| Saved searches: **[edit]**
|
|
|
|
|
|
|
|
|
|
|
| 52 **inbox** 52 **unread**
|
|
|
|
|
|
|
|
|
|
|
| Search: ____________________________________
|
|
|
|
|
|
|
|
|
|
|
| All tags: **[show]**
|
|
|
|
|
|
|
2016-06-05 22:38:05 +02:00
|
|
|
|
| Hit \`?' for context-sensitive help in any Notmuch screen.
|
|
|
|
|
| Customize Notmuch or this page.
|
2014-01-28 17:12:37 +01:00
|
|
|
|
|
2014-04-03 22:53:03 +02:00
|
|
|
|
You can change the overall appearance of the notmuch-hello screen by
|
2022-05-16 12:46:10 +02:00
|
|
|
|
customizing the variables
|
2014-01-28 17:12:37 +01:00
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-hello-sections
|
|
|
|
|
|
2022-05-16 12:46:10 +02:00
|
|
|
|
|docstring::notmuch-hello-sections|
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-hello-thousands-separator
|
|
|
|
|
|
2022-05-16 12:46:10 +02:00
|
|
|
|
|docstring::notmuch-hello-thousands-separator|
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-show-logo
|
|
|
|
|
|
2022-05-16 12:46:10 +02:00
|
|
|
|
|docstring::notmuch-show-logo|
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-column-control
|
|
|
|
|
|
2022-05-16 12:46:10 +02:00
|
|
|
|
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`.
|
2014-01-28 17:12:37 +01:00
|
|
|
|
|
2022-07-01 18:14:29 +02:00
|
|
|
|
.. emacsvar:: notmuch-show-empty-saved-searches
|
|
|
|
|
|
|
|
|
|
|docstring::notmuch-show-empty-saved-searches|
|
2014-01-28 17:12:37 +01:00
|
|
|
|
|
|
|
|
|
notmuch-hello key bindings
|
|
|
|
|
--------------------------
|
|
|
|
|
|
|
|
|
|
``<tab>``
|
|
|
|
|
Move to the next widget (button or text entry field)
|
|
|
|
|
|
2021-10-30 20:58:16 +02:00
|
|
|
|
``<backtab>``
|
2014-01-28 17:12:37 +01:00
|
|
|
|
Move to the previous widget.
|
|
|
|
|
|
|
|
|
|
``<return>``
|
|
|
|
|
Activate the current widget.
|
|
|
|
|
|
2019-03-23 13:51:03 +01:00
|
|
|
|
``g`` ``=``
|
2014-01-28 17:12:37 +01:00
|
|
|
|
Refresh the buffer; mainly update the counts of messages for various
|
|
|
|
|
saved searches.
|
|
|
|
|
|
|
|
|
|
``G``
|
|
|
|
|
Import mail, See :ref:`importing`
|
|
|
|
|
|
|
|
|
|
``m``
|
|
|
|
|
Compose a message
|
|
|
|
|
|
|
|
|
|
``s``
|
|
|
|
|
Search the notmuch database using :ref:`notmuch-search`
|
|
|
|
|
|
|
|
|
|
``v``
|
|
|
|
|
Print notmuch version
|
|
|
|
|
|
|
|
|
|
``q``
|
|
|
|
|
Quit
|
|
|
|
|
|
|
|
|
|
.. _saved-searches:
|
|
|
|
|
|
|
|
|
|
Saved Searches
|
|
|
|
|
--------------
|
|
|
|
|
|
2014-10-03 16:27:26 +02:00
|
|
|
|
Since notmuch is entirely search-based, it's often useful to organize
|
|
|
|
|
mail around common searches. To facilitate this, the first section of
|
|
|
|
|
notmuch-hello presents a customizable set of saved searches. Saved
|
|
|
|
|
searches can also be accessed from anywhere in notmuch by pressing
|
|
|
|
|
``j`` to access :ref:`notmuch-jump`.
|
|
|
|
|
|
|
|
|
|
The saved searches default to various common searches such as
|
|
|
|
|
``tag:inbox`` to access the inbox and ``tag:unread`` to access all
|
|
|
|
|
unread mail, but there are several options for customization:
|
2014-01-28 17:12:37 +01:00
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-saved-searches
|
|
|
|
|
|
2014-10-03 16:27:26 +02:00
|
|
|
|
The list of saved searches, including names, queries, and
|
|
|
|
|
additional per-query options.
|
2014-01-28 17:12:37 +01:00
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-saved-search-sort-function
|
|
|
|
|
|
2014-01-28 17:12:37 +01:00
|
|
|
|
This variable controls how saved searches should be sorted. A value
|
|
|
|
|
of ``nil`` displays the saved searches in the order they are stored
|
|
|
|
|
in ‘notmuch-saved-searches’.
|
|
|
|
|
|
|
|
|
|
Search Box
|
|
|
|
|
----------
|
|
|
|
|
|
2014-04-03 22:53:03 +02:00
|
|
|
|
The search box lets the user enter a Notmuch query. See section
|
|
|
|
|
“Description” in Notmuch Query Syntax, for more info on Notmuch query
|
2014-01-28 17:12:37 +01:00
|
|
|
|
syntax. A history of recent searches is also displayed by default. The
|
2022-07-01 12:40:39 +02:00
|
|
|
|
latter is controlled by the variable `notmuch-hello-recent-searches-max`.
|
|
|
|
|
|
|
|
|
|
.. emacsvar:: notmuch-hello-recent-searches-max
|
|
|
|
|
|
|
|
|
|
|docstring::notmuch-hello-recent-searches-max|
|
2014-01-28 17:12:37 +01:00
|
|
|
|
|
|
|
|
|
Known Tags
|
|
|
|
|
----------
|
|
|
|
|
|
|
|
|
|
One special kind of saved search provided by default is for each
|
|
|
|
|
individual tag defined in the database. This can be controlled via the
|
|
|
|
|
following variables.
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-hello-tag-list-make-query
|
|
|
|
|
|
2014-01-28 17:12:37 +01:00
|
|
|
|
Control how to construct a search (“virtual folder”) from a given
|
|
|
|
|
tag.
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-hello-hide-tags
|
2014-01-28 17:12:37 +01:00
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
Which tags not to display at all.
|
2014-01-28 17:12:37 +01:00
|
|
|
|
|
|
|
|
|
.. _notmuch-search:
|
|
|
|
|
|
|
|
|
|
notmuch-search
|
|
|
|
|
==============
|
|
|
|
|
|
|
|
|
|
``notmuch-search-mode`` is used to display the results from executing
|
|
|
|
|
a query via ``notmuch-search``. The syntax for these queries is the
|
|
|
|
|
the same as :ref:`saved-searches`. For details of this syntax see
|
|
|
|
|
info:notmuch-search-terms
|
|
|
|
|
|
|
|
|
|
By default the output approximates that of the command line See section
|
|
|
|
|
“Description” in notmuch search command.
|
|
|
|
|
|
|
|
|
|
The main purpose of the ``notmuch-search-mode`` buffer is to act as a
|
|
|
|
|
menu of results that the user can explore further by pressing
|
|
|
|
|
``<return>`` on the appropriate line.
|
|
|
|
|
|
|
|
|
|
``n,C-n,<down>``
|
|
|
|
|
Move to next line
|
|
|
|
|
|
|
|
|
|
``p,C-p,<up>``
|
|
|
|
|
Move to previous line
|
|
|
|
|
|
|
|
|
|
``<return>``
|
|
|
|
|
Open thread on current line in :ref:`notmuch-show` mode
|
|
|
|
|
|
2019-03-23 13:51:03 +01:00
|
|
|
|
``g`` ``=``
|
2019-02-16 21:27:30 +01:00
|
|
|
|
Refresh the buffer
|
|
|
|
|
|
2014-01-28 17:12:37 +01:00
|
|
|
|
``?``
|
|
|
|
|
Display full set of key bindings
|
|
|
|
|
|
|
|
|
|
The presentation of results can be controlled by the following
|
|
|
|
|
variables.
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-search-result-format
|
|
|
|
|
|
2022-07-16 23:22:24 +02:00
|
|
|
|
|docstring::notmuch-search-result-format|
|
|
|
|
|
|
|
|
|
|
If the car of an element in notmuch-search-result-format is a
|
|
|
|
|
function, insert the result of calling the function into the buffer.
|
|
|
|
|
|
|
|
|
|
This allows a user to generate custom fields in the output of a
|
|
|
|
|
search result. For example, with the following settings, the first
|
|
|
|
|
few characters on each line of the search result are used to show
|
|
|
|
|
information about some significant tags associated with the thread.
|
|
|
|
|
|
|
|
|
|
.. code:: lisp
|
|
|
|
|
|
|
|
|
|
(defun -notmuch-result-flags (format-string result)
|
|
|
|
|
(let ((tags-to-letters '(("flagged" . "!")
|
|
|
|
|
("unread" . "u")
|
|
|
|
|
("mine" . "m")
|
|
|
|
|
("sent" . "s")
|
|
|
|
|
("replied" . "r")))
|
|
|
|
|
(tags (plist-get result :tags)))
|
|
|
|
|
(format format-string
|
|
|
|
|
(mapconcat (lambda (t2l)
|
|
|
|
|
(if (member (car t2l) tags)
|
|
|
|
|
(cdr t2l)
|
|
|
|
|
" "))
|
|
|
|
|
tags-to-letters ""))))
|
|
|
|
|
|
|
|
|
|
(setq notmuch-search-result-format '((-notmuch-result-flags . "%s ")
|
|
|
|
|
("date" . "%12s ")
|
|
|
|
|
("count" . "%9s ")
|
|
|
|
|
("authors" . "%-30s ")
|
|
|
|
|
("subject" . "%s ")
|
|
|
|
|
("tags" . "(%s)")))
|
2014-01-28 17:12:37 +01:00
|
|
|
|
|
2022-07-16 23:22:28 +02:00
|
|
|
|
See also :emacsvar:`notmuch-tree-result-format` and
|
|
|
|
|
:emacsvar:`notmuch-unthreaded-result-format`.
|
2022-07-16 23:22:26 +02:00
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-search-oldest-first
|
|
|
|
|
|
2014-01-28 17:12:37 +01:00
|
|
|
|
Display the oldest threads at the top of the buffer
|
|
|
|
|
|
2022-01-23 20:54:17 +01:00
|
|
|
|
It is also possible to customize how the name of buffers containing
|
|
|
|
|
search results is formatted using the following variables:
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-search-buffer-name-format
|
|
|
|
|
|
2022-01-23 20:54:17 +01:00
|
|
|
|
|docstring::notmuch-search-buffer-name-format|
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-saved-search-buffer-name-format
|
|
|
|
|
|
2022-01-23 20:54:17 +01:00
|
|
|
|
|docstring::notmuch-saved-search-buffer-name-format|
|
|
|
|
|
|
|
|
|
|
|
2014-01-28 17:12:37 +01:00
|
|
|
|
.. _notmuch-show:
|
|
|
|
|
|
|
|
|
|
notmuch-show
|
|
|
|
|
============
|
|
|
|
|
|
2018-05-21 22:08:54 +02:00
|
|
|
|
``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).
|
|
|
|
|
|
2018-06-14 02:32:41 +02:00
|
|
|
|
``c``
|
|
|
|
|
:ref:`show-copy`
|
|
|
|
|
|
2018-05-21 22:08:54 +02:00
|
|
|
|
``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.
|
|
|
|
|
|
2022-05-12 12:47:52 +02:00
|
|
|
|
``!``
|
|
|
|
|
|docstring::notmuch-show-toggle-elide-non-matching|
|
|
|
|
|
|
2018-05-21 22:08:54 +02:00
|
|
|
|
``?``
|
|
|
|
|
Display full set of key bindings
|
|
|
|
|
|
2022-06-28 03:02:05 +02:00
|
|
|
|
Display of messages can be controlled by the following variables; see also :ref:`show-large`.
|
2018-06-14 02:32:42 +02:00
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-message-headers
|
|
|
|
|
|
2018-06-14 02:32:42 +02:00
|
|
|
|
|docstring::notmuch-message-headers|
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-message-headers-visible
|
|
|
|
|
|
2018-06-14 02:32:42 +02:00
|
|
|
|
|docstring::notmuch-message-headers-visible|
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-show-header-line
|
|
|
|
|
|
2022-01-10 04:05:23 +01:00
|
|
|
|
|docstring::notmuch-show-header-line|
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-multipart/alternative-discouraged
|
2022-05-14 13:26:38 +02:00
|
|
|
|
|
|
|
|
|
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")))))
|
|
|
|
|
|
2022-06-28 03:02:05 +02:00
|
|
|
|
.. _show-large:
|
|
|
|
|
|
|
|
|
|
Dealing with large messages and threads
|
|
|
|
|
---------------------------------------
|
|
|
|
|
|
|
|
|
|
If you are finding :ref:`notmuch-show` is annoyingly slow displaying
|
|
|
|
|
large messages, you can customize
|
2022-07-01 12:40:39 +02:00
|
|
|
|
:emacsvar:`notmuch-show-max-text-part-size`. If you want to speed up the
|
2022-06-28 03:02:05 +02:00
|
|
|
|
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
|
2022-07-01 12:40:39 +02:00
|
|
|
|
variables :emacsvar:`notmuch-show-depth-limit`,
|
|
|
|
|
:emacsvar:`notmuch-show-height-limit` and
|
|
|
|
|
:emacsvar:`notmuch-show-max-text-part-size` to limit the amount of
|
2022-06-28 03:02:05 +02:00
|
|
|
|
rendering done initially. Note that these limits are implicitly
|
|
|
|
|
*OR*-ed together, and combinations might have surprising effects.
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-show-depth-limit
|
|
|
|
|
|
2022-06-28 03:02:05 +02:00
|
|
|
|
|docstring::notmuch-show-depth-limit|
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-show-height-limit
|
|
|
|
|
|
2022-06-28 03:02:05 +02:00
|
|
|
|
|docstring::notmuch-show-height-limit|
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-show-max-text-part-size
|
|
|
|
|
|
2022-06-28 03:02:05 +02:00
|
|
|
|
|docstring::notmuch-show-max-text-part-size|
|
|
|
|
|
|
2018-06-14 02:32:41 +02:00
|
|
|
|
.. _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
|
|
|
|
|
|
2022-07-31 01:45:51 +02:00
|
|
|
|
.. _emacs-show-duplicates:
|
|
|
|
|
|
|
|
|
|
Dealing with duplicates
|
|
|
|
|
-----------------------
|
|
|
|
|
|
|
|
|
|
If there are 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
|
|
|
|
|
|
|
|
|
|
To display a different message file with the same
|
|
|
|
|
:mailheader:`Message-ID`, the user can run the command
|
|
|
|
|
:emacscmd:`notmuch-show-choose-duplicate`, by default bound to `%`.
|
|
|
|
|
|
|
|
|
|
.. emacscmd:: notmuch-show-choose-duplicate
|
|
|
|
|
|
|
|
|
|
|docstring::notmuch-show-choose-duplicate|
|
|
|
|
|
|
2018-05-21 22:08:55 +02:00
|
|
|
|
.. _notmuch-tree:
|
|
|
|
|
|
2014-01-28 17:12:37 +01:00
|
|
|
|
notmuch-tree
|
|
|
|
|
============
|
|
|
|
|
|
2018-05-21 22:08:55 +02:00
|
|
|
|
``notmuch-tree-mode`` displays the results of a "notmuch tree" of your
|
|
|
|
|
email archives. Each line in the buffer represents a single
|
|
|
|
|
message giving the relative date, the author, subject, and any
|
|
|
|
|
tags.
|
|
|
|
|
|
2018-06-14 02:32:41 +02:00
|
|
|
|
``c``
|
|
|
|
|
:ref:`show-copy`
|
|
|
|
|
|
2018-05-21 22:08:55 +02:00
|
|
|
|
``<return>``
|
|
|
|
|
Displays that message.
|
|
|
|
|
|
|
|
|
|
``N``
|
|
|
|
|
Move to next message
|
|
|
|
|
|
|
|
|
|
``P``
|
|
|
|
|
Move to previous message
|
|
|
|
|
|
|
|
|
|
``n``
|
|
|
|
|
Move to next matching message
|
|
|
|
|
|
|
|
|
|
``p``
|
|
|
|
|
Move to previous matching message
|
|
|
|
|
|
2021-07-02 22:44:24 +02:00
|
|
|
|
``o`` ``notmuch-tree-toggle-order``
|
|
|
|
|
|docstring::notmuch-tree-toggle-order|
|
|
|
|
|
|
2021-08-22 02:50:48 +02:00
|
|
|
|
``l`` ``notmuch-tree-filter``
|
|
|
|
|
Filter or LIMIT the current search results based on an additional query string
|
|
|
|
|
|
2021-08-22 02:50:49 +02:00
|
|
|
|
``t`` ``notmuch-tree-filter-by-tag``
|
|
|
|
|
Filter the current search results based on an additional tag
|
|
|
|
|
|
|
|
|
|
|
2019-03-23 13:51:03 +01:00
|
|
|
|
``g`` ``=``
|
2019-02-16 21:27:30 +01:00
|
|
|
|
Refresh the buffer
|
|
|
|
|
|
2018-05-21 22:08:55 +02:00
|
|
|
|
``?``
|
|
|
|
|
Display full set of key bindings
|
|
|
|
|
|
2021-07-02 22:44:24 +02:00
|
|
|
|
As is the case with :ref:`notmuch-search`, the presentation of results
|
|
|
|
|
can be controlled by the variable ``notmuch-search-oldest-first``.
|
|
|
|
|
|
2022-07-16 23:22:26 +02:00
|
|
|
|
.. emacsvar:: notmuch-tree-result-format
|
|
|
|
|
|
|
|
|
|
|docstring::notmuch-tree-result-format|
|
|
|
|
|
|
|
|
|
|
The following example shows how to optionally display recipients instead
|
|
|
|
|
of authors for sent mail (assuming the user is named Mustermann).
|
|
|
|
|
|
|
|
|
|
.. code:: lisp
|
|
|
|
|
|
|
|
|
|
(defun -notmuch-authors-or-to (format-string result)
|
|
|
|
|
(let* ((headers (plist-get result :headers))
|
|
|
|
|
(to (plist-get headers :To))
|
|
|
|
|
(author (plist-get headers :From))
|
|
|
|
|
(face (if (plist-get result :match)
|
|
|
|
|
'notmuch-tree-match-author-face
|
|
|
|
|
'notmuch-tree-no-match-author-face)))
|
|
|
|
|
(propertize
|
|
|
|
|
(format format-string
|
|
|
|
|
(if (string-match "Mustermann" author)
|
|
|
|
|
(concat "To:" (notmuch-tree-clean-address to))
|
|
|
|
|
author))
|
|
|
|
|
'face face)))
|
|
|
|
|
|
|
|
|
|
(setq notmuch-tree-result-format
|
|
|
|
|
'(("date" . "%12s ")
|
|
|
|
|
(-notmuch-authors-or-to . "%-20.20s")
|
|
|
|
|
((("tree" . "%s")
|
|
|
|
|
("subject" . "%s"))
|
|
|
|
|
. " %-54s ")
|
|
|
|
|
("tags" . "(%s)")))
|
|
|
|
|
|
2022-07-16 23:22:28 +02:00
|
|
|
|
See also :emacsvar:`notmuch-search-result-format` and
|
|
|
|
|
:emacsvar:`notmuch-unthreaded-result-format`.
|
|
|
|
|
|
2022-07-16 23:22:26 +02:00
|
|
|
|
|
2022-02-12 21:27:32 +01:00
|
|
|
|
.. _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`.
|
2021-07-02 22:44:24 +02:00
|
|
|
|
|
2022-07-16 23:22:28 +02:00
|
|
|
|
.. emacsvar:: notmuch-unthreaded-result-format
|
|
|
|
|
|
|
|
|
|
|docstring::notmuch-unthreaded-result-format|
|
|
|
|
|
|
|
|
|
|
See also :emacsvar:`notmuch-search-result-format` and
|
|
|
|
|
:emacsvar:`notmuch-tree-result-format`.
|
|
|
|
|
|
2014-10-03 16:27:26 +02:00
|
|
|
|
Global key bindings
|
|
|
|
|
===================
|
|
|
|
|
|
2022-02-12 21:27:32 +01:00
|
|
|
|
Several features are accessible from most places in notmuch through the
|
2014-10-03 16:27:26 +02:00
|
|
|
|
following key bindings:
|
|
|
|
|
|
|
|
|
|
``j``
|
|
|
|
|
Jump to saved searches using :ref:`notmuch-jump`.
|
|
|
|
|
|
2018-05-21 22:08:56 +02:00
|
|
|
|
``k``
|
|
|
|
|
Tagging operations using :ref:`notmuch-tag-jump`
|
|
|
|
|
|
2022-02-12 21:27:41 +01:00
|
|
|
|
``C-_`` ``C-/`` ``C-x u``: Undo previous tagging operation using :ref:`notmuch-tag-undo`
|
|
|
|
|
|
2016-11-05 21:18:15 +01:00
|
|
|
|
.. _notmuch-jump:
|
|
|
|
|
|
2014-10-03 16:27:26 +02:00
|
|
|
|
notmuch-jump
|
|
|
|
|
------------
|
|
|
|
|
|
2016-11-05 21:18:15 +01:00
|
|
|
|
Saved searches configured through :ref:`saved-searches` can
|
2014-10-03 16:27:26 +02:00
|
|
|
|
include a "shortcut key" that's accessible through notmuch-jump.
|
|
|
|
|
Pressing ``j`` anywhere in notmuch followed by the configured shortcut
|
|
|
|
|
key of a saved search will immediately jump to that saved search. For
|
|
|
|
|
example, in the default configuration ``j i`` jumps immediately to the
|
|
|
|
|
inbox search. When you press ``j``, notmuch-jump shows the saved
|
|
|
|
|
searches and their shortcut keys in the mini-buffer.
|
|
|
|
|
|
2018-05-21 22:08:56 +02:00
|
|
|
|
.. _notmuch-tag-jump:
|
|
|
|
|
|
|
|
|
|
notmuch-tag-jump
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
Tagging operations configured through ``notmuch-tagging-keys`` can
|
|
|
|
|
be accessed via :kbd:`k` in :ref:`notmuch-show`,
|
|
|
|
|
:ref:`notmuch-search` and :ref:`notmuch-tree`. With a
|
|
|
|
|
prefix (:kbd:`C-u k`), notmuch displays a menu of the reverses of the
|
|
|
|
|
operations specified in ``notmuch-tagging-keys``; i.e. each
|
|
|
|
|
``+tag`` is replaced by ``-tag`` and vice versa.
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-tagging-keys
|
2018-05-21 22:08:56 +02:00
|
|
|
|
|
2018-06-14 02:32:43 +02:00
|
|
|
|
|docstring::notmuch-tagging-keys|
|
2018-05-21 22:08:56 +02:00
|
|
|
|
|
2022-02-12 21:27:39 +01:00
|
|
|
|
.. _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
|
2022-07-01 12:40:39 +02:00
|
|
|
|
operations. These can be undone via :emacscmd:`notmuch-tag-undo`. By default
|
2022-02-12 21:27:39 +01:00
|
|
|
|
this is bound to the usual Emacs keys for undo.
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacscmd:: notmuch-tag-undo
|
2022-02-12 21:27:39 +01:00
|
|
|
|
|
|
|
|
|
|docstring::notmuch-tag-undo|
|
|
|
|
|
|
2018-06-14 02:32:45 +02:00
|
|
|
|
Buffer navigation
|
|
|
|
|
=================
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacscmd:: notmuch-cycle-notmuch-buffers
|
|
|
|
|
|
2018-06-14 02:32:45 +02:00
|
|
|
|
|docstring::notmuch-cycle-notmuch-buffers|
|
|
|
|
|
|
2014-01-28 17:12:37 +01:00
|
|
|
|
Configuration
|
|
|
|
|
=============
|
|
|
|
|
|
|
|
|
|
.. _importing:
|
|
|
|
|
|
|
|
|
|
Importing Mail
|
|
|
|
|
--------------
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacscmd:: notmuch-poll
|
|
|
|
|
|
2018-06-14 02:32:44 +02:00
|
|
|
|
|docstring::notmuch-poll|
|
2014-01-28 17:12:37 +01:00
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: notmuch-poll-script
|
|
|
|
|
|
2018-06-14 02:32:44 +02:00
|
|
|
|
|docstring::notmuch-poll-script|
|
2014-04-03 22:53:03 +02:00
|
|
|
|
|
2021-06-05 01:05:31 +02:00
|
|
|
|
Sending Mail
|
|
|
|
|
------------
|
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: mail-user-agent
|
2021-06-05 01:05:31 +02:00
|
|
|
|
|
2021-08-22 05:51:09 +02:00
|
|
|
|
Emacs consults the variable :code:`mail-user-agent` to choose a mail
|
|
|
|
|
sending package for commands like :code:`report-emacs-bug` and
|
|
|
|
|
:code:`compose-mail`. To use ``notmuch`` for this, customize this
|
|
|
|
|
variable to the symbol :code:`notmuch-user-agent`.
|
2021-06-05 01:05:31 +02:00
|
|
|
|
|
2022-07-01 12:40:39 +02:00
|
|
|
|
.. emacsvar:: message-dont-reply-to-names
|
2022-06-09 04:11:45 +02:00
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
2014-04-03 22:53:03 +02:00
|
|
|
|
Init File
|
|
|
|
|
---------
|
|
|
|
|
|
|
|
|
|
When Notmuch is loaded, it will read the ``notmuch-init-file``
|
|
|
|
|
(``~/.emacs.d/notmuch-config`` by default) file. This is normal Emacs Lisp
|
|
|
|
|
file and can be used to avoid cluttering your ``~/.emacs`` with Notmuch
|
|
|
|
|
stuff. If the file with ``.elc``, ``.elc.gz``, ``.el`` or ``.el.gz``
|
|
|
|
|
suffix exist it will be read instead (just one of these, chosen in this
|
|
|
|
|
order). Most often users create ``~/.emacs.d/notmuch-config.el`` and just
|
|
|
|
|
work with it. If Emacs was invoked with the ``-q`` or ``--no-init-file``
|
|
|
|
|
options, ``notmuch-init-file`` is not read.
|