X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;ds=sidebyside;f=emacstips.mdwn;h=f5b418c6700cec7588040ed85a4b80248ceb528e;hb=0364b91f49267bb59ef4a70f78114673f9b3efb0;hp=24ed641be39b9b0375a2957b5f7c14ba27349799;hpb=d8ec2b443ec10acda34c096650317947e2de65c1;p=notmuch-wiki
diff --git a/emacstips.mdwn b/emacstips.mdwn
index 24ed641..f5b418c 100644
--- a/emacstips.mdwn
+++ b/emacstips.mdwn
@@ -218,7 +218,7 @@ displaying the count for the saved-search. For example
(setq notmuch-saved-searches '((:name "inbox"
:query "tag:inbox"
:count-query "tag:inbox and tag:unread"
- :sort-order 'oldest-first)))
+ :sort-order oldest-first)))
specifies a single saved search for inbox, but the number displayed by
the search will be the number of unread messages in the inbox, and the
@@ -274,10 +274,72 @@ 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.
+## sending mail using smtpmail
+
+
+
+If setting up local `sendmail` or `msmtp` is not feasible or desirable,
+the Emacs `smtpmail` package can be used to send email by talking to remote
+SMTP server via TCP connection. It is pretty easy to configure:
+
+1. Emacs variable `message-send-mail-function` has not been set
+
+ Initially, Emacs variable `message-send-mail-function` has value of
+ `sendmail-query-once`. When (notmuch) message mode is about to send email,
+ `sendmail-query-once` will ask how emacs should send email. Typing `smtp`
+ will configure `smtpmail` and Emacs may prompt for SMTP settings.
+
+1. `M-x customize-group RET smtpmail`
+
+ As a minimum, 'Smtpmail Smtp Server' needs to be set.
+
+ After doing that, continue with `M-x load-library RET message` and
+ `M-x customize-variable RET message-send-mail-function`.
+ In the customization buffer select `message-smtpmail-send-it`.
+
+1. Set some variables in .emacs or in [notmuch init file](/notmuch-emacs#notmuch_init_file)
+
+ (setq smtpmail-smtp-server "smtp.server.tld" ;; <-- edit this !!!
+ ;; smtpmail-smtp-service 25 ;; 25 is default -- uncomment and edit if needed
+ ;; smtpmail-stream-type 'starttls
+ ;; smtpmail-debug-info t
+ ;; smtpmail-debug-verb t
+ message-send-mail-function 'message-smtpmail-send-it)
+
+Note that emacs 24 or newer is required for `smtpmail-stream-type`
+(and smtp authentication) to be effective.
+
+More information for smtpmail is available:
+
+* In Emacs: `M-x info-display-manual smtpmail`
+* [EmacsWiki Page](http://www.emacswiki.org/emacs/SendingMail)
+
+
## Address completion when composing
There are currently three solutions to this:
+### notmuch address
+
+Starting with Notmuch 0.21, there is a builtin command to perform
+autocompletion directly within Notmuch. Starting with 0.22, it is
+configured by default, so if you have previously configured another
+completion mechanism, you may want to try out the new internal
+method. Use `M-x customize-variable RET notmuch-address-command` and
+reset the value to "internal address completion" (`'internal` in
+lisp).
+
+If you are not yet running 0.22, you can still use it by adding a
+wrapper around the command called, say, `notmuch-address`:
+
+ #!/bin/sh
+ exec notmuch address from:"$*"
+
+Then you can set the `notmuch-address-command` to `notmuch-address`
+(if it is in your `$PATH` of course, otherwise use an absolute path).
+
### bbdb
[bbdb](http://bbdb.sourceforge.net) is a contact database for emacs
@@ -300,7 +362,7 @@ available:
git clone https://github.com/aperezdc/notmuch-addrlookup-c
cd notmuch-addrlookup-c
make
-
+
* The vala-based
[addrlookup](http://github.com/spaetz/vala-notmuch) The addrlookup binary needs to be compiled.
Grab
@@ -318,7 +380,7 @@ available:
from notmuch. It also includes a vim plugin.
You can perform tab-completion using any of these programs.
-Just add the following to your [notmuch init file](#notmuch_init_file):
+Just add the following to your [notmuch init file](/notmuch-emacs#notmuch_init_file):
(require 'notmuch-address)
(setq notmuch-address-command "/path/to/address_fetching_program")
@@ -352,7 +414,7 @@ Enter the cloned repository and create a build directory:
You will find the akonadimailsearch binary in the build/src directory. Copy it to ~/bin .
You can now add the following settings to your
-[notmuch init file](#notmuch_init_file):
+[notmuch init file](/notmuch-emacs#notmuch_init_file):
(require 'notmuch-address)
(setq notmuch-address-command "~/bin/akonadimailsearch")
@@ -401,11 +463,14 @@ part.
installed, it will shadow the fixed version of easypg included with
emacs.
+- If you wish `mml-secure-encrypt` to encrypt also for the sender, then
+ `M-x customize-variable mml2015-encrypt-to-self` might suit your need.
+
## Reading and verifying encrypted and signed messages
Encrypted and signed mime messages can be read and verified with:
- (notmuch-crypto-process-mime t)
+ (setq notmuch-crypto-process-mime t)
Decrypting or verifying inline pgp messages can be done by selecting
an the inline pgp area and and using:
@@ -479,9 +544,20 @@ The last two do the same thing.
See also the **Usage:** section in `gnus-alias.el`.
+## Multiple identities (and more) with message-templ
+
+Another option for multiple identities is
+[message-templ](http://pivot.cs.unb.ca/git?p=message-templ.git;a=summary)
+(also a available in marmalade). This provides roughly the same
+facilities as wanderlust's template facility.
+
+See
+[example.emacs.el](http://pivot.cs.unb.ca/git?p=message-templ.git;a=blob;f=example.emacs.el;hb=HEAD)
+for some simple examples of usage.
+
## Resending (or bouncing) messages
-Add the following to your [notmuch init file](#notmuch_init_file) to be able
+Add the following to your [notmuch init file](/notmuch-emacs#notmuch_init_file) to be able
to resend the current message in show mode.
(define-key notmuch-show-mode-map "b"
@@ -493,7 +569,7 @@ to resend the current message in show mode.
## `notmuch-hello` refresh status message
-Add the following to your [notmuch init file](#notmuch_init_file) to get a
+Add the following to your [notmuch init file](/notmuch-emacs#notmuch_init_file) to get a
status message about the change in the number of messages in the mail store
when refreshing the `notmuch-hello` buffer.
@@ -523,7 +599,7 @@ when refreshing the `notmuch-hello` buffer.
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 [notmuch init file](#notmuch_init_file) to replace
+lines. Add this to your [notmuch init file](/notmuch-emacs#notmuch_init_file) to replace
tabs with spaces in subject lines:
(defun notmuch-show-subject-tabs-to-spaces ()
@@ -552,7 +628,7 @@ I like to have an inbox saved search, but only show unread messages when they
view a thread. This takes two steps:
1. Apply
-[this patch from Mark Walters](http://notmuchmail.org/pipermail/notmuch/2012/010817.html)
+[this patch from Mark Walters](https://notmuchmail.org/pipermail/notmuch/2012/010817.html)
to add the `notmuch-show-filter-thread` function.
1. Add the following hook to your emacs configuration:
@@ -624,22 +700,86 @@ refine, next hunk etc all work.
"View the the current message as a patch."
(interactive)
(let* ((id (notmuch-show-get-message-id))
+ (msg (notmuch-show-get-message-properties))
+ (part (notmuch-show-get-part-properties))
(subject (concat "Subject: " (notmuch-show-get-subject) "\n"))
(diff-default-read-only t)
(buf (get-buffer-create (concat "*notmuch-patch-" id "*")))
(map (make-sparse-keymap)))
- (define-key map "q" 'notmuch-kill-this-buffer)
+ (define-key map "q" 'notmuch-bury-or-kill-this-buffer)
(switch-to-buffer buf)
(let ((inhibit-read-only t))
(erase-buffer)
(insert subject)
- (insert (notmuch-get-bodypart-internal id 1 nil)))
+ (insert (notmuch-get-bodypart-text msg part nil)))
(set-buffer-modified-p nil)
(diff-mode)
(lexical-let ((new-ro-bind (cons 'buffer-read-only map)))
(add-to-list 'minor-mode-overriding-map-alist new-ro-bind))
(goto-char (point-min))))
-and then this function needs to bound into the keymap with something like
-
- (define-key 'notmuch-show-mode-map "D" 'my-notmuch-show-view-as-patch)
+and then this function needs to bound to `. d` in the keymap
+
+ (define-key 'notmuch-show-part-map "d" 'my-notmuch-show-view-as-patch)
+
+## Interfacing with Patchwork
+
+[Patchwork](http://jk.ozlabs.org/projects/patchwork/) is a web-based system for
+tracking patches sent to a mailing list. While the Notmuch project doesn't use
+it, many other open source projects do. Having an easy way to get from a patch
+email in your favorite mail client to the web page of the patch in the Patchwork
+instance is a cool thing to have. Here's how to abuse the notmuch stash feature
+to achieve this. (Don't know stash? See `notmuch-show-stash-mlarchive-link`,
+bound to `c l` in `notmuch-show`.)
+
+The trick needed is turning the email Message-ID into a unique Patchwork ID
+assigned by Patchwork. We'll use the `pwclient` command-line tool to achieve
+this. You'll first need to get that working and configured for the Patchwork
+instance you're using. That part is beyond this tip here; please refer to
+Patchwork documentation.
+
+Check your configuration on the command-line, for example:
+
+ /path/to/pwclient -p -n 5 -f "%{id}"
+
+Note that the -f format argument may require a reasonably new version of the
+client. Once you have the above working, you can `M-x customize-variable RET
+notmuch-show-stash-mlarchive-link-alist RET`.
+
+Add a new entry with "Function returning the URL:" set to:
+
+ (lambda (message-id)
+ (concat "http://patchwork.example.com/patch/"
+ (nth 0
+ (process-lines "/path/to/pwclient" "search"
+ "-p" "the-project"
+ "-m" (concat "<" message-id ">")
+ "-n" "1"
+ "-f" "%{id}"))))
+
+Replacing `http://patchwork.example.com/patch/`, `/path/to/pwclient`, and
+`the-project` appropiately. You should now be able to stash the Patchwork URL
+using `c l`.
+
+Going further, if the patch has been committed, you can get the commit hash with
+this:
+
+ (lambda (message-id)
+ (nth 0
+ (process-lines "/path/to/pwclient" "search"
+ "-p" "the-project"
+ "-m" (concat "<" message-id ">")
+ "-n" "1"
+ "-f" "%{commit_ref}")))
+
+And finally, if the project has a web interface to its source repository, you
+can turn the commit hash into a URL pointing there, for example:
+
+ (lambda (message-id)
+ (concat "http://cgit.example.com/the-project/commit/?id="
+ (nth 0
+ (process-lines "/path/to/pwclient" "search"
+ "-p" "the-project"
+ "-m" (concat "<" message-id ">")
+ "-n" "1"
+ "-f" "%{commit_ref}"))))