Currently, flags are synced to tags, but the reverse isn't true. If you
mark a mail as unread "the mutt way", you'll be able to find this mail
using tag:unread, however if you remove the tag unread, the flags aren't
adjusted, and it's still marked unread in mutt.
This functionality is provided by notmuch, but means that any mail has
to be synced to disc when the labels are modified, which conflicts with
the way synchronisation to disk works in mutt.
To solve this properly, it's best to just check if the changes performed
in the tags involve some flags handled by mutt, and if so, update the
header in mutt. When mutt syncs to disc, the flags will be adjusted on
disc as well.
Some remarks:
- The parsing code is currently duplicated. I'll fix this.
- The labels are currently hard-coded. It seems like notmuch doesn't
allow customisation of these labels, but mutt-kz does for unread.
- The draft and passed labels are currently ignored, as they aren't
handled by mutt.