emacs: add helper for tag change list manipulation

Add a helper to create (and optionally reverse) a list of tag changes.
This commit is contained in:
Jani Nikula 2012-09-06 18:32:37 +03:00 committed by David Bremner
parent 69843dd628
commit 1dc7e66ee7

View file

@ -140,6 +140,21 @@ notmuch-after-tag-hook will be run."
;; in all cases we return tag-changes as a list ;; in all cases we return tag-changes as a list
tag-changes) 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) (provide 'notmuch-tag)