Amadeusz Żołnowski <aide...@aidecoe.name> writes: > Not necessarily. The recommended setup of notmuch for afew is that > "notmuch new" tags messages with "new" tag only. Then afew processes all > messages with "new" tag. So if it is a spam, then it gets "new" removed > and "spam" added. A spam message at any time doesn't have "unread" tag > assigned which should explain this behaviour. So the problem is to be > fixed on the afew side.
Let's just make sure I understand: Your mail starts out like this: Path: spam/new/nnn.MnnnPnnnQnRn.machine Tags: new Then you run afew, and afew runs notmuch tag -new +spam <message-ID> You are saying that that even though maildir.synchronize_tags is true, you end up with: Path: spam/new/nnn.MnnnPnnnQnRn.machine Tags: spam That's a little surprising, because the next time you run "notmuch new," I would have expected it to add the unread flag based on the pathname. But, I suppose it might make sense for notmuch to special-case that flag. In other words, if notmuch new finds a file called: spam/new/nnn.MnnnPnnnQnRn.machine:2, Then it will add the unread tag to the Xapian database. But maybe if it finds a file in the new folder it doesn't add the unread flag. But why does notmuch_message_tags_to_maildir_flag() then feel the need to rename the file when muchsync calls it. Muchsync should ideally behave exactly the same as the notmuch tag command. Specifically, when muchsync receives a new file from the server, it does the following: 1. create file in same directory as the server (presumably spam/new) 2. Call the following functions on this file: notmuch_database_add_message() notmuch_message_freeze() notmuch_message_remove_all_tags() notmuch_message_add_tag() for each tag in new.tags if (synchronize_tags) notmuch_message_tags_to_maildir_flag() notmuch_message_thaw() 3. get the current tags of the message from the server (presumably just spam) 4. Call the following functions on the Message-ID: notmuch_message_freeze() notmuch_message_remove_all_tags() notmuch_message_add_tag() for each tag sent *by the server* if (synchronize_tags) notmuch_message_tags_to_maildir_flag() notmuch_message_thaw() So what I'm wondering is how this is any different from what is already happening on the server. "notmuch new" should be doing what muchsync does in step 2, and afew (via "notmuch tag") should be doing what muchsync does in step 4. Yet somehow you are saying that on the server the file stays in spam/new/, while on the client muchsync's actions cause the file to move to spam/cur/? So that means there's still something I don't really understand--possibly the series of notmuch library calls happening server side (which I should then maybe emulate client side). None of this is super serious, beyond a one-time extra cost, but I like to understand things thoroughly, particularly when writing software that manipulates critical data like mail... It there any possibility that new.tags has a different setting on your client and server machines? Thanks, David _______________________________________________ notmuch mailing list firstname.lastname@example.org http://notmuchmail.org/mailman/listinfo/notmuch