X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch.el;h=73f0296349ee0b695a32fcb683bb54a8b15e98e8;hp=cedbdb330568f2a412106e4e6e4e0c2629d61e55;hb=d4c4318fb95ba2ed86823389cf82b11a2bcae073;hpb=fa226a7a10ba95f8d8a7ff92dbfc44f6404d9d4d diff --git a/notmuch.el b/notmuch.el index cedbdb33..73f02963 100644 --- a/notmuch.el +++ b/notmuch.el @@ -112,13 +112,37 @@ (error (buffer-substring beg end)) )))))) +(defun notmuch-search-set-tags (tags) + (save-excursion + (end-of-line) + (re-search-backward "(") + (forward-char) + (let ((beg (point)) + (inhibit-read-only t)) + (re-search-forward ")") + (backward-char) + (let ((end (point))) + (delete-region beg end) + (insert (mapconcat 'identity tags " ")))))) + +(defun notmuch-search-get-tags () + (save-excursion + (end-of-line) + (re-search-backward "(") + (let ((beg (+ (point) 1))) + (re-search-forward ")") + (let ((end (- (point) 1))) + (split-string (buffer-substring beg end)))))) + (defun notmuch-search-add-tag (tag) (interactive "sTag to add: ") - (notmuch-search-call-notmuch-process "tag" (concat "+" tag) (concat "thread:" (notmuch-search-find-thread-id)))) + (notmuch-search-call-notmuch-process "tag" (concat "+" tag) (concat "thread:" (notmuch-search-find-thread-id))) + (notmuch-search-set-tags (delete-dups (sort (cons tag (notmuch-search-get-tags)) 'string<)))) (defun notmuch-search-remove-tag (tag) (interactive "sTag to remove: ") - (notmuch-search-call-notmuch-process "tag" (concat "-" tag) (concat "thread:" (notmuch-search-find-thread-id)))) + (notmuch-search-call-notmuch-process "tag" (concat "-" tag) (concat "thread:" (notmuch-search-find-thread-id))) + (notmuch-search-set-tags (delete tag (notmuch-search-get-tags)))) (defun notmuch-search-archive-thread () (interactive)