From 1dc7e66ee7186679e7669f045a4d787f36d26860 Mon Sep 17 00:00:00 2001 From: Jani Nikula Date: Thu, 6 Sep 2012 18:32:37 +0300 Subject: [PATCH] emacs: add helper for tag change list manipulation Add a helper to create (and optionally reverse) a list of tag changes. --- emacs/notmuch-tag.el | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/emacs/notmuch-tag.el b/emacs/notmuch-tag.el index 0c0fc875..4fce3a98 100644 --- a/emacs/notmuch-tag.el +++ b/emacs/notmuch-tag.el @@ -140,6 +140,21 @@ notmuch-after-tag-hook will be run." ;; in all cases we return tag-changes as a list tag-changes) +(defun notmuch-tag-change-list (tags &optional reverse) + "Convert TAGS into a list of tag changes. + +Add a \"+\" prefix to any tag in TAGS list that doesn't already +begin with a \"+\" or a \"-\". If REVERSE is non-nil, replace all +\"+\" prefixes with \"-\" and vice versa in the result." + (mapcar (lambda (str) + (let ((s (if (string-match "^[+-]" str) str (concat "+" str)))) + (if reverse + (concat (if (= (string-to-char s) ?-) "+" "-") + (substring s 1)) + s))) + tags)) + + ;; (provide 'notmuch-tag)