emacs: add helper for tag change list manipulation
authorJani Nikula <jani@nikula.org>
Thu, 6 Sep 2012 15:32:37 +0000 (18:32 +0300)
committerDavid Bremner <bremner@debian.org>
Wed, 19 Sep 2012 11:01:59 +0000 (08:01 -0300)
Add a helper to create (and optionally reverse) a list of tag changes.

emacs/notmuch-tag.el

index 0c0fc87583ad3439c04984b8879310d72062c1ed..4fce3a9873a70100d3ef833eb717241529de66d0 100644 (file)
@@ -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)