X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=emacstips.mdwn;h=2cc8aac748e2851ae364743567518cabacacfa49;hb=3b430fc8fb45f08ad64e5efc4613e0346f76e0f7;hp=074c593dfa27286c12a67b67f553bbe69a6f509f;hpb=663edf5a4de7595f9e2a480db608f6b1ad537245;p=notmuch-wiki diff --git a/emacstips.mdwn b/emacstips.mdwn index 074c593..2cc8aac 100644 --- a/emacstips.mdwn +++ b/emacstips.mdwn @@ -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) @@ -462,30 +475,46 @@ part. ## Multiple identities using gnus-alias -gnus-alias 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. +[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 " - nil ;; No organization header - nil ;; No extra headers - nil ;; No extra body text - "~/.signature") - ("work" - nil - "John Doe " - "Example Corp." - (("Bcc" . "john.doe@example.com")) - nil - "~/.signature.work"))) + nil ;; Does not refer to any other identity + "John Doe " ;; Sender address + nil ;; No organization header + nil ;; No extra headers + nil ;; No extra body text + "~/.signature") + ("work" + nil + "John Doe " + "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 @@ -493,3 +522,87 @@ Here is an example configuration. '(("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))) + +## `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)