]> git.cworth.org Git - notmuch-wiki/blobdiff - emacstips.mdwn
Mention notmuch-init-file (~.emacs.d/notmuch-config.el) and
[notmuch-wiki] / emacstips.mdwn
index 552fe3157ddf11e4f78954f8228c778577f2b5f0..1d73550528617ef07b6e3fb00f6159ef7e2cab77 100644 (file)
@@ -18,15 +18,26 @@ notmuch cli command!
 To use the Notmuch emacs mode, first add the following line to your
 `.emacs` rc file:
 
-        (require 'notmuch)
+        (autoload 'notmuch "notmuch" "notmuch mail" t)
 
-or you can load the package via autoload:
+or if you always want to load notmuch when you start emacs:
 
-        (autoload 'notmuch "notmuch" "notmuch mail" t)
+        (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`. As this is so new
+feature rest of this emacstips file is not yet adjusted to refer this
+file instead of .emacs.
+
 ## Navigating & reading mails
 
 When first starting notmuch in emacs, you will be presented with the
@@ -116,38 +127,6 @@ to your .emacs file.
 
 # 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;
-
-        ;; 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)
-        ;; uncomment to debug smtp sending problems
-        ;; (setq smtpmail-debug-info t)
-
-Then, add to `.emacs`:
-
-        (autoload 'notmuch "~/.emacs.d/my-notmuch" "notmuch mail" t)
-
 ## Initial cursor position in notmuch 0.15 hello window
 
 In notmuch version 0.15 emacs client the handling of cursor position in
@@ -177,7 +156,7 @@ case you want this behaviour:
 The `notmuch-{search,show,tree}-tag` functions are very useful for
 making quick tag key bindings.  The arguments to these functions have
 changed as notmuch has evolved but the following should work on all
-versions of notmuch 0.13 and later.  These functions take a list of
+versions of notmuch from 0.13 on.  These functions take a list of
 tag changes as argument. For example, an argument of (list "+spam"
 "-inbox) adds the tag spam and deletes the tag inbox. Note the
 argument must be a list even if there is only a single tag change
@@ -198,6 +177,19 @@ for messages in `notmuch-tree-mode` by replacing "show" by "tree". If
 you want to tag a whole thread in `notmuch-tree-mode` use
 `notmuch-tree-tag-thread` instead of `notmuch-tree-tag`.
 
+You may also want the function in search mode apply to the all threads
+in the selected region (if there is one). For notmuch prior to 0.17
+this behaviour will occur automatically with the functions given
+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))
+            (notmuch-search-tag (list "+spam" "-inbox") beg end)))
+
+The analogous functionality in notmuch-tree is currently missing.
+
 The definitions above make use of a lambda function, but you could
 also define a separate function first: