X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=emacstips.mdwn;h=f20b325208683388132fe4f60ba8e6e52fffef07;hb=HEAD;hp=3f217febaee30b195ef930479e01e452be4112d3;hpb=4d8eabd655775484081a3f270f53f6b94b34404b;p=notmuch-wiki
diff --git a/emacstips.mdwn b/emacstips.mdwn
index 3f217fe..288690c 100644
--- a/emacstips.mdwn
+++ b/emacstips.mdwn
@@ -1,115 +1,12 @@
[[!img notmuch-logo.png alt="Notmuch logo" class="left"]]
-# Tips and Tricks for using notmuch with Emacs
+# Tips and Tricks for using Notmuch with Emacs
-One of the more popular notmuch message reading clients is
-**notmuch.el**, an [emacs](http://www.gnu.org/software/emacs/) major
-mode for interacting with notmuch. It is included in the notmuch
-package (notmuch-emacs in Debian). This page goes over some usage
-tips for using notmuch with Emacs.
+Here are some tips and tricks for using Notmuch with Emacs. See the [[Notmuch
+Emacs Interface|notmuch-emacs]] page for basics.
[[!toc levels=2]]
-## Setup
-
-Have a look at the [Howto](http://notmuchmail.org/howto/) for
-prerequisites. Be sure you have done the general setup using the
-notmuch cli command!
-
-To use the Notmuch emacs mode, first add the following line to your
-`.emacs` rc file:
-
- (autoload 'notmuch "notmuch" "notmuch mail" t)
-
-or if you always want to load notmuch when you start emacs:
-
- (require 'notmuch)
-
-Then, either run "emacs -f notmuch", or execute the command `M-x
-notmuch` from within a running emacs.
-
-### Notmuch Emacs configuration file:
-
-(Since Notmuch 0.18)
-
-After notmuch is loaded `notmuch-init-file` (typically
- `~/.emacs.d/notmuch-config.el`) is checked out. If such file exists
-it is loaded. Most emacs lisp based configuration not suitable via
-customization can be put there instead of `~/.emacs`.
-
-## Navigating & reading mails
-
-When first starting notmuch in emacs, you will be presented with the
-notmuch "hello" page. If it exits with an error after writing
-"Welcome to notmutch. You have" you need to do the basic notmuch setup
-first (see above).
-From here you can do searches, see lists of recent
-searches, saved searches, message tags, help information, etc.
-
-Executing a search will open a new buffer in `notmuch-search-mode`
-displaying the search results. Each line in the search results
-represents a message thread. Hitting the '?' key will show help for
-this mode.
-
-In general, the 'q' will kill the current notmuch buffer and return
-you to the previous buffer (sort of like a 'pop').
-
-In search mode, navigating to a thread and hitting return will then
-open a new buffer in `notmuch-show-mode`, which will show the actual
-message contents of the thread.
-
-## Sending mail
-
-In any notmuch mode, you can start a new message by hitting the 'm'
-key. To reply to a message or thread, just hit the 'r' key.
-
-When composing new messages, you will be entered in emacs's
-`message-mode`, which is a powerful mode for composing and sending
-messages. When in message mode, you can type `C-c ?` for help.
-
-If you would like to use address autocompletion when composing
-messages, see [address completion](#address_completion).
-
-When you are ready to send a message, type `C-c C-c`. By default
-message mode will use your sendmail command to send mail, so make sure
-that works. One annoying standard configuration of message mode is
-that it will hide the sent mail in your emacs frame stack, but it will
-not close it. If you type several mails in an emacs session they will
-accumulate and make switching between buffers more annoying. You can
-avoid that behavior by adding `(setq message-kill-buffer-on-exit t)`
-in your `.emacs` file
-(or doing `M-x customize-variablemessage-kill-buffer-on-exit`)
-which will really close the mail window after sending it.
-
-## Attaching files
-
-Using the `M-x mml-attach-file` command, you can attach any file to be
-sent with your mail. By default this command is bound to the menu item
-*Attachments--Attach File* with the key binding `C-c C-a`. The
-variable `mml-dnd-attach-options` (`M-x
-customize-variablemml-dnd-attach-options`) can be set to
-allow the prompting for various attachment options (such as
-inline/attachment) if you want to do that.
-
-For those who prefer a more graphical interface, you can also simply
-drag and drop files from a file manager into a mail composition window
-to have them attached. In Ubuntu this works without any modifications
-if files are dragged from the file manager.
-
-And for those who prefer working from command line, the following
-script opens new emacs window with empty message and attaches files
-mentioned as script arguments. (Note: The script expects that you have
-`(server-start)` in your `.emacs` file.)
-
- #!/bin/sh
- attach_cmds=""
- while [ $# -gt 0 ]; do
- fullpath=$(readlink --canonicalize "$1")
- attach_cmds="$attach_cmds (mml-attach-file \"$fullpath\")"
- shift
- done
- emacsclient -a '' -c -e "(progn (compose-mail) $attach_cmds)"
-
-## Controlling external handlers for attachements
+## Controlling external handlers for attachments
You can choose e.g. which pdf viewer to invoke from notmuch-show mode by
adding a .mailcap file in your home directory. Here is an example:
@@ -117,21 +14,62 @@ adding a .mailcap file in your home directory. Here is an example:
application/pdf; /usr/bin/mupdf %s; test=test "$DISPLAY" != ""; description=Portable Document Format; nametemplate=%s.pdf
application/x-pdf; /usr/bin/mupdf %s; test=test "$DISPLAY" != ""; description=Portable Document Format; nametemplate=%s.pdf
-## Issues with Emacs 24
-
-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.
-
------
-
-# Advanced tips and tweaks
+### Convert ".pdf" and ".docx" to text and pop to buffer
+
+Add the following (hacky but effective!) code to `.emacs.d/notmuch-config.el`;
+the overwritten `defcustom` will change action when pressing RET on top of an
+attachment; ".pdf" and ".docx" attachments are converted to text (using
+"pdf2text" and "docx2txt.pl" commands to do the conversion), saving to file
+(the default action of `notmuch-show-part-button-default-action`) is offered
+to attachments of other types.
+
+ (defun user/mm-pipe-- (handle cmd)
+ ;; conveniently, '-' '-' a args to pdftotext and docx2txt.pl work fine
+ ;; fixme: naming inconsistency (fn name and buffer name)
+ (let ((buffer (get-buffer-create "*attachment-to-text*")))
+ (with-current-buffer buffer
+ (setq buffer-read-only nil)
+ (erase-buffer))
+ (with-temp-buffer
+ ;; "based on mm-pipe-part in mm-decode.el"
+ (mm-with-unibyte-buffer
+ (mm-insert-part handle)
+ (mm-add-meta-html-tag handle)
+ (let ((coding-system-for-write 'binary))
+ (call-process-region (point-min) (point-max)
+ cmd nil buffer nil "-" "-"))))
+ (pop-to-buffer buffer)
+ (goto-char (point-min))
+ (text-mode)
+ (visual-line-mode)
+ (view-mode)))
+
+ (defun user/notmuch-show-pop-attachment-to-buffer ()
+ ;; "based on notmuch-show-apply-to-current-part-handle"
+ (interactive)
+ (let ((handle (notmuch-show-current-part-handle)))
+ ;;(message "%s" handle)
+ (unwind-protect
+ (pcase (car (nth 1 handle))
+ ("application/pdf"
+ (user/mm-pipe-- handle "pdftotext"))
+ ("application/vnd.openxmlformats-officedocument.wordprocessingml.document"
+ (user/mm-pipe-- handle "docx2txt.pl"))
+ (_ (notmuch-show-save-part)))
+ (kill-buffer (mm-handle-buffer handle)))))
+
+ (setq notmuch-show-part-button-default-action
+ #'user/notmuch-show-pop-attachment-to-buffer)
+
+## Overwriting the sender address
+
+If you want to always use the same sender address, then the following
+defadvice can help you.
+
+ (defadvice notmuch-mua-reply (around notmuch-fix-sender)
+ (let ((sender "Max Monster "))
+ ad-do-it))
+ (ad-activate 'notmuch-mua-reply)
## Initial cursor position in notmuch 0.15 hello window
@@ -191,7 +129,7 @@ above. To get this behaviour on 0.17+ do the following:
(define-key notmuch-search-mode-map "S"
(lambda (&optional beg end)
"mark thread as spam"
- (interactive (notmuch-search-interactive-region))
+ (interactive (notmuch-interactive-region))
(notmuch-search-tag (list "+spam" "-inbox") beg end)))
The analogous functionality in notmuch-tree is currently missing.
@@ -253,11 +191,15 @@ reply-to-all. Here's how to swap the reply to sender/all bindings in show mode:
(define-key notmuch-show-mode-map "r" 'notmuch-show-reply)
(define-key notmuch-show-mode-map "R" 'notmuch-show-reply-sender)
-And in search mode:
+In search mode:
(define-key notmuch-search-mode-map "r" 'notmuch-search-reply-to-thread)
(define-key notmuch-search-mode-map "R" 'notmuch-search-reply-to-thread-sender)
+And in tree mode:
+
+ (define-key notmuch-tree-mode-map "r" (notmuch-tree-close-message-pane-and #'notmuch-show-reply))
+ (define-key notmuch-tree-mode-map "R" (notmuch-tree-close-message-pane-and #'notmuch-show-reply-sender))
## How to do FCC/BCC...
@@ -286,6 +228,11 @@ address. Please see the documentation for the variable
`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
@@ -315,7 +262,7 @@ displaying the count for the saved-search. For example
(setq notmuch-saved-searches '((:name "inbox"
:query "tag:inbox"
:count-query "tag:inbox and tag:unread"
- :sort-order 'oldest-first)))
+ :sort-order oldest-first)))
specifies a single saved search for inbox, but the number displayed by
the search will be the number of unread messages in the inbox, and the
@@ -334,51 +281,28 @@ useful to you.
## Viewing HTML messages with an external viewer
-The emacs client can display an HTML message inline using either the
-`html2text` library or some text browser, like w3m or lynx. This is
-controlled by the `mm-text-html-renderer` variable.
+The Emacs client can generally display HTML messages inline using one of the
+supported HTML renderers. This is controlled by the `mm-text-html-renderer`
+variable.
-The first option is theorically better, because it can generate
-strings formatted for emacs and do whatever you want, e.g., substitute
-text inside <b> tags for bold text in the buffer. The library, however
-is still in a very early development phase and cannot yet process
-properly many elements, like tables and