From 9bf6d3107417ad9ba15624f4ea75f88b8d3ce944 Mon Sep 17 00:00:00 2001 From: Mark Walters Date: Sat, 3 May 2014 17:12:59 +0100 Subject: [PATCH] [PATCH] emacs: put current query as default value in notmuch-read-query --- 3b/2835dfccbaa3fbdcf2d924d86f9fcbb41ae88c | 150 ++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 3b/2835dfccbaa3fbdcf2d924d86f9fcbb41ae88c diff --git a/3b/2835dfccbaa3fbdcf2d924d86f9fcbb41ae88c b/3b/2835dfccbaa3fbdcf2d924d86f9fcbb41ae88c new file mode 100644 index 000000000..ef131ee9e --- /dev/null +++ b/3b/2835dfccbaa3fbdcf2d924d86f9fcbb41ae88c @@ -0,0 +1,150 @@ +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 084F7431FDA + for ; Sat, 3 May 2014 09:13:11 -0700 (PDT) +X-Virus-Scanned: Debian amavisd-new at olra.theworths.org +X-Spam-Flag: NO +X-Spam-Score: 2.7 +X-Spam-Level: ** +X-Spam-Status: No, score=2.7 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, + FREEMAIL_REPLY=2.499, 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 twkGEGoGPltL for ; + Sat, 3 May 2014 09:13:07 -0700 (PDT) +Received: from mail-we0-f172.google.com (mail-we0-f172.google.com + [74.125.82.172]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) + (No client certificate requested) + by olra.theworths.org (Postfix) with ESMTPS id C2C2C431FAF + for ; Sat, 3 May 2014 09:13:06 -0700 (PDT) +Received: by mail-we0-f172.google.com with SMTP id k48so73715wev.17 + for ; Sat, 03 May 2014 09:13:05 -0700 (PDT) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; + h=from:to:cc:subject:date:message-id; + bh=G1eEnXDYcUy+DtIGQ4urUkYTQML/9hoYfaPfam08HA8=; + b=OcK5zMWn8bDEx+2LblWRMsZvQDjpoPt98ctyIlOeoM0fqm4h5JsBX7lpBwNNfRymQz + iGCTkxo9jFe3XHCHX06ug2GNPmhUAGgnZG2R4e2UV5j7na/K5C+9R0FbECKrdkrE+P90 + 6NcTx/NbXJsnLFUZktV4tIX5y18sSIQ0He+PCITvvmI+yzaVdzpOQDjW9yIxwflzDQuu + /KY4MPcS2V+D88q8Ix77aGN5FCCizO174hq3ExRxLs+dwTkgJomSN3xw31pbzkN5GECY + N4xomtVFBaLWVqtAHH+nZl4VYZTLv9n1ieKQyMQ8N3sEwuEki7KIupVfBUtKd4ADKflt + facQ== +X-Received: by 10.194.189.116 with SMTP id gh20mr19383394wjc.41.1399133585456; + Sat, 03 May 2014 09:13:05 -0700 (PDT) +Received: from localhost (5751dfa2.skybroadband.com. [87.81.223.162]) + by mx.google.com with ESMTPSA id n5sm4987717wiz.1.2014.05.03.09.13.04 + for + (version=TLSv1.2 cipher=RC4-SHA bits=128/128); + Sat, 03 May 2014 09:13:04 -0700 (PDT) +From: Mark Walters +To: notmuch@notmuchmail.org +Subject: [PATCH] emacs: put current query as default value in + notmuch-read-query +Date: Sat, 3 May 2014 17:12:59 +0100 +Message-Id: <1399133579-9106-1-git-send-email-markwalters1009@gmail.com> +X-Mailer: git-send-email 1.7.10.4 +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: Sat, 03 May 2014 16:13:11 -0000 + +This adds the current query as a "default value" to +notmuch-read-qeury. The default value is available via a down-arrow as +opposed to history which is available from the up arrow. + +Note if a user presses return in the minibuffer this value is not +returned. + +The implementation is simple but notmuch-read-query could via +notmuch-search/notmuch-tree etc from any buffer so it makes sense to +put the logic extracting the current query in notmuch-read-query +rather than in each of the callers. +--- + +This is another approach to +id:1397713404-3089-1-git-send-email-markwalters1009@gmail.com which is +closer in spirit to Austin's suggestion in his reply and comments on +irc and is based on Jani's suggestion on irc. + +The basic idea is to add the current query to the completing read as a +default-value so it accessible via down-arrow. + +The implementation is slightly unnatural as the function calling +notmuch-read-query is normally the function which perform the new +search (ie the new mode) so it does not know how to extract the +current query from the current mode. Thus we put the logic to that in +notmuch-read-query rather than the caller. + +The other subtlety is that notmuch-show (and notmuch tree) have a more +complicated form for the query. In notmuch show this is thread-id and +context; notmuch-show tries the query "thread-id and context" and if +that gives no results it drops back to just "thread-id". In this +version we always return "thread-id and context" as the query. This is +not obviously correct, but not obviously wrong either. + +An alternative to putting the logic in notmuch-read-query would be to +store the query in a consistently named buffer local variable in all +the modes. If we want to show the actually run query in notmuch-show +above then this is probably the neatest solution. + + +Best wishes + +Mark + + + + + + emacs/notmuch.el | 16 +++++++++++++++- + 1 file changed, 15 insertions(+), 1 deletion(-) + +diff --git a/emacs/notmuch.el b/emacs/notmuch.el +index 6c0bc1b..1b6bde1 100644 +--- a/emacs/notmuch.el ++++ b/emacs/notmuch.el +@@ -860,6 +860,20 @@ (defun notmuch-read-query (prompt) + (concat "tag:" (notmuch-escape-boolean-term tag))) + (process-lines notmuch-command "search" "--output=tags" "*"))))) + (let ((keymap (copy-keymap minibuffer-local-map)) ++ (current-query (case major-mode ++ (notmuch-search-mode notmuch-search-query-string) ++ (notmuch-show-mode (if notmuch-show-query-context ++ (concat notmuch-show-thread-id ++ " and (" ++ notmuch-show-query-context ++ ")") ++ notmuch-show-thread-id)) ++ (notmuch-tree-mode (if notmuch-tree-query-context ++ (concat notmuch-tree-basic-query ++ " and (" ++ notmuch-tree-query-context ++ ")") ++ notmuch-tree-basic-query)))) + (minibuffer-completion-table + (completion-table-dynamic + (lambda (string) +@@ -877,7 +891,7 @@ (defun notmuch-read-query (prompt) + (define-key keymap (kbd "TAB") 'minibuffer-complete) + (let ((history-delete-duplicates t)) + (read-from-minibuffer prompt nil keymap nil +- 'notmuch-search-history nil nil))))) ++ 'notmuch-search-history current-query nil))))) + + ;;;###autoload + (put 'notmuch-search 'notmuch-doc "Search for messages.") +-- +1.7.10.4 + -- 2.26.2