how to work with entire threads

Mark Walters markwalters1009 at gmail.com
Sun Jul 21 01:49:35 PDT 2013


Hi
Vladimir Marek <Vladimir.Marek at Oracle.COM> writes:

> Hi,
>
> I would like to create the following process:
>
>  1) if I tag any message with the keyword 'kill', it means that I don't
>    want to see any message from whole thread in my inbox
>
> At the moment I do something like
>
> THREADS=$(notmuch search --output=threads tag:kill)
> [ -z "$THREADS" ] || notmuch tag -unread -- '(' $THREADS ')'
>
>  2) if there is such a 'killed' thread and it won't receive message for
> 30 days, I want to remove the kill tag from the thread
>
> That I achieved by something like
>
> N=notmuch
> KILL=$( $N search --output=threads tag:kill )                                                                                                                                                          
> if [ -n "$KILL" ]; then
>    # Then find threads which contain messages younger than 30 days
>    KILL_RECENT=$( $N search --output=threads '(' $KILL ')' and date:30days.. )
>    KILL_RECENT=${KILL_RECENT:-'*'}
>    # Then find 'kill' threads not matching those recent
>    KILL_COUNT=$( $N count --output=threads '(' $KILL ')' and not '(' $KILL_RECENT ')' )
>    if [ $KILL_COUNT -gt 0 ]; then
>       echo "Threads to remove 'kill': $KILL"
>       $N tag -kill -- $( $N search --output=threads '(' $KILL ')' and not '(' $KILL_RECENT ')' )
>    fi
> fi
>
>
>
> I was thinking if it could not be simplified. Without knowing anything about
> notmuch or xapian internals, it seems that it would be handy to change the
> search pattern to return threads. My two previous examples would then read like
>
> 1) notmuch tag -unread -- 'threads(tag:kill)'
> and
> 2) notmuch tag -kill -- 'threads(tag:kill)' and not 'threads(date:30days..)'
>
> Given that this would be possible in the first place, wouldn't it be a nice
> addition to notmuch?

Some form of general thread based search would definitely be a nice
addition. This seems to be non-trivial as we would need to parse the
query ourselves rather than leaving that to xapian.

However, I think thread bases tagging would be quite easy:

eg

notmuch tag --thread +/-tags <search-term>

to tag all messages in all threads that contain a message match the
search terms. Your first case would become notmuch tag --thread
-unread tag:kill but your second case would still not be directly
possible.

Would this be a useful addition by itself?

Best wishes

Mark



More information about the notmuch mailing list