[[!toc levels=2]]
-## Issues with Emacs 24 (unsupported since notmuch 0.31 (2020-09-05))
-
-If notmuch-show-mode behaves badly for you in emacs 24.x try adding one of
-
- (setq gnus-inhibit-images nil)
-
-or
-
- (require 'gnus-art)
-
-to your .emacs file.
-
## Controlling external handlers for attachments
You can choose e.g. which pdf viewer to invoke from notmuch-show mode by
`notmuch-fcc-dirs` in the customization window for how to arrange
this.
+The `notmuch-fcc-dirs` variable is only taken into account when mails
+are composed using `notmuch-mua-mail`. If you want to use the notmuch
+mail user agent by default, the `mail-user-agent` needs to be
+customized to use the `notmuch-user-agent`.
+
## How to customize `notmuch-saved-searches`
When starting notmuch, a list of saved searches and message counts is
This command will try to view the message part the point is on with an
external viewer. The mime-type of the part will determine what viewer
will be used. Typically a 'text/html' part will be send to your
-browser.
+browser.
The configuration for this is kept in so called `mailcap`
files. (typically the file is `~/.mailcap` or `/etc/mailcap`) If the
chance something needs to be adapted in the mailcap configuration.
For Example: The `copiousoutput` setting in mailcap files needs to be
-removed for some mime-types to prevent immediate removal of tempory
+removed for some mime-types to prevent immediate removal of temporary
files so the configured viewer can access them.
## Multiple identities (and more) with message-templ
Another option for multiple identities is
-[message-templ](http://pivot.cs.unb.ca/git?p=message-templ.git;a=summary)
+[message-templ](http://git.tethera.net/message-templ.git)
(also a available in marmalade). This provides roughly the same
facilities as wanderlust's template facility.
See
-[example.emacs.el](http://pivot.cs.unb.ca/git?p=message-templ.git;a=blob;f=example.emacs.el;hb=HEAD)
+[example.emacs.el](https://git.tethera.net/message-templ.git/tree/example.emacs.el)
for some simple examples of usage.
## Resending (or bouncing) messages
(add-hook 'notmuch-show-markup-headers-hook 'notmuch-show-subject-tabs-to-spaces)
-And in header lines (this will only work with the yet to be released
-notmuch version 0.15):
+And in header lines:
(defun notmuch-show-header-tabs-to-spaces ()
"Replace tabs with spaces in header line."
(loop for p in load-path
do (if (file-accessible-directory-p p)
- (let ((m (directory-files-recursively p "^org-notmuch.el$")))
+ (let ((m (directory-files-recursively p "^ol-notmuch.el$")))
(if m (add-to-list 'load-path (file-name-directory (car m)))))))
Then
- (require 'org-notmuch)
+ (require 'ol-notmuch)
In general it is nice to have a key for org-links (not just for notmuch). For example
- (define-key global-map "\C-cl" 'org-store-link)
+ (define-key global-map "\C-c l" 'org-store-link)
+
+If you're using `use-package` the package can be loaded using the following:
+
+```emacs-lisp
+(use-package ol-notmuch
+ :ensure t
+ :bind
+ ("C-c l" . org-store-link))
+```
Note the package was renamed from `org-notmuch` to `ol-notmuch` in recent
-versions of org-mode, and you might want to `(require 'ol-notmuch)` instead.
+versions of org-mode. If you're using an old version of notmuch you might want
+to `(require 'org-notmuch)` instead.
## Viewing diffs in notmuch
that's supposed to have an attachment. Did this never happen to you?
If not, then it will.
-There is a hook out there that checks the content of the email for
-keywords and warns you before the email is sent out if there's no
-attachment. This is currently work in progress, but you can already
-add the hook to your `~/.emacs.d/notmuch-config.el` file to test
-it. Details available (and feedback welcome) in the [relevant
-discussion](https://notmuchmail.org/pipermail/notmuch/2018/026414.html).
+Since version 0.29 Notmuch includes the `notmuch-mua-attachment-check`
+function. This function checks whether a message references an
+attachment and if it finds none it asks for confirmation before
+sending the message. The function is meant to be added to the
+`message-send-hook`, like so:
+
+ (add-hook 'message-send-hook 'notmuch-mua-attachment-check)
+
+The "customize"able variable `notmuch-mua-attachment-regexp` controls
+how reference to an attachment are identified. By default, it
+identifies English and French terms. For example, the following makes
+it recognise English and Portuguese terms:
+
+ (setq-default notmuch-mua-attachment-regexp
+ "\\b\\(attach\\|attachment\\|attached\\|anexo\\|anexado\\)\\b")
+
+
+## Avoid forgetting the subject
+
+It happens that we forget to enter the Subject line, particularly when
+we leave that to the end. It's easy to write a function that checks
+whether the Subject is empty, and add it to `message-send-hook` to get
+confirmation:
+
+ (defun my-notmuch-mua-empty-subject-check ()
+ "Request confirmation before sending a message with empty subject"
+ (when (and (null (message-field-value "Subject"))
+ (not (y-or-n-p "Subject is empty, send anyway? ")))
+ (error "Sending message cancelled: empty subject.")))
+ (add-hook 'message-send-hook 'my-notmuch-mua-empty-subject-check)
+
## Applying patches to git repositories
The `notmuch-extract-thread-patches` and
`notmuch-extract-message-patches` commands from the `elpa-mailscripts`
package in Debian (and its derivatives) can do this for you.
+
+## Allow content preference based on message context
+
+The preference for which sub-part of a multipart/alternative part is shown is
+globally set. For example, if you prefer showing the html version over the text
+based, you can set:
+
+ (setq notmuch-multipart/alternative-discouraged '("text/plain" "text/html"))
+
+However, sometimes you might want to adapt your preference depending on the
+context. You can override the default settings on a per-message basis by
+providing a function that has access to the message and which returns the
+discouraged type list. For example:
+
+ (defun my/determine-discouraged (msg)
+ (let* ((headers (plist-get msg :headers))
+ (from (or (plist-get headers :From) "")))
+ (cond
+ ((string-match "whatever@mail.address.com" from)
+ '("text/plain"))
+ (t
+ '("text/html" "multipart/related")))))
+
+ (setq notmuch-multipart/alternative-discouraged
+ 'my/determine-discouraged)
+
+This would discourage text/html and multipart/related generally, but discourage
+text/plain should the message be sent from whatever@mail.address.com.
+
+## See the recipient address instead of your address when listing sent messages
+
+If you like to see your sent messages in unthreaded view, by default you will
+see your address in the authors column, which is maybe not what you want. The
+following code allows for showing the recipients if your email address (an
+arbitrary address, whatever@mail.address.com in the example) is included in the
+From field.
+
+ (defun my/notmuch-unthreaded-show-recipient-if-sent (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 "whatever@mail.address.com" author)
+ (concat "↦ " (notmuch-tree-clean-address to))
+ (notmuch-tree-clean-address to)
+ author))
+ 'face face)))
+
+ (setq notmuch-unthreaded-result-format
+ '(("date" . "%12s ")
+ (my/notmuch-unthreaded-show-recipient-if-sent . "%-20.20s")
+ ((("subject" . "%s"))
+ . " %-54s ")
+ ("tags" . "(%s)")))
+
+## Issues with Emacs 24 (unsupported since notmuch 0.31 (2020-09-05))
+
+If notmuch-show-mode behaves badly for you in emacs 24.x try adding one of
+
+ (setq gnus-inhibit-images nil)
+
+or
+
+ (require 'gnus-art)
+
+to your .emacs file.