Hey, I'm trying out Gnus and the IMAP server from which I'm getting my emails is running a Sieve script that takes some actions, including setting a bunch of IMAP keywords/flags ('client' ones, not the system ones like \Seen as per https://www.rfc-editor.org/rfc/rfc3501#section-2.3.2).
When an email with these custom flags is marked as read (via 'd', gnus-summary-mark-as-read-forward) and moved to another IMAP folder (via 'B m', gnus-summary-move-article) it loses its flags. In the IMAP log (that I got with nnimap-record-commands) I can see: UID STORE 65 FLAGS.SILENT (\Seen) A quick Edebug breakpoint on nnimap-request-set-mark (where the magic seems to happen) gives the following backtrace: nnimap-request-set-mark("INBOX" (((65) set (read)) ((65) del (unexist seen forward unsend download cache save score dormant bookmark killed expire reply tick))) "$SERVER") gnus-request-set-mark("nnimap+$SERVER:INBOX" (((65) set (read)) ((65) del (unexist seen forward unsend download cache save score dormant bookmark killed expire reply tick)))) gnus-summary-push-marks-to-backend(65) gnus-summary-move-article(nil) funcall-interactively(gnus-summary-move-article nil) command-execute(gnus-summary-move-article) So the issue appears to be that gnus-summary-push-marks-to-backend calls gnus-request-set-mark with 'set: https://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/gnus/gnus-sum.el?h=emacs-28.2#n10390 Should it be 'add instead, which should preserve the set of flags? https://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/gnus/nnimap.el?h=emacs-28.2#n1243 Similarly to what marking as read does: UID STORE 67 +FLAGS.SILENT (\Seen) >From around here: https://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/gnus/gnus-sum.el?h=emacs-28.2#n12896 This patch appears to work but I'm not familiar with the code: diff --git i/lisp/gnus/gnus-sum.el w/lisp/gnus/gnus-sum.el index 3f350bffb3..a13777cd95 100644 --- i/lisp/gnus/gnus-sum.el +++ w/lisp/gnus/gnus-sum.el @@ -10390 +10390 @@ ACTION can be either `move' (the default), `crosspost' or `copy'." - (gnus-request-set-mark gnus-newsgroup-name `(((,article) set ,set) + (gnus-request-set-mark gnus-newsgroup-name `(((,article) add ,set) PS: I sent a similar email to d...@gnus.org a few days ago but it doesn't look like it went through. Apologies if it ends up duplicated.