--- mutt.h.orig 2019-05-26 19:28:54 UTC +++ mutt.h @@ -242,6 +242,7 @@ enum MUTT_EXPIRED, MUTT_SUPERSEDED, MUTT_TRASH, + MUTT_THREADCOMPLETE, /* actions for mutt_pattern_comp/mutt_pattern_exec */ MUTT_AND, --- pattern.c.orig 2019-05-10 01:46:06 UTC +++ pattern.c @@ -57,6 +57,7 @@ static const struct pattern_flags } Flags[] = { + { 'a', MUTT_THREADCOMPLETE, 0, NULL }, { 'A', MUTT_ALL, 0, NULL }, { 'b', MUTT_BODY, MUTT_FULL_MSG, eat_regexp }, { 'B', MUTT_WHOLE_MSG, MUTT_FULL_MSG, eat_regexp }, @@ -1338,6 +1339,16 @@ mutt_pattern_exec (struct pattern_t *pat, pattern_exec else result = mutt_is_list_cc (pat->alladdr, h->env->to, h->env->cc); return (pat->not ^ result); + case MUTT_THREADCOMPLETE: + { static pattern_t tmp; + static short pattern_set = 0; + if(! pattern_set) { + memset (&tmp, 0, sizeof (tmp)); + tmp.op = MUTT_TAG; + pattern_set = 1; + } + return (pat->not ^ (h->env && match_threadcomplete(&tmp, flags, ctx, h->thread, 1, 1, 1, 1))); + } case MUTT_SUBSCRIBED_LIST: if (cache) {