Hello

>> @@ -455,23 +457,26 @@ (defun notmuch-hello-query-counts (query-list &rest 
>> options)
>>       #'identity
>>       (mapcar
>>        (lambda (elem)
>> -    (let ((name (notmuch-saved-search-get elem :name))
>> -          (search-query (notmuch-saved-search-get elem :query))
>> -          (message-count (prog1 (read (current-buffer))
>> +    (let* ((elem-plist (notmuch-hello-saved-search-to-plist elem))
>> +           (search-query (plist-get elem-plist :query))
>> +           (filtered-query (notmuch-hello-filtered-query
>> +                            search-query (plist-get options :filter)))
>> +           (message-count (prog1 (read (current-buffer))
>>                              (forward-line 1))))
>>        (and (or (plist-get options :show-empty-searches) (> message-count 0))
>> -           (list name (notmuch-hello-filtered-query
>> -                       search-query (plist-get options :filter))
>> -                 message-count))))
>> +           (setq elem-plist (plist-put elem-plist :query filtered-query))
>
> This technically works, but `setq' is a strange thing to see in an
> `and'.  But the problem isn't the `setq'; it's that crazy `and'.  I'd
> replace the `and' with `when', keep the `setq' and `plist-put' in the
> body, and squint a lot less at this code.

This was actually a bug on my part: the filtered query can be nil (which
is used to mean hide this search); in earlier versions having a setq
inside the `and' achieved this but obviously not in this plist form. I
have switched to the when as suggested and added a test for
filtered-query being nil.

Best wishes

Mark

Reply via email to