[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Gmail’s \Muted label in Gnus
From: |
Nikolai Weibull |
Subject: |
Re: Gmail’s \Muted label in Gnus |
Date: |
Sat, 9 Jan 2016 10:11:57 +0100 |
On Sat, Jan 9, 2016 at 9:58 AM, Lars Magne Ingebrigtsen <lmi@gnus.org> wrote:
> Nikolai Weibull <now@disu.se> writes:
>
>> Has anyone written any functionality for setting Gmail’s \Muted label
>> from Gnus? I’d like to be able to mute threads in Gmail from Gnus,
>> but before I learn the inner workings of Gnus and nnimap I figured I’d
>> check if anyone’s already done the work.
>
> I don't think anybody's implemented support for \Muted in Gnus, but it
> sounds like a useful thing to have.
I actually figured it out, sort of. I’m sure there are better ways of
handling it, perhaps the + and - should be sent using
nnimap-send-command, but this, at least, works. As only muting part
of a thread will confuse Gmail, we select all articles belonging to a
thread that in one way or another has been included by
gnus-summary-work-articles. Then we add \Muted and remove \Inbox.
Finally, to make it clear that something happened in Gnus, we kill the
thread. It’d perhaps be better if we could use a custom mark, but I
couldn’t figure out if that was OK to do.
(defun now-gnus-summary-mute-articles (n)
(interactive "P")
(let (articles root-articles)
(dolist (article (gnus-summary-work-articles n))
(unless (member article articles)
(let ((parent (gnus-summary-article-parent article)))
(while parent
(setq article parent)
(setq parent (gnus-summary-article-parent parent))))
(push article root-articles)
(if articles
(nconc articles (gnus-summary-articles-in-thread article))
(setq articles (gnus-summary-articles-in-thread article)))))
(sort articles '<)
(when (and articles
(with-current-buffer (nnimap-buffer)
(and (nnimap-command "UID STORE %s +X-GM-LABELS (\\Muted)"
(nnimap-article-ranges articles))
(nnimap-command "UID STORE %s -X-GM-LABELS (\\Inbox)"
(nnimap-article-ranges articles)))))
(apply 'gnus-summary-remove-process-mark articles)
(dolist (article (nreverse root-articles))
(gnus-summary-goto-subject article)
(gnus-summary-kill-thread)))))