mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
emacs: allow notmuch-tag to accept string inputs and prompt for tags
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 commit is contained in:
parent
eb8feb1666
commit
97aa3c0659
1 changed files with 15 additions and 5 deletions
|
@ -108,18 +108,26 @@ from TAGS if present."
|
||||||
(error "Changed tag must be of the form `+this_tag' or `-that_tag'")))))
|
(error "Changed tag must be of the form `+this_tag' or `-that_tag'")))))
|
||||||
(sort result-tags 'string<)))
|
(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.
|
"Add/remove tags in TAG-CHANGES to messages matching QUERY.
|
||||||
|
|
||||||
TAG-CHANGES should be a list of strings of the form \"+tag\" or
|
QUERY should be a string containing the search-terms.
|
||||||
\"-tag\" and QUERY should be a string containing the
|
TAG-CHANGES can take multiple forms. If TAG-CHANGES is a list of
|
||||||
search-query.
|
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
|
Note: Other code should always use this function alter tags of
|
||||||
messages instead of running (notmuch-call-notmuch-process \"tag\" ..)
|
messages instead of running (notmuch-call-notmuch-process \"tag\" ..)
|
||||||
directly, so that hooks specified in notmuch-before-tag-hook and
|
directly, so that hooks specified in notmuch-before-tag-hook and
|
||||||
notmuch-after-tag-hook will be run."
|
notmuch-after-tag-hook will be run."
|
||||||
;; Perform some validation
|
;; 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)
|
(mapc (lambda (tag-change)
|
||||||
(unless (string-match-p "^[-+]\\S-+$" tag-change)
|
(unless (string-match-p "^[-+]\\S-+$" tag-change)
|
||||||
(error "Tag must be of the form `+this_tag' or `-that_tag'")))
|
(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)
|
(run-hooks 'notmuch-before-tag-hook)
|
||||||
(apply 'notmuch-call-notmuch-process "tag"
|
(apply 'notmuch-call-notmuch-process "tag"
|
||||||
(append tag-changes (list "--" query)))
|
(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)
|
||||||
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue