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