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

Austin Clements amdragon at MIT.EDU
Wed Jul 4 09:17:08 PDT 2012


Quoth Mark Walters on Jul 04 at  9:34 am:
> 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).

In fact, the errors will appear before the first message *until* you
reach the matched message.  I think this was the result of overzealous
rebasing.  I'm happy to fix it here for posterity (possibly by
swapping this and the next patch), though as you point out the next
patch in the series also fixes it, so I'm also happy to leave it
alone.

> 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)


More information about the notmuch mailing list