]> git.cworth.org Git - obsolete/notmuch-wiki/blobdiff - emacstips.mdwn
emacs tips: cosmetic fixup
[obsolete/notmuch-wiki] / emacstips.mdwn
index a5b724712a3169a04e61ad11fdb440cb2072f442..a2c0b24c333a035e846f236cb7ec0183311e635a 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.
 
 -----
 
@@ -122,6 +133,8 @@ a file called `~/.emacs.d/my-notmuch.el`:
         ;; 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`:
 
@@ -409,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")
@@ -433,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)
@@ -469,7 +482,7 @@ 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"
+### 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
@@ -513,7 +526,7 @@ Here is an example configuration.
 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 docvumentation"):
+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
@@ -526,3 +539,70 @@ more information (some of these have "extensive docvumentation"):
 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)))
+
+## `notmuch-hello` refresh status message
+
+Add the following to your `.emacs` to get a status message about the change in
+the number of messages in the mail store when refreshing the `notmuch-hello`
+buffer.
+
+        (defvar notmuch-hello-refresh-count 0)
+
+        (defun notmuch-hello-refresh-status-message ()
+          (unless no-display
+            (let* ((new-count
+                    (string-to-number
+                     (car (process-lines notmuch-command "count"))))
+                   (diff-count (- new-count notmuch-hello-refresh-count)))
+              (cond
+               ((= notmuch-hello-refresh-count 0)
+                (message "You have %s messages."
+                         (notmuch-hello-nice-number new-count)))
+               ((> diff-count 0)
+                (message "You have %s more messages since last refresh."
+                         (notmuch-hello-nice-number diff-count)))
+               ((< diff-count 0)
+                (message "You have %s fewer messages since last refresh."
+                         (notmuch-hello-nice-number (- diff-count)))))
+              (setq notmuch-hello-refresh-count new-count))))
+
+        (add-hook 'notmuch-hello-refresh-hook 'notmuch-hello-refresh-status-message)
+
+## Replacing tabs with spaces in subject and header
+
+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 `.emacs` to replace tabs with spaces in subject
+lines:
+
+       (defun notmuch-show-subject-tabs-to-spaces ()
+         "Replace tabs with spaces in subject line."
+         (goto-char (point-min))
+         (when (re-search-forward "^Subject:" nil t)
+           (while (re-search-forward "\t" (line-end-position) t)
+             (replace-match " " nil nil))))
+
+       (add-hook 'notmuch-show-markup-headers-hook 'notmuch-show-subject-tabs-to-spaces)
+
+And in header lines (this will only work with the yet to be released
+notmuch version 0.15):
+
+       (defun notmuch-show-header-tabs-to-spaces ()
+         "Replace tabs with spaces in header line."
+         (setq header-line-format
+               (notmuch-show-strip-re
+                (replace-regexp-in-string "\t" " " (notmuch-show-get-subject)))))
+
+       (add-hook 'notmuch-show-hook 'notmuch-show-header-tabs-to-spaces)