From: Jameson Graef Rollins <jrollins@finestructure.net>
To: Notmuch Mail <notmuch@notmuchmail.org>
Subject: [PATCH 09/11] emacs: add ability to show recipients instead of author in search
Date: Sun, 19 Aug 2012 18:52:48 -0700 [thread overview]
Message-ID: <1345427570-26518-10-git-send-email-jrollins@finestructure.net> (raw)
In-Reply-To: <1345427570-26518-9-git-send-email-jrollins@finestructure.net>
A new boolean argument is added to notmuch-search to control whether
thread authors or recipients are shown in the 'authors' field.
---
emacs/notmuch-hello.el | 6 +++---
emacs/notmuch.el | 40 +++++++++++++++++++++++++++++-----------
2 files changed, 32 insertions(+), 14 deletions(-)
diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
index 684bedc..4615cf6 100644
--- a/emacs/notmuch-hello.el
+++ b/emacs/notmuch-hello.el
@@ -26,7 +26,7 @@
(require 'notmuch-lib)
(require 'notmuch-mua)
-(declare-function notmuch-search "notmuch" (query &optional oldest-first target-thread target-line continuation))
+(declare-function notmuch-search "notmuch" (query &optional oldest-first show-recipients target-thread target-line continuation))
(declare-function notmuch-poll "notmuch" ())
(defcustom notmuch-hello-recent-searches-max 10
@@ -280,7 +280,7 @@ afterwards.")
(setq search (notmuch-hello-trim search))
(let ((history-delete-duplicates t))
(add-to-history 'notmuch-search-history search)))
- (notmuch-search search notmuch-search-oldest-first nil nil
+ (notmuch-search search notmuch-search-oldest-first nil nil nil
#'notmuch-hello-search-continuation))
(defun notmuch-hello-add-saved-search (widget)
@@ -331,7 +331,7 @@ diagonal."
(notmuch-search (widget-get widget
:notmuch-search-terms)
notmuch-search-oldest-first
- nil nil #'notmuch-hello-search-continuation))
+ nil nil nil #'notmuch-hello-search-continuation))
(defun notmuch-saved-search-count (search)
(car (process-lines notmuch-command "count" search)))
diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index 7b61e9b..d05b1e8 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -254,6 +254,7 @@ For a mouse binding, return nil."
(notmuch-common-do-stash (notmuch-search-find-thread-id)))
(defvar notmuch-search-query-string)
+(defvar notmuch-search-show-recipients)
(defvar notmuch-search-target-thread)
(defvar notmuch-search-target-line)
(defvar notmuch-search-continuation)
@@ -405,6 +406,7 @@ Complete list of currently available key bindings:
(make-local-variable 'notmuch-search-oldest-first)
(make-local-variable 'notmuch-search-target-thread)
(make-local-variable 'notmuch-search-target-line)
+ (make-local-variable 'notmuch-search-show-recipients)
(set (make-local-variable 'notmuch-search-continuation) nil)
(set (make-local-variable 'scroll-preserve-screen-position) t)
(add-to-invisibility-spec (cons 'ellipsis t))
@@ -781,7 +783,10 @@ non-authors is found, assume that all of the authors match."
'face 'notmuch-search-subject)))
((string-equal field "authors")
- (notmuch-search-insert-authors format-string (plist-get result :authors)))
+ (notmuch-search-insert-authors format-string
+ (if notmuch-search-show-recipients
+ (plist-get result :recipients)
+ (plist-get result :authors))))
((string-equal field "tags")
(let ((tags-str (mapconcat 'identity (plist-get result :tags) " ")))
@@ -931,13 +936,16 @@ PROMPT is the string to prompt with."
'notmuch-search-history nil nil)))))
;;;###autoload
-(defun notmuch-search (&optional query oldest-first target-thread target-line continuation)
+(defun notmuch-search (&optional query oldest-first show-recipients target-thread target-line continuation)
"Run \"notmuch search\" with the given `query' and display results.
If `query' is nil, it is read interactively from the minibuffer.
Other optional parameters are used as follows:
oldest-first: A Boolean controlling the sort order of returned threads
+ show-recipients: A Boolean controlling whether or not thread
+ recipients instead of authors are shown in the
+ 'authors' field.
target-thread: A thread ID (without the thread: prefix) that will be made
current if it appears in the search results.
target-line: The line number to move to if the target thread does not
@@ -952,25 +960,34 @@ Other optional parameters are used as follows:
(set 'buffer-undo-list t)
(set 'notmuch-search-query-string query)
(set 'notmuch-search-oldest-first oldest-first)
+ (set 'notmuch-search-show-recipients show-recipients)
(set 'notmuch-search-target-thread target-thread)
(set 'notmuch-search-target-line target-line)
(set 'notmuch-search-continuation continuation)
(let ((proc (get-buffer-process (current-buffer)))
+ (proc-args (list
+ "notmuch-search" buffer
+ notmuch-command "search"
+ "--format=json"
+ (if oldest-first
+ "--sort=oldest-first"
+ "--sort=newest-first")))
(inhibit-read-only t))
+ (if show-recipients
+ (setq proc-args (append proc-args '("--include-recipients"))))
(if proc
(error "notmuch search process already running for query `%s'" query)
)
(erase-buffer)
(goto-char (point-min))
(save-excursion
- (let ((proc (start-process
- "notmuch-search" buffer
- notmuch-command "search"
- "--format=json"
- (if oldest-first
- "--sort=oldest-first"
- "--sort=newest-first")
- query))
+ (let (
+ ;; start-process insists on non-nil string arguments.
+ ;; This is annoying for variable length argument lists.
+ ;; We use apply here so that we can construct the
+ ;; start-process argument list ahead of time (instead of
+ ;; at invocation) to avoid nils.
+ (proc (apply 'start-process (append proc-args (list query))))
;; Use a scratch buffer to accumulate partial output.
;; This buffer will be killed by the sentinel, which
;; should be called no matter how the process dies.
@@ -995,11 +1012,12 @@ same relative position within the new buffer."
(interactive)
(let ((target-line (line-number-at-pos))
(oldest-first notmuch-search-oldest-first)
+ (show-recipients notmuch-search-show-recipients)
(target-thread (notmuch-search-find-thread-id 'bare))
(query notmuch-search-query-string)
(continuation notmuch-search-continuation))
(notmuch-kill-this-buffer)
- (notmuch-search query oldest-first target-thread target-line continuation)
+ (notmuch-search query oldest-first show-recipients target-thread target-line continuation)
(goto-char (point-min))))
(defcustom notmuch-poll-script nil
--
1.7.10.4
next prev parent reply other threads:[~2012-08-20 1:53 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-20 1:52 [PATCH 00/11] add recipients to search output Jameson Graef Rollins
2012-08-20 1:52 ` [PATCH 01/11] lib: new thread addresses structure Jameson Graef Rollins
2012-08-20 1:52 ` [PATCH 02/11] lib: use new addresses structure for thread authors Jameson Graef Rollins
2012-08-20 1:52 ` [PATCH 03/11] lib: give _thread_cleanup_author a more generic name Jameson Graef Rollins
2012-08-20 1:52 ` [PATCH 04/11] lib: remove no longer needed author-specific thread functions Jameson Graef Rollins
2012-08-20 1:52 ` [PATCH 05/11] lib: add ability to store recipients in message structure Jameson Graef Rollins
2012-08-20 1:52 ` [PATCH 06/11] lib: store thread recipients in thread structure Jameson Graef Rollins
2012-08-20 1:52 ` [PATCH 07/11] test: search recipient output Jameson Graef Rollins
2012-08-20 1:52 ` [PATCH 08/11] cli: add thread recipients to search output Jameson Graef Rollins
2012-08-20 1:52 ` Jameson Graef Rollins [this message]
2012-08-20 1:52 ` [PATCH 10/11] emacs: add function to toggle showing authors/recipients in search Jameson Graef Rollins
2012-08-20 1:52 ` [PATCH 11/11] lib: add recipients to database Jameson Graef Rollins
2012-08-31 21:34 ` Michal Sojka
2012-08-31 21:00 ` [PATCH 08/11] cli: add thread recipients to search output Michal Sojka
2012-08-31 20:44 ` [PATCH 06/11] lib: store thread recipients in thread structure Michal Sojka
2012-09-02 7:52 ` Mark Walters
2012-09-08 17:25 ` Austin Clements
2012-08-31 20:19 ` [PATCH 05/11] lib: add ability to store recipients in message structure Michal Sojka
2012-09-08 17:24 ` Austin Clements
2012-09-08 17:25 ` [PATCH 03/11] lib: give _thread_cleanup_author a more generic name Austin Clements
2012-09-08 17:24 ` [PATCH 02/11] lib: use new addresses structure for thread authors Austin Clements
2012-08-30 15:38 ` [PATCH 01/11] lib: new thread addresses structure Michal Sojka
2012-08-30 16:33 ` Jameson Graef Rollins
2012-09-08 17:24 ` Austin Clements
2012-08-22 20:43 ` [PATCH 00/11] add recipients to search output Jameson Graef Rollins
2012-08-23 7:21 ` Tomi Ollila
2012-09-08 17:23 ` Austin Clements
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1345427570-26518-10-git-send-email-jrollins@finestructure.net \
--to=jrollins@finestructure.net \
--cc=notmuch@notmuchmail.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).