]> git.cworth.org Git - obsolete/notmuch-wiki/blobdiff - emacstips.mdwn
bouncing messages
[obsolete/notmuch-wiki] / emacstips.mdwn
index dc16430af49a34661cfc44e2ef868c62d0b8f497..311de7101ad08597809bfe30e82ca8fe5b263f2a 100644 (file)
@@ -92,6 +92,17 @@ mentioned as script arguments. (Note: The script expects that you have
         done
         emacsclient -a '' -c -e "(progn (compose-mail) $attach_cmds)"
 
+## 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.
 
 -----
 
@@ -104,29 +115,28 @@ 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
-        ;;
+        ;;; my-notmuch.el -- my notmuch mail configuration
+        ;;;
         
-        ;; add here stuff required to be configured *before*
-        ;; notmuch is loaded;
+        ;;; 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")
+        ;; 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 
+        ;;; 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))
+        ;;; 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 & 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, adto `.emacs`:
+Then, adto `.emacs`:
 
         (autoload 'notmuch "~/.emacs.d/my-notmuch" "notmuch mail" t)
 
@@ -147,10 +157,10 @@ In notmuch versions up to 0.11.x
             (notmuch-show-add-tag "spam")
             (notmuch-show-remove-tag "inbox")))
 
-Starting from notmuch 0.12 (not released yet) the functions 
-`notmuch-show-add-tag` and `notmuch-show-remove-tag` have changed to
-be more versatile and lost noninteractive use. When upgrading to 0.12 
-the above needs to be changed to this:
+Starting from notmuch 0.12 the functions `notmuch-show-add-tag` and 
+`notmuch-show-remove-tag` have changed to be more versatile and lost
+noninteractive use. When upgrading to 0.12 the above needs to be 
+changed to this:
 
         (define-key notmuch-show-mode-map "S"
           (lambda ()
@@ -161,12 +171,27 @@ the above needs to be changed to this:
 You can do the same for threads in `notmuch-search-mode` by just
 replacing "show" with "search" in the called functions.
 
-(Starting from notmuch 0.12 use `notmuch-search-tag-thread` instead)
+Starting from notmuch 0.12 use `notmuch-search-tag-thread` instead:
+
+        (define-key notmuch-search-mode-map "S"
+          (lambda ()
+            "mark messages in thread as spam"
+            (interactive)
+            (notmuch-show-tag-thread "+spam" "-inbox")))
+
+Starting from notmuch 0.13 use `notmuch-search-tag` -- it has a little
+different usage syntax:
+
+        (define-key notmuch-search-mode-map "S"
+          (lambda ()
+            "mark messages in thread as spam"
+            (interactive)
+            (notmuch-search-tag '("+spam" "-inbox"))))
 
 The definition above makes use of a lambda function, but you could
 also define a separate function first:
 
-        (defun notmuch-show-tag-spam()
+        (defun notmuch-show-tag-spam ()
           "mark message as spam"
           (interactive)
           (notmuch-show-add-tag "spam")
@@ -186,7 +211,7 @@ key:
                 (notmuch-show-remove-tag "deleted")
               (notmuch-show-add-tag "deleted"))))
 
-And version for notmuch 0.12 (not released yet)
+And version for notmuch 0.12
 
         (define-key notmuch-show-mode-map "d"
           (lambda ()
@@ -397,9 +422,10 @@ available:
 
   * Shell/fgrep/perl combination [nottoomuch-addresses.sh](http://www.iki.fi/too/nottoomuch/nottoomuch-addresses/). 
     This tools maintains it's own address "database" gathered from email
-    files notmuch knows and search from that "database" is done by fgrep(1).
+    files notmuch knows and search from that "database" is done by `fgrep(1)`.
 
-You can perform tab-completion using any of these programs. Just add the following to your .emacs:
+You can perform tab-completion using any of these programs.
+Just add the following to your .emacs:
 
         (require 'notmuch-address)
         (setq notmuch-address-command "/path/to/address_fetching_program")
@@ -421,12 +447,11 @@ You can add the sender of a message to Google Contacts by piping the message
 
 ## How to sign/encrypt messages with gpg
 
-Messages can by signed using gpg by invoking `M-x
-mml-secure-sign-pgpmime` (or `M-x
-mml-secure-encrypt-pgpmime`). These functions are available via the
-standard `message-mode` keybindings `C-c C-m s p` and `C-c C-m c
-p`. To sign outgoing mail by default, use the `message-setup-hook`
-in your `.emacs` file:
+Messages can by signed using gpg by invoking 
+`M-x mml-secure-sign-pgpmime` (or `M-x mml-secure-encrypt-pgpmime`).
+These functions are available via the standard `message-mode` keybindings 
+`C-c C-m s p` and `C-c C-m c p`. To sign outgoing mail by default, use the
+`message-setup-hook` in your `.emacs` file:
 
         ;; Sign messages by default.
         (add-hook 'message-setup-hook 'mml-secure-sign-pgpmime)
@@ -447,3 +472,82 @@ part.
   2011-02-02.  Note that if you have the Debian package easypg
   installed, it will shadow the fixed version of easypg included with
   emacs.
+
+## Multiple identities using gnus-alias
+
+[gnus-alias](http://www.emacswiki.org/emacs/GnusAlias) allows you to
+define multiple identities when using `message-mode`. You can specify
+the from address, organization, extra headers (including *Bcc*), extra
+body text, and signature for each identity. Identities are chosen
+based on a set of rules. When you are in message mode, you can switch
+identities using gnus-alias.
+
+### Installation
+
+- put `gnus-alias.el` on your load Emacs-Lisp load path (add new directory
+  to load path by writing `(add-to-list 'load-path "/some/load/path")` into
+  your `.emacs`.
+
+- Add the following to your `.emacs`
+
+        (autoload 'gnus-alias-determine-identity "gnus-alias" "" t)
+        (add-hook 'message-setup-hook 'gnus-alias-determine-identity)
+
+Looking into `gnus-alias.el` gives a bit more information...
+
+### Example Configuration 
+
+Here is an example configuration.
+
+        ;; Define two identities, "home" and "work"
+        (setq gnus-alias-identity-alist
+              '(("home"
+                 nil ;; Does not refer to any other identity
+                 "John Doe <jdoe@example.net>" ;; Sender address
+                 nil ;; No organization header
+                 nil ;; No extra headers
+                 nil ;; No extra body text
+                 "~/.signature")
+                ("work"
+                 nil
+                 "John Doe <john.doe@example.com>"
+                 "Example Corp."
+                 (("Bcc" . "john.doe@example.com"))
+                 nil
+                 "~/.signature.work")))
+        ;; Use "home" identity by default
+        (setq gnus-alias-default-identity "home")
+        ;; Define rules to match work identity
+        (setq gnus-alias-identity-rules
+              '(("work" ("any" "john.doe@\\(example\\.com\\|help\\.example.com\\)" both) "work"))
+        ;; Determine identity when message-mode loads
+        (add-hook 'message-setup-hook 'gnus-alias-determine-identity)
+
+When `gnus-alias` has been loaded (using autoload, require, *M-x load-library*
+or *M-x load-file* (load-file takes file path -- therefore it can be used
+without any `.emacs` changes)) the following commands can be used to get(/set)
+more information (some of these have "extensive documentation"):
+
+        M-x describe-variable RET gnus-alias-identity-alist
+        M-x describe-variable RET gnus-alias-identity-rules
+        M-x describe-variable RET gnus-alias-default-identity
+
+        M-x customize-group RET gnus-alias RET
+          or 
+        M-x gnus-alias-customize RET
+
+The last two do the same thing.
+
+See also the **Usage:** section in `gnus-alias.el`.
+
+## Resending (or bouncing) messages
+
+Add the following to your `.emacs` to be able to resend the current message in
+show mode.
+
+        (define-key notmuch-show-mode-map "b"
+          (lambda (&optional address)
+            "Bounce the current message."
+            (interactive "sBounce To: ")
+            (notmuch-show-view-raw-message)
+            (message-resend address)))