notmuch-show: add optional argument for query context instead of using global binding notmuch-search-query-string

Also modify the one call to notmuch-show in notmuch.el.  This makes
the call (notmuch-show thread-id) will work when there is no binding
for notmuch-search-query-string; e.g. when called from user code
outside notmuch.
This commit is contained in:
David Bremner 2009-12-04 22:26:37 -04:00 committed by Carl Worth
parent 764e686f8f
commit 5e8ce15bfb

View file

@ -926,15 +926,17 @@ All currently available key bindings:
(lambda()
(hl-line-mode 1) ))
(defun notmuch-show (thread-id &optional parent-buffer)
(defun notmuch-show (thread-id &optional parent-buffer query-context)
"Run \"notmuch show\" with the given thread ID and display results.
The optional PARENT-BUFFER is the notmuch-search buffer from
which this notmuch-show command was executed, (so that the next
thread from that buffer can be show when done with this one)."
thread from that buffer can be show when done with this one).
The optional QUERY-CONTEXT is a notmuch search term. Only messages from the thread
matching this search term are shown if non-nil. "
(interactive "sNotmuch show: ")
(let ((query notmuch-search-query-string)
(buffer (get-buffer-create (concat "*notmuch-show-" thread-id "*"))))
(let ((buffer (get-buffer-create (concat "*notmuch-show-" thread-id "*"))))
(switch-to-buffer buffer)
(notmuch-show-mode)
(set (make-local-variable 'notmuch-show-parent-buffer) parent-buffer)
@ -946,7 +948,9 @@ thread from that buffer can be show when done with this one)."
(erase-buffer)
(goto-char (point-min))
(save-excursion
(call-process notmuch-command nil t nil "show" "--entire-thread" thread-id "and (" query ")")
(let* ((basic-args (list notmuch-command nil t nil "show" "--entire-thread" thread-id))
(args (if query-context (append basic-args (list "and (" query-context ")")) basic-args)))
(apply 'call-process args))
(notmuch-show-markup-messages)
)
(run-hooks 'notmuch-show-hook)
@ -1123,7 +1127,7 @@ Complete list of currently available key bindings:
(interactive)
(let ((thread-id (notmuch-search-find-thread-id)))
(if (> (length thread-id) 0)
(notmuch-show thread-id (current-buffer))
(notmuch-show thread-id (current-buffer) notmuch-search-query-string)
(error "End of search results"))))
(defun notmuch-search-reply-to-thread ()