<div class="markdown">
<p dir="auto">On 4 Dec 2013, at 17:09, Kee Hinckley wrote:</p>

<blockquote>
<p dir="auto">On 4 Dec 2013, at 9:57, Benny Kjær Nielsen wrote:</p>

<blockquote>
<p dir="auto">The sender of the message must not be equivalent to any of the Sent Messages senders.</p>
</blockquote>

<p dir="auto">That's what I thought, but it doesn't seem to be working.</p>

<pre><code>  "m"     = ( "selectWithFilter:", "#thread-id = ${#thread-id} and from.address !=[x] $SENT.from.address" );
</code></pre>
</blockquote>

<p dir="auto">Sorry, it must be:</p>

<pre><code>"m" = ( "selectWithFilter:", "#thread-id = ${#thread-id} and from.address !=[x] \\$SENT.from.address" );
</code></pre>

<p dir="auto">The use of <code>$</code> for the universal mailbox name must be (double-)escaped to avoid it being interpreted as a variable for the format string.</p>

<blockquote>
<p dir="auto">One final question and I need to go back to my real job.</p>

<p dir="auto">Is there an internal command like:</p>

<pre><code>"displayDialog:", "from.address"
</code></pre>

<p dir="auto">for debugging current values?</p>
</blockquote>

<p dir="auto">No. I'll keep it in mind.</p>

<blockquote>
<p dir="auto">And have you ever thought about replacing the internal language with Perl/Python/Ruby/...?</p>
</blockquote>

<p dir="auto">It's not that kind of language. It is more like a domain-specific database query language. Your question could instead by: Why not use SQL? The answer is that I did try that, but I needed more control of both the language (ease of use) and the implementation (performance).</p>

<p dir="auto">The query language is only for building sets based on message values. In fact, every set of messages you see in MailMate is the result of a query (a few queries are just explicit sets of messages). Each IMAP mailbox is actually the result of a query for messages with a specific virtual <code>#source</code> header.</p>

<p dir="auto">It's extremely flexible, but when people have performance problems with several 100K messages then they are also paying the price for this flexibility (and the lack of numerous optimizations still on my todo).</p>

<p dir="auto">-- <br>
Benny</p>

</div>