[PATCH] emacs: hello: use batch count

Tomi Ollila tomi.ollila at iki.fi
Wed Jan 23 06:13:39 PST 2013


On Wed, Jan 16 2013, Mark Walters <markwalters1009 at gmail.com> wrote:

> This modifies notmuch hello to use the new count --batch
> functionality. It should give exactly the same results as before but
> under many conditions it should be much faster. In particular it is
> much faster for remote use.
>
> The code is a little ugly as it has to do some working out of the
> query when asking the query and some when dealing with the result.
> However, the code path is exactly the same in both local and remote
> use.
> ---

Well, the code Looks Good To Me (not Bad or Ugly). Pretty straightforward
conversion.

Can we have newlines in query string^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H

Tomi

>
> It's a little ugly but seems to work and does give a useful speedup.
>
> Best wishes
>
> Mark
>
>  emacs/notmuch-hello.el |   52 +++++++++++++++++++++++++++++------------------
>  1 files changed, 32 insertions(+), 20 deletions(-)
>
> diff --git a/emacs/notmuch-hello.el b/emacs/notmuch-hello.el
> index 6db62a0..2244892 100644
> --- a/emacs/notmuch-hello.el
> +++ b/emacs/notmuch-hello.el
> @@ -381,26 +381,38 @@ The result is the list of elements of the form (NAME QUERY COUNT).
>  The values :show-empty-searches, :filter and :filter-count from
>  options will be handled as specified for
>  `notmuch-hello-insert-searches'."
> -  (notmuch-remove-if-not
> -   #'identity
> -   (mapcar
> -    (lambda (elem)
> -      (let* ((name (car elem))
> -	     (query-and-count (if (consp (cdr elem))
> -				  ;; do we have a different query for the message count?
> -				  (cons (second elem) (third elem))
> -				(cons (cdr elem) (cdr elem))))
> -	     (message-count
> -	      (string-to-number
> -	       (notmuch-saved-search-count
> -		(notmuch-hello-filtered-query (cdr query-and-count)
> -					      (or (plist-get options :filter-count)
> -						 (plist-get options :filter)))))))
> -	(and (or (plist-get options :show-empty-searches) (> message-count 0))
> -	     (list name (notmuch-hello-filtered-query
> -			 (car query-and-count) (plist-get options :filter))
> -		   message-count))))
> -    query-alist)))
> +  (with-temp-buffer
> +    (dolist (elem query-alist nil)
> +      (let ((count-query (if (consp (cdr elem))
> +			     ;; do we have a different query for the message count?
> +			     (third elem)
> +			   (cdr elem))))
> +	(insert
> +	 (notmuch-hello-filtered-query count-query
> +				       (or (plist-get options :filter-count)
> +					   (plist-get options :filter)))
> +	 "\n")))
> +
> +    (call-process-region (point-min) (point-max) notmuch-command
> +			 t t nil "count" "--batch")
> +    (goto-char (point-min))
> +
> +    (notmuch-remove-if-not
> +     #'identity
> +     (mapcar
> +      (lambda (elem)
> +	(let ((name (car elem))
> +	      (search-query (if (consp (cdr elem))
> +				 ;; do we have a different query for the message count?
> +				 (second elem)
> +			      (cdr elem)))
> +	      (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))))
> +      query-alist))))
>  
>  (defun notmuch-hello-insert-buttons (searches)
>    "Insert buttons for SEARCHES.
> -- 
> 1.7.9.1
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list