Dear Ángel, all, Thanks a lot for your very precise answer. Is there a way to directly contribute to those pages?https://help.gnome.org/users/evolution/unstable/mail-searching.html.en https://help.gnome.org/users/evolution/unstable/mail-search-folders-add.html.en https://help.gnome.org/users/evolution/unstable/mail-search-folders-conditions.html.en Best regards, --Martin On 10/28/18 12:09 AM, Ángel wrote:
On 2018-10-25 at 18:50 +0200, Martin Monperrus wrote:Hi all, I don't understand the following configuration option for search folders (https://wiki.gnome.org/Apps/Evolution/Search): Include threads:Where can I find a one-sentence description of each option?Hello Martin Thanks for your question. The obvious places to find this would be on one of these locations: https://help.gnome.org/users/evolution/unstable/mail-searching.html.en https://help.gnome.org/users/evolution/unstable/mail-search-folders-add.html.en https://help.gnome.org/users/evolution/unstable/mail-search-folders-conditions.html.en But as they don't mention this piece at all, I will attempt to give my own understanding of this setting. First of all, we need to take into account that email can be grouped in threads based on the reply-to relationship.¹ For example, we have your email, this reply to you, and eg. a future email by André replying to this one, plus another of Milan replying to that one. These four emails would be in the same thread (we could call it the "Option for search folder" thread, but emails on one thread may have completely different subjects). When searching, it may be useful to have some context, not just the emails that exactly match your search (this setting is available both for advanced search and search folders). So, suppose you searched for all my emails. Which mails from that thread would show, depending on this setting?i) NoneOnly the emails that match the search would match, ie. just my email.ii) All relatedAll emails in the same thread are included. In the example thread, all the four emails would show as results, even if only this one would exactly match the From: condition you set.iii) RepliesThe result includes the email that match the rest of the query, as well as all replies descendant of that email. In the example thread, it would return three emails: my message and replies by André and Milan.iv) Replies and parentsThe result includes the email that match the rest of the query, as well as all parent emails and all replies descendant of that email. However, siblings and their offspring are not included. In the example thread, all four messages would be included, but if someone else also replied to your original email, that reply would not be included.v) No reply or parentThe message will only be shown if it is not replying to anyone and there is no reply to it, either. The other options only augment the result set based on the thread, but this is one a bit different, as it restricts the result to only messages that are not part of a thread. In the example thread, nothing would be returned. Best regards --- ¹ This is constructed in the In-Reply-To and References headers. Microsoft, its own header. Note: that wiki page is misformatted, it probably stopped being rendered as it used to be at a GNOME wiki update and nobody noticed. I can work on fixing it, but my user (ÁngelGonzález) lacks write rights there, so someone would need to give it edit rights (I'm quite sure that someone had already marked it as "not a bot" a long time ago, but apparently it got lost). Implementation details: ----------------------- These GUI options map to the _filter_threading_t enum defined on src/e-util/e-filter-rule.h /* threading, if the context supports it */ enum _filter_threading_t { E_FILTER_THREAD_NONE, /* don't add any thread matching */ E_FILTER_THREAD_ALL, /* add all possible threads */ E_FILTER_THREAD_REPLIES, /* add only replies */ E_FILTER_THREAD_REPLIES_PARENTS, /* replies plus parents */ E_FILTER_THREAD_SINGLE /* messages with no replies or parents */ }; which themselves map to the match-threads options "all", "replies", "replies_parents" and "single" in the internal language. Finally translated in evolution-data-server src/camel/camel-folder-search.c to ids 0 to 4 and applied accordingly (see function folder_search_match_threads) I am attaching a small patch that adds some comments to folder_search_match_threads. Kind regards |