On Fri, 09 Apr 2010, Mark Anderson wrote: > On Fri, 9 Apr 2010 11:29:20 -0500, Carl Worth <cworth@cworth.org> wrote: > > Of course, it's the same set-theoretic operation I described earlier. I > > want the set of threads having messages matching: > > > > tag:notmuch and <date-range> > > > > intersected with the set of threads having messages matching: > > > > tag:notmuch and not ("merged" or "postponed") > > > > So I've got uses cases for set-difference and intersection already. Now > > we just need some search syntax to express that. > > > > Can we just start grouping with a set:( ) or { } on the command line? > I'm guessing the parentheses are slightly easier. > > set:( tag:notmuch and <date-range> ) > isect > set:( tag:notmuch and not (tag:merged or tag:postponed) ) If we go in this direction, I think that the syntax should explicitely state the it is the set of threads and not the set of messages. So maybe something like threads:( ... ) isect threads:( ... ) > Just thinking about completeness, I wonder if there are some searches > for threads that aren't currently available. I think that having a way for searching all threads started by a certain person (e.g. project maintainer) would be very useful. For this we may need some search operator for specifying the position of the message in the thread. For example: notmuch search from:cworth and position:first. In id:4b9d4e24.0f67f10a.31e3.ffffadf7@mx.google.com, Sandra asked for something like: notmuch search not threads:( from:me and position:last ) -Michal