]> git.cworth.org Git - notmuch-wiki/blobdiff - emacstips.mdwn
COPYING: add CC-BY-SA-3.0 and GPLv3 license texts
[notmuch-wiki] / emacstips.mdwn
index dade16927418fc64d67c5ed6036db5c6bf95a25e..c290192b7d2e8bd1ebd00f0a253a77d8ff8c9b51 100644 (file)
@@ -109,6 +109,14 @@ mentioned as script arguments. (Note: The script expects that you have
         done
         emacsclient -a '' -c -e "(progn (compose-mail) $attach_cmds)"
 
+## Controlling external handlers for attachements
+
+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:
+
+    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
@@ -125,6 +133,16 @@ to your .emacs file.
 
 # Advanced tips and tweaks
 
+## 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 <max.monster@example.com>"))
+           ad-do-it))
+       (ad-activate 'notmuch-mua-reply)
+
 ## Initial cursor position in notmuch 0.15 hello window
 
 In notmuch version 0.15 emacs client the handling of cursor position in
@@ -326,51 +344,13 @@ 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 first option is theorically better, because it can generate
-strings formatted for emacs and do whatever you want, e.g., substitute
-text inside &lt;b&gt; 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 <style> directives, and even
-the generated text is often poorly formatted.
-
-Among the available browsers, w3m seems to do a better job converting
-the html, and if you have the w3m emacs package, you can use it,
-instead of the w3m-standalone, and thus preserve the text formatting.
-
-But if the rendering fails for one reason or another, or if you really
-need to see the graphical presentation of the HTML message, it can be
-useful to display the message in an external viewer, such as a web
-browser. Here's a little script that Keith Packard wrote, which he
-calls `view-html`:
-
-        #!/bin/sh
-        dir=`mktemp -d`
-        trap "rm -r $dir" 0
-        cat "$@" > "$dir"/msg
-        if munpack -C "$dir" -t < "$dir"/msg 2>&1 | grep 'Did not find'; then
-            sed -n '/[Hh][Tt][Mm][Ll]/,$p' "$dir"/msg > $dir/part1.html
-            rm "$dir"/msg
-        fi
-        for i in "$dir"/part*; do
-            if grep -q -i -e '<html>' -e 'text/html' "$i"; then
-                iceweasel "$i" &
-                sleep 3
-                exit 0
-            fi
-        done
-
-Save that script somewhere in your `${PATH}`, make it executable,
-and change the invocation of `iceweasel` to any other HTML viewer if
-necessary. Then within the emacs client, press '|' to pipe the
-current message, then type "view-html".
+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.
 
-Keith mentions the following caveat, "Note that if iceweasel isn't
-already running, it seems to shut down when the script exits. I
-don't know why."
+Sometimes it may be necessary to display the message, or a single MIME part, in
+an external browser. This can be done by `(notmuch-show-view-part)`, bound to
+`. v` by default.
 
 ## msmtp, message mode and multiple accounts
 
@@ -401,13 +381,6 @@ With that in place, you need a `.msmtprc` with the accounts configured
 for the domains you want to send out using specific SMTP servers and
 the rest will go to the default account.
 
-If you have a hard time getting the above to work for you, as I did,
-it's also possible to add a message-send-mail-hook in your .emacs to
-send the from header explicitly as an argument to msmtp as described
-[here](http://www.emacswiki.org/cgi-bin/wiki/GnusMSMTP#toc2) on the
-emacswiki.
-
-
 ## <span id="address_completion">Address completion when composing</span>
 
 There are currently three solutions to this:
@@ -447,7 +420,7 @@ available:
     from notmuch.  It also includes a vim plugin.
 
 You can perform tab-completion using any of these programs.
-Just add the following to your [[notmuch init file|#notmuch_init_file]]:
+Just add the following to your [notmuch init file](#notmuch_init_file):
 
         (require 'notmuch-address)
         (setq notmuch-address-command "/path/to/address_fetching_program")
@@ -478,20 +451,29 @@ Enter the cloned repository and create a build directory:
         cd build
         cmake ..; make;
 
-You will find the akonadimailsearch binary in the build/src directory.
-Create a ~/bin/akonadimailsearch.sh file with the following content and make it executable:
-(Adjust the path for the akonadimailsearch binary.)
-
-        #!/bin/sh
-        akonadimailsearch "$@" 2>/dev/null
+You will find the akonadimailsearch binary in the build/src directory. Copy it to ~/bin .
 
-As described above, you can now add the following settings to your
-[[notmuch init file|#notmuch_init_file]]:
+You can now add the following settings to your
+[notmuch init file](#notmuch_init_file):
 
         (require 'notmuch-address)
-        (setq notmuch-address-command "~/bin/akonadimailsearch.sh")
+        (setq notmuch-address-command "~/bin/akonadimailsearch")
         (notmuch-address-message-insinuate)
 
+### Completion selection with helm
+
+An address query might return multiple possible matches from which you
+will have to select one. To ease this task, several different
+frameworks in emacs support completion selection. One of them is
+[helm](https://github.com/emacs-helm/helm). The following snippet
+improves the out-of-the-box support for helm in notmuch as it enables
+the required-match option and also does not ignore the first returned
+address.
+
+        (setq notmuch-address-selection-function
+          (lambda (prompt collection initial-input)
+            (completing-read prompt (cons initial-input collection) nil t nil 'notmuch-address-history)))
+
 
 ## How to sign/encrypt messages with gpg
 
@@ -521,6 +503,17 @@ part.
   installed, it will shadow the fixed version of easypg included with
   emacs.
 
+## Reading and verifying encrypted and signed messages
+
+Encrypted and signed mime messages can be read and verified with:
+
+        (notmuch-crypto-process-mime t)
+
+Decrypting or verifying inline pgp messages can be done by selecting
+an the inline pgp area and and using:
+
+        M-x epa-decrypt-region RET
+
 ## Multiple identities using gnus-alias
 
 [gnus-alias](http://www.emacswiki.org/emacs/GnusAlias) allows you to
@@ -590,7 +583,7 @@ See also the **Usage:** section in `gnus-alias.el`.
 
 ## Resending (or bouncing) messages
 
-Add the following to your [[notmuch init file|#notmuch_init_file]] to be able
+Add the following to your [notmuch init file](#notmuch_init_file) to be able
 to resend the current message in show mode.
 
         (define-key notmuch-show-mode-map "b"
@@ -602,7 +595,7 @@ to resend the current message in show mode.
 
 ## `notmuch-hello` refresh status message
 
-Add the following to your [[notmuch init file|#notmuch_init_file]] to get a
+Add the following to your [notmuch init file](#notmuch_init_file) to get a
 status message about the change in the number of messages in the mail store
 when refreshing the `notmuch-hello` buffer.
 
@@ -632,7 +625,7 @@ when refreshing the `notmuch-hello` buffer.
 
 Mailman mailing list software rewrites and rewraps long message subjects in
 a way that causes TABs to appear in the middle of the subject and header
-lines. Add this to your [[notmuch init file|#notmuch_init_file]] to replace
+lines. Add this to your [notmuch init file](#notmuch_init_file) to replace
 tabs with spaces in subject lines:
 
         (defun notmuch-show-subject-tabs-to-spaces ()
@@ -713,11 +706,11 @@ but as a contrib file, so you might have to work a bit to load it.
 
 In Debian and derivatives,
 
-       (add-to-list 'load-path "/usr/share/org-mode/lisp")
+    (add-to-list 'load-path "/usr/share/org-mode/lisp")
 
 Then
 
-       (require 'org-notmuch)
+    (require 'org-notmuch)
 
 In general it is nice to have a key for org-links (not just for notmuch). For example