[PATCH 3/8] emacs: Move search-target logic to `notmuch-search-show-result'

Mark Walters markwalters1009 at gmail.com
Wed Jul 4 01:34:09 PDT 2012


On Tue, 03 Jul 2012, Austin Clements <amdragon at MIT.EDU> wrote:
> This is a simpler place to do this, since we can avoid any point
> motion and hence any save-excursions in
> `notmuch-search-process-filter', which in turn lets us put all of the
> search-target logic outside of any save-excursions.
>
> `notmuch-search-process-filter' could use some reindentation after
> this, but we're about to rewrite it entirely, so we won't bother.
> ---
>  emacs/notmuch.el |   33 +++++++++++++++------------------
>  1 file changed, 15 insertions(+), 18 deletions(-)
>
> diff --git a/emacs/notmuch.el b/emacs/notmuch.el
> index dadc6d6..4a6490a 100644
> --- a/emacs/notmuch.el
> +++ b/emacs/notmuch.el
> @@ -729,24 +729,27 @@ non-authors is found, assume that all of the authors match."
>  (defun notmuch-search-show-result (thread-id date count authors subject tags)
>    ;; Ignore excluded matches
>    (unless (eq (aref count 1) ?0)
> -    (let ((beg (point))
> +    (let ((beg (point-max))
>  	  (tags-str (mapconcat 'identity tags " ")))
> -      (dolist (format notmuch-search-result-format)
> -	(notmuch-search-insert-field (car format) (cdr format)
> -				     date count authors subject tags-str))
> -      (insert "\n")
> -      (notmuch-search-color-line beg (point) tags)
> -      (put-text-property beg (point) 'notmuch-search-thread-id thread-id)
> -      (put-text-property beg (point) 'notmuch-search-authors authors)
> -      (put-text-property beg (point) 'notmuch-search-subject subject))))
> +      (save-excursion
> +	(goto-char beg)
> +	(dolist (format notmuch-search-result-format)
> +	  (notmuch-search-insert-field (car format) (cdr format)
> +				       date count authors subject tags-str))
> +	(insert "\n")
> +	(notmuch-search-color-line beg (point) tags)
> +	(put-text-property beg (point) 'notmuch-search-thread-id thread-id)
> +	(put-text-property beg (point) 'notmuch-search-authors authors)
> +	(put-text-property beg (point) 'notmuch-search-subject subject))
> +      (when (string= thread-id notmuch-search-target-thread)
> +	(setq notmuch-search-target-thread "found")
> +	(goto-char beg)))))
>  
>  (defun notmuch-search-process-filter (proc string)
>    "Process and filter the output of \"notmuch search\""
> -  (let ((buffer (process-buffer proc))
> -	(found-target nil))
> +  (let ((buffer (process-buffer proc)))
>      (if (buffer-live-p buffer)
>  	(with-current-buffer buffer
> -	  (save-excursion
>  	    (let ((line 0)
>  		  (more t)
>  		  (inhibit-read-only t)
> @@ -763,12 +766,8 @@ non-authors is found, assume that all of the authors match."
>  			   (subject (match-string 5 string))
>  			   (tags (match-string 6 string))
>  			   (tag-list (if tags (save-match-data (split-string tags)))))
> -		      (goto-char (point-max))
>  		      (if (/= (match-beginning 1) line)
>  			  (insert (concat "Error: Unexpected output from notmuch search:\n" (substring string line (match-beginning 1)) "\n")))

Does this mean that error information now comes just before the matching
thread, rather than at the place in the thread list the error actually
occurs? This is not a complaint: just everything else looks like it is
functionally equivalent. (Maybe it is all made irrelevant by a later
patch anyway).

Best wishes

Mark


> -		      (when (string= thread-id notmuch-search-target-thread)
> -			(set 'found-target (point))
> -			(set 'notmuch-search-target-thread "found"))
>  		      (notmuch-search-show-result thread-id date count authors subject tag-list)
>  		      (set 'line (match-end 0)))
>  		  (set 'more nil)
> @@ -777,8 +776,6 @@ non-authors is found, assume that all of the authors match."
>  		  (if (< line (length string))
>  		      (setq notmuch-search-process-filter-data (substring string line)))
>  		  ))))
> -	  (if found-target
> -	      (goto-char found-target)))
>        (delete-process proc))))
>  
>  (defun notmuch-search-tag-all (&optional tag-changes)
> -- 
> 1.7.10
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list