notmuch.el: Add commands to (s)earch globally, and (f)ilter a search

Also add 'q' and 'x' keybindings to kill the current buffer.
This commit is contained in:
Carl Worth 2009-11-02 17:56:18 -08:00
parent e1f95213ae
commit df76a704b5

View file

@ -33,6 +33,7 @@
(defvar notmuch-show-mode-map (defvar notmuch-show-mode-map
(let ((map (make-sparse-keymap))) (let ((map (make-sparse-keymap)))
(define-key map "q" 'kill-this-buffer)
(define-key map "x" 'kill-this-buffer) (define-key map "x" 'kill-this-buffer)
map) map)
"Keymap for \"notmuch show\" buffers.") "Keymap for \"notmuch show\" buffers.")
@ -69,8 +70,12 @@
(defvar notmuch-search-mode-map (defvar notmuch-search-mode-map
(let ((map (make-sparse-keymap))) (let ((map (make-sparse-keymap)))
(define-key map "a" 'notmuch-search-archive-thread) (define-key map "a" 'notmuch-search-archive-thread)
(define-key map "f" 'notmuch-search-filter)
(define-key map "n" 'next-line) (define-key map "n" 'next-line)
(define-key map "p" 'previous-line) (define-key map "p" 'previous-line)
(define-key map "q" 'kill-this-buffer)
(define-key map "s" 'notmuch-search)
(define-key map "x" 'kill-this-buffer)
(define-key map "\r" 'notmuch-search-show-thread) (define-key map "\r" 'notmuch-search-show-thread)
(define-key map "+" 'notmuch-search-add-tag) (define-key map "+" 'notmuch-search-add-tag)
(define-key map "-" 'notmuch-search-remove-tag) (define-key map "-" 'notmuch-search-remove-tag)
@ -83,6 +88,7 @@
"Major mode for handling the output of \"notmuch search\"" "Major mode for handling the output of \"notmuch search\""
(interactive) (interactive)
(kill-all-local-variables) (kill-all-local-variables)
(make-local-variable 'notmuch-search-query-string)
(use-local-map notmuch-search-mode-map) (use-local-map notmuch-search-mode-map)
(setq major-mode 'notmuch-search-mode (setq major-mode 'notmuch-search-mode
mode-name "notmuch-search") mode-name "notmuch-search")
@ -176,6 +182,7 @@
(let ((buffer (get-buffer-create (concat "*notmuch-search-" query "*")))) (let ((buffer (get-buffer-create (concat "*notmuch-search-" query "*"))))
(switch-to-buffer buffer) (switch-to-buffer buffer)
(notmuch-search-mode) (notmuch-search-mode)
(set 'notmuch-search-query-string query)
(let ((proc (get-buffer-process (current-buffer))) (let ((proc (get-buffer-process (current-buffer)))
(inhibit-read-only t)) (inhibit-read-only t))
(if proc (if proc
@ -189,6 +196,15 @@
(notmuch-search-markup-thread-ids) (notmuch-search-markup-thread-ids)
))) )))
(defun notmuch-search-filter (query)
"Run \"notmuch search\" to refine the current search results.
A search string will be constructed by appending QUERY to the
current search string, and the results of \"notmuch search\" for
the combined query will be displayed."
(interactive "sFilter search: ")
(notmuch-search (concat notmuch-search-query-string " and " query)))
(defun notmuch () (defun notmuch ()
"Run notmuch to display all mail with tag of 'inbox'" "Run notmuch to display all mail with tag of 'inbox'"
(interactive) (interactive)