From: Mark Walters Date: Sun, 12 Feb 2012 18:49:38 +0000 (+0000) Subject: [RFC PATCH v2 2/3] emacs: changes to other files to support notmuch-pick X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=86bf388f1b13f57b0ef769723a69c78ff17581a5;p=notmuch-archives.git [RFC PATCH v2 2/3] emacs: changes to other files to support notmuch-pick --- diff --git a/b2/ed1b396ca30f150b7b66359faff4a04a0cb0fa b/b2/ed1b396ca30f150b7b66359faff4a04a0cb0fa new file mode 100644 index 000000000..e9b7657ba --- /dev/null +++ b/b2/ed1b396ca30f150b7b66359faff4a04a0cb0fa @@ -0,0 +1,269 @@ +Return-Path: +X-Original-To: notmuch@notmuchmail.org +Delivered-To: notmuch@notmuchmail.org +Received: from localhost (localhost [127.0.0.1]) + by olra.theworths.org (Postfix) with ESMTP id 4F64B431FAE + for ; Sun, 12 Feb 2012 10:49:07 -0800 (PST) +X-Virus-Scanned: Debian amavisd-new at olra.theworths.org +X-Spam-Flag: NO +X-Spam-Score: 0.201 +X-Spam-Level: +X-Spam-Status: No, score=0.201 tagged_above=-999 required=5 + tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, + FREEMAIL_ENVFROM_END_DIGIT=1, FREEMAIL_FROM=0.001, + RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled +Received: from olra.theworths.org ([127.0.0.1]) + by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id GFyqhS6Y0BRG for ; + Sun, 12 Feb 2012 10:49:06 -0800 (PST) +Received: from mail-we0-f181.google.com (mail-we0-f181.google.com + [74.125.82.181]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) + (No client certificate requested) + by olra.theworths.org (Postfix) with ESMTPS id EEED7421174 + for ; Sun, 12 Feb 2012 10:49:04 -0800 (PST) +Received: by mail-we0-f181.google.com with SMTP id p13so3496132wer.26 + for ; Sun, 12 Feb 2012 10:49:04 -0800 (PST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; + h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; + bh=lAwVjTYKvJJpCqq8sV62WiDakJy5ni5otlUt7m6Kl5Y=; + b=gHz0oVt8jEM+Yd/CK+s3pKiNXB5I3y0Y502WYN5Nw+3gKSI34YLuNEPXmKzQAZ4ba9 + Ojzj0MsOp40kZrVqr8/nSDpunf1r7vh137YtTK2Ne5E2SWk0SfBMjJfscToQtlqaAK1g + /9aKdUgMU1GcmtkYQ219iYsfuX1GMsX2WOk0w= +Received: by 10.180.14.193 with SMTP id r1mr14030520wic.9.1329072544745; + Sun, 12 Feb 2012 10:49:04 -0800 (PST) +Received: from localhost (94-192-233-223.zone6.bethere.co.uk. + [94.192.233.223]) by mx.google.com with ESMTPS id + dr5sm39272463wib.0.2012.02.12.10.49.03 (version=TLSv1/SSLv3 cipher=OTHER); + Sun, 12 Feb 2012 10:49:04 -0800 (PST) +From: Mark Walters +To: notmuch@notmuchmail.org +Subject: [RFC PATCH v2 2/3] emacs: changes to other files to support + notmuch-pick +Date: Sun, 12 Feb 2012 18:49:38 +0000 +Message-Id: <1329072579-27340-3-git-send-email-markwalters1009@gmail.com> +X-Mailer: git-send-email 1.7.2.3 +In-Reply-To: <1329072579-27340-1-git-send-email-markwalters1009@gmail.com> +References: <1329072579-27340-1-git-send-email-markwalters1009@gmail.com> +X-BeenThere: notmuch@notmuchmail.org +X-Mailman-Version: 2.1.13 +Precedence: list +List-Id: "Use and development of the notmuch mail system." + +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +X-List-Received-Date: Sun, 12 Feb 2012 18:49:07 -0000 + +--- + emacs/Makefile.local | 3 ++- + emacs/notmuch-hello.el | 10 ++++++++++ + emacs/notmuch-lib.el | 4 ++++ + emacs/notmuch-query.el | 4 +++- + emacs/notmuch-show.el | 25 ++++++++++++++++++++++--- + emacs/notmuch.el | 8 ++++++++ + 6 files changed, 49 insertions(+), 5 deletions(-) + +diff --git a/emacs/Makefile.local b/emacs/Makefile.local +index 4fee0e8..2922d9e 100644 +--- a/emacs/Makefile.local ++++ b/emacs/Makefile.local +@@ -14,7 +14,8 @@ emacs_sources := \ + $(dir)/notmuch-message.el \ + $(dir)/notmuch-crypto.el \ + $(dir)/coolj.el \ +- $(dir)/notmuch-print.el ++ $(dir)/notmuch-print.el \ ++ $(dir)/notmuch-pick.el + + emacs_images := \ + $(srcdir)/$(dir)/notmuch-logo.png +diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el +index d17a30f..6d28a7e 100644 +--- a/emacs/notmuch-hello.el ++++ b/emacs/notmuch-hello.el +@@ -27,6 +27,7 @@ + (require 'notmuch-mua) + + (declare-function notmuch-search "notmuch" (query &optional oldest-first target-thread target-line continuation)) ++(declare-function notmuch-pick "notmuch-pick" (query &optional query-context buffer-name)) + (declare-function notmuch-poll "notmuch" ()) + + (defcustom notmuch-hello-recent-searches-max 10 +@@ -181,6 +182,14 @@ International Bureau of Weights and Measures." + (notmuch-search search notmuch-search-oldest-first nil nil + #'notmuch-hello-search-continuation)) + ++(defun notmuch-hello-pick (&optional search) ++ (interactive) ++ (unless (null search) ++ (setq search (notmuch-hello-trim search)) ++ (let ((history-delete-duplicates t)) ++ (add-to-history 'notmuch-search-history search))) ++ (notmuch-pick search)) ++ + (defun notmuch-hello-add-saved-search (widget) + (interactive) + (let ((search (widget-value +@@ -345,6 +354,7 @@ should be. Returns a cons cell `(tags-per-line width)'." + (define-key map (kbd "") 'widget-backward) + (define-key map "m" 'notmuch-mua-new-mail) + (define-key map "s" 'notmuch-hello-search) ++ (define-key map "z" 'notmuch-hello-pick) + map) + "Keymap for \"notmuch hello\" buffers.") + (fset 'notmuch-hello-mode-map notmuch-hello-mode-map) +diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el +index d315f76..b88bb80 100644 +--- a/emacs/notmuch-lib.el ++++ b/emacs/notmuch-lib.el +@@ -40,6 +40,10 @@ + "Showing messages and threads." + :group 'notmuch) + ++(defgroup notmuch-pick nil ++ "Showing message and thread structure." ++ :group 'notmuch) ++ + (defgroup notmuch-send nil + "Sending messages from Notmuch." + :group 'notmuch) +diff --git a/emacs/notmuch-query.el b/emacs/notmuch-query.el +index d66baea..b3c91a3 100644 +--- a/emacs/notmuch-query.el ++++ b/emacs/notmuch-query.el +@@ -22,7 +22,7 @@ + (require 'notmuch-lib) + (require 'json) + +-(defun notmuch-query-get-threads (search-terms) ++(defun notmuch-query-get-threads (search-terms &rest extra-format) + "Return a list of threads of messages matching SEARCH-TERMS. + + A thread is a forest or list of trees. A tree is a two element +@@ -33,6 +33,8 @@ is a possibly empty forest of replies. + (json-object-type 'plist) + (json-array-type 'list) + (json-false 'nil)) ++ (if extra-format ++ (setq args (append args extra-format))) + (if notmuch-show-process-crypto + (setq args (append args '("--decrypt")))) + (setq args (append args search-terms)) +diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el +index 43408d9..1adf964 100644 +--- a/emacs/notmuch-show.el ++++ b/emacs/notmuch-show.el +@@ -42,6 +42,7 @@ + (declare-function notmuch-search-next-thread "notmuch" nil) + (declare-function notmuch-search-show-thread "notmuch" nil) + (declare-function notmuch-update-tags "notmuch" (current-tags tag-changes)) ++(declare-function notmuch-pick "notmuch-pick" (query &optional query-context buffer-name)) + + (defcustom notmuch-message-headers '("Subject" "To" "Cc" "Date") + "Headers that should be shown in a message, in this order. +@@ -151,6 +152,12 @@ indentation." + (make-variable-buffer-local 'notmuch-show-elide-non-matching-messages) + (put 'notmuch-show-elide-non-matching-messages 'permanent-local t) + ++;; This is very similar to the previous variable: they should be ++;; unified. MJW ++(defvar notmuch-show-just-matches nil) ++(make-variable-buffer-local 'notmuch-show-just-matches) ++(put 'notmuch-show-just-matches 'permanent-local t) ++ + (defvar notmuch-show-indent-content t) + (make-variable-buffer-local 'notmuch-show-indent-content) + (put 'notmuch-show-indent-content 'permanent-local t) +@@ -1013,7 +1020,7 @@ a corresponding notmuch search." + 'face goto-address-mail-face)))) + + ;;;###autoload +-(defun notmuch-show (thread-id &optional parent-buffer query-context buffer-name) ++(defun notmuch-show (thread-id &optional parent-buffer query-context buffer-name just-matches) + "Run \"notmuch show\" with the given thread ID and display results. + + The optional PARENT-BUFFER is the notmuch-search buffer from +@@ -1046,8 +1053,11 @@ function is used." + + (setq notmuch-show-thread-id thread-id + notmuch-show-parent-buffer parent-buffer +- notmuch-show-query-context query-context) +- (notmuch-show-worker))) ++ notmuch-show-query-context query-context ++ notmuch-show-just-matches just-matches) ++ ++ (notmuch-show-worker) ++ (current-buffer))) + + (defun notmuch-show-worker () + (let ((inhibit-read-only t)) +@@ -1064,6 +1074,8 @@ function is used." + (append (list "\'") basic-args + (list "and (" notmuch-show-query-context ")\'")) + (append (list "\'") basic-args (list "\'"))))) ++ (if notmuch-show-just-matches ++ (setq args (append (list "--thread=none") args))) + (notmuch-show-insert-forest (notmuch-query-get-threads args)) + ;; If the query context reduced the results to nothing, run + ;; the basic query. +@@ -1158,6 +1170,8 @@ buffer is stored and re-applied after the refresh." + (define-key map (kbd "") 'notmuch-show-previous-button) + (define-key map (kbd "TAB") 'notmuch-show-next-button) + (define-key map "s" 'notmuch-search) ++ (define-key map "z" 'notmuch-pick) ++ (define-key map "Z" 'notmuch-show-pick-current-query) + (define-key map "m" 'notmuch-mua-new-mail) + (define-key map "f" 'notmuch-show-forward-message) + (define-key map "r" 'notmuch-show-reply-sender) +@@ -1565,6 +1579,11 @@ to show, nil otherwise." + (notmuch-show-mark-read) + (notmuch-show-message-adjust)) + ++(defun notmuch-show-pick-current-query () ++ "Call notmuch pick with the current query" ++ (interactive) ++ (notmuch-pick notmuch-show-thread-id notmuch-show-query-context)) ++ + (defun notmuch-show-view-raw-message () + "View the file holding the current message." + (interactive) +diff --git a/emacs/notmuch.el b/emacs/notmuch.el +index 5b4f1c5..43e77d0 100644 +--- a/emacs/notmuch.el ++++ b/emacs/notmuch.el +@@ -54,6 +54,7 @@ + + (require 'notmuch-lib) + (require 'notmuch-show) ++(require 'notmuch-pick) + (require 'notmuch-mua) + (require 'notmuch-hello) + (require 'notmuch-maildir-fcc) +@@ -272,6 +273,8 @@ For a mouse binding, return nil." + (define-key map "R" 'notmuch-search-reply-to-thread) + (define-key map "m" 'notmuch-mua-new-mail) + (define-key map "s" 'notmuch-search) ++ (define-key map "z" 'notmuch-pick) ++ (define-key map "Z" 'notmuch-search-pick-current-query) + (define-key map "o" 'notmuch-search-toggle-order) + (define-key map "c" 'notmuch-search-stash-map) + (define-key map "=" 'notmuch-search-refresh-view) +@@ -1021,6 +1024,11 @@ same relative position within the new buffer." + (notmuch-search query oldest-first target-thread target-line continuation) + (goto-char (point-min)))) + ++(defun notmuch-search-pick-current-query () ++ "Call notmuch pick with the current query" ++ (interactive) ++ (notmuch-pick notmuch-search-query-string)) ++ + (defcustom notmuch-poll-script nil + "An external script to incorporate new mail into the notmuch database. + +-- +1.7.2.3 +