Goto command for existing search windows
MarkR.Anderson at amd.com
Tue Mar 27 13:24:36 PDT 2012
I was looking for a function which would find a buffer based on one of
my saved searches, and perform the search if it didn't exist.
I've gotten it a bit closer, if I perform the search that matches a
saved search, then this routine will find it because of the magic in
notmuch-search-buffer-title, but perhaps someone else feels up to
searching through the saved searches directly?
(defun notmuch-goto-or-search (&optional query)
"Find a notmuch-search buffer with the given query, or run
\"notmuch search\" with the given `query' and display results.
If `query' is nil, it is read interactively from the minibuffer."
(if (null query)
(setq query (notmuch-read-query "Notmuch goto-or-search: ")))
(let ((buffer-name (notmuch-search-buffer-title query)))
(setq buf (get-buffer buffer-name)))
(if (not buf)
I then use it something like this:
(global-set-key [C-f1] (lambda () (interactive) (notmuch-goto-or-search "tag:inbox and tag:unread and not tag:deleted")))
(global-set-key [C-f2] (lambda () (interactive) (notmuch-goto-or-search "tag:inbox and not tag:deleted")))
(global-set-key [C-f3] 'notmuch)
(global-set-key [C-f6] (lambda () (interactive) (notmuch-goto-or-search "tag:todo and not tag:deleted")))
It would be better if I could use my Inbox, INBOX and todo names for the
saved searches, but how to do that without breaking generality of
searching the body of the email? Do I have to define my own ss: (saved
search) prefix or something, as I believe some others have?
This is what I'm willing to do today, and it works for me, I could patch
notmuch.el, but I wondered about answering the other questions.
Also, some elisp master could hint about how to make the binding not so
Another appreciated elisp hint would be how to get the buf variable to
go inside the let, I keep getting complaints about buffer-name not being
defined, thus the "ugly" setq, which works.
More information about the notmuch