]> git.cworth.org Git - notmuch-wiki/blobdiff - emacstips.mdwn
Tip how to use 'my-notmuch.el'...
[notmuch-wiki] / emacstips.mdwn
index 497f2d88abfdc241fec49db5db04aad76041df41..c384fb61b17161a5b869555188f7088f6a53f3e8 100644 (file)
@@ -1,6 +1,8 @@
 [[!img notmuch-logo.png alt="Notmuch logo" class="left"]]
 #Tips and Tricks for using notmuch with Emacs
 
+[[!toc levels=2]]
+
 The main Notmuch message reading client is **notmuch.el**, which is an
 [emacs](http://www.gnu.org/software/emacs/) major mode, and is
 included in the notmuch package.
@@ -12,6 +14,10 @@ To use the Notmuch emacs mode, first add the following line to your
 
        (require 'notmuch)
 
+or you can load the package via autoload:
+
+       (autoload 'notmuch "notmuch" "notmuch mail" t)
+
 Then, either run "emacs -f notmuch", or execute the command `M-x
 notmuch` from within a running emacs.
 
@@ -45,24 +51,25 @@ 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
+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 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 which will really close the mail window after
-sending it.
+in your `.emacs` file (or doing `M-x
+customize-variable<RET>message-kill-buffer-on-exit<RET>`) 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
-send 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
+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-variable<RET>mml-dnd-attach-options`) can be set to allow
-the prompting for various attachment options (such as
+customize-variable<RET>mml-dnd-attach-options<RET>`) 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
@@ -89,6 +96,40 @@ mentioned as script arguments. (Note: The script expects that you have
 
 # Advanced tips and tweaks
 
+## Use separate emacs lisp file for notmuch configuration
+
+Instead of adding notmuch configuration code to `.emacs`, there
+is an option to collect those to a separate file (which is only
+loaded when `notmuch` is invoked). To do this, write, for example
+a file called `~/.emacs.d/my-notmuch.el`:
+
+         ;; my-notmuch.el -- my notmuch mail configuration
+         ;;
+         
+         ;; add here stuff required to be configured *before*
+         ;; notmuch is loaded;
+
+         ; uncomment and modify in case some elisp files are not found in load-path
+         ; (add-to-list 'load-path "~/vc/ext/notmuch/emacs")
+
+         ;; load notmuch 
+         (require 'notmuch)
+
+         ;; add here stuff required to be configured *after*
+         ;; notmuch is loaded;
+               
+         ;(setq user-mail-address (notmuch-user-primary-email)
+         ;      user-full-name (notmuch-user-name))
+
+         ; uncomment & modify if you want to use external smtp server to send mail
+         ; (setq smtpmail-smtp-server "smtp.server.tld"
+         ;       message-send-mail-function 'message-smtpmail-send-it)
+
+Then, add to `.emacs`:
+
+         (autoload 'notmuch "~/.emacs.d/my-notmuch" "notmuch mail" t)
+
+
 ## Add a key binding to add/remove/toggle a tag
 
 The `notmuch-{search,show}-{add,remove}-tag` functions are very useful
@@ -172,14 +213,26 @@ useful to you.
 
 ## Viewing HTML messages with an external viewer
 
-The emacs client can often display an HTML message inline, but it
-sometimes fails for one reason or another, (or is perhaps inadequate
-if you really need to see the graphical presentation of the HTML
-message).
+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.
 
-In this case, 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`:
+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`
@@ -208,13 +261,13 @@ don't know why."
 
 ## msmtp, message mode and multiple accounts
 
-As an alternative to running a mail server such as sendmail or
-postfix just to send email, it is possible to use
-[msmtp](http://msmtp.sourceforge.net/).  This small application will
+As an alternative to running a mail server such as sendmail or postfix
+just to send email, it is possible to use
+[msmtp](http://msmtp.sourceforge.net/). This small application will
 look like `/usr/bin/sendmail` to a MUA such as emacs message mode, but
-will just forward the email to an external SMTP server.  It's fairly
-easy to set up and it support several account for using different
-SMTP servers.  The msmtp pages have several examples.
+will just forward the email to an external SMTP server. It's fairly
+easy to set up and it supports several accounts for using different
+SMTP servers. The msmtp pages have several examples.
 
 A typical scenario is that you want to use the company SMTP server
 for email coming from your company email address, and your personal
@@ -235,6 +288,13 @@ 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 two solutions to this:
@@ -249,7 +309,7 @@ candidates based on a search string.  There are currently two
 available:
 
   * The python tool `notmuch_address.py` (`git clone
-    http://jkr.acm.jhu.edu/git/notmuch_addresses.git`) (slower, but
+    http://commonmeasure.org/~jkr/git/notmuch_addresses.git`) (slower, but
     no compilation required so good for testing the setup)
 
   * The vala-based
@@ -261,10 +321,12 @@ available:
 
                     cc -o addrlookup addrlookup.c `pkg-config --cflags --libs gobject-2.0` -lnotmuch
 
-EUDC is integrated into emacs and is needed for tab completion of
-email addresses. See [this
-mail](http://mid.gmane.org/87fx3uflkx.fsf@jhu.edu)
-(id:87fx3uflkx.fsf@jhu.edu) for more information.
+You can perform tab-completion using either of these programs. Just add the following to your .emacs:
+
+    (require 'notmuch-address)
+    (setq notmuch-address-command "/path/to/address_fetching_program")
+    (notmuch-address-message-insinuate)
+
 
 ## How to sign/encrypt messages with gpg
 
@@ -286,3 +348,11 @@ is not required).
 Alternatively, you may prefer to use `mml-secure-message-sign-pgpmime` instead
 of `mml-secure-sign-pgpmime` to sign the whole message instead of just one
 part.
+
+### Troubleshooting message-mode gpg support
+
+- If you have trouble with expired subkeys, you may have encounted
+  emacs bug #7931.  This is fixed in git commit 301ea744c on
+  2011-02-02.  Note that if you have the Debian package easypg
+  installed, it will shadow the fixed version of easypg included with
+  emacs.