From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id B1440431FAF for ; Sat, 14 Apr 2012 13:49:11 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: -2.3 X-Spam-Level: X-Spam-Status: No, score=-2.3 tagged_above=-999 required=5 tests=[RCVD_IN_DNSWL_MED=-2.3] 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 9lKSyBEFQf0w for ; Sat, 14 Apr 2012 13:49:09 -0700 (PDT) Received: from outgoing-mail.its.caltech.edu (outgoing-mail.its.caltech.edu [131.215.239.19]) by olra.theworths.org (Postfix) with ESMTP id DD0BF431FAE for ; Sat, 14 Apr 2012 13:49:09 -0700 (PDT) Received: from fire-doxen.imss.caltech.edu (localhost [127.0.0.1]) by fire-doxen-postvirus (Postfix) with ESMTP id 7C039328031 for ; Sat, 14 Apr 2012 13:49:09 -0700 (PDT) X-Spam-Scanned: at Caltech-IMSS on fire-doxen by amavisd-new Received: from finestructure.net (unknown [76.89.193.65]) (Authenticated sender: jrollins) by fire-doxen-submit (Postfix) with ESMTP id A11D032802A for ; Sat, 14 Apr 2012 13:49:07 -0700 (PDT) Received: by finestructure.net (Postfix, from userid 1000) id 3FD2745D; Sat, 14 Apr 2012 13:49:07 -0700 (PDT) From: Jameson Graef Rollins To: Notmuch Mail Subject: [PATCH v2 2/5] emacs: allow notmuch-tag to accept string inputs and prompt for tags Date: Sat, 14 Apr 2012 13:49:07 -0700 Message-Id: <1334436547-10260-1-git-send-email-jrollins@finestructure.net> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1334429574-12918-3-git-send-email-jrollins@finestructure.net> References: <1334429574-12918-3-git-send-email-jrollins@finestructure.net> 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, 14 Apr 2012 20:49:11 -0000 notmuch-tag is extended to accept various formats of the tag changes. In particular, user prompting for tag changes is now incorporated here, so it is common for modes. The tag binary and the notmuch-{before,after}-tag-hooks are only called if tag changes is non-nil. In all cases tag-changes is returned as a list. --- This addresses Mark Walters concerns in regards to a code comment. emacs/notmuch-tag.el | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/emacs/notmuch-tag.el b/emacs/notmuch-tag.el index c25cff8..0c0fc87 100644 --- a/emacs/notmuch-tag.el +++ b/emacs/notmuch-tag.el @@ -108,18 +108,26 @@ from TAGS if present." (error "Changed tag must be of the form `+this_tag' or `-that_tag'"))))) (sort result-tags 'string<))) -(defun notmuch-tag (query &rest tag-changes) +(defun notmuch-tag (query &optional tag-changes) "Add/remove tags in TAG-CHANGES to messages matching QUERY. -TAG-CHANGES should be a list of strings of the form \"+tag\" or -\"-tag\" and QUERY should be a string containing the -search-query. +QUERY should be a string containing the search-terms. +TAG-CHANGES can take multiple forms. If TAG-CHANGES is a list of +strings of the form \"+tag\" or \"-tag\" then those are the tag +changes applied. If TAG-CHANGES is a string then it is +interpreted as a single tag change. If TAG-CHANGES is the string +\"-\" or \"+\", or null, then the user is prompted to enter the +tag changes. Note: Other code should always use this function alter tags of messages instead of running (notmuch-call-notmuch-process \"tag\" ..) directly, so that hooks specified in notmuch-before-tag-hook and notmuch-after-tag-hook will be run." ;; Perform some validation + (if (string-or-null-p tag-changes) + (if (or (string= tag-changes "-") (string= tag-changes "+") (null tag-changes)) + (setq tag-changes (notmuch-read-tag-changes tag-changes query)) + (setq tag-changes (list tag-changes)))) (mapc (lambda (tag-change) (unless (string-match-p "^[-+]\\S-+$" tag-change) (error "Tag must be of the form `+this_tag' or `-that_tag'"))) @@ -128,7 +136,9 @@ notmuch-after-tag-hook will be run." (run-hooks 'notmuch-before-tag-hook) (apply 'notmuch-call-notmuch-process "tag" (append tag-changes (list "--" query))) - (run-hooks 'notmuch-after-tag-hook))) + (run-hooks 'notmuch-after-tag-hook)) + ;; in all cases we return tag-changes as a list + tag-changes) ;; -- 1.7.9.5