emacs: Fix search refresh when on the last line of a search buffer.
authorCarl Worth <cworth@cworth.org>
Wed, 10 Mar 2010 19:07:58 +0000 (11:07 -0800)
committerCarl Worth <cworth@cworth.org>
Wed, 10 Mar 2010 19:07:58 +0000 (11:07 -0800)
We currently allow the cursor to be positioned on the "End of search
results" line after the last thread in a search buffer. When
refreshing on this line, there's no thread ID to be used as the
target.

Previously, a refresh from this case would result in a nil thread
target, but we were also using nil to indicate that the target thread
had been found. This caused the position to be lost during refresh,
(the cursor would move from the last line in the buffer to the first).

We fix this by using a magic string of "found" rather than nil to
clearly indicate whether the target thread has actually been found.

emacs/notmuch.el

index 904272dfd9cc36b89b22d58df348eeff71cee3a4..117a365803ff76f423dc869afb9b612bb9f9798f 100644 (file)
@@ -1482,7 +1482,7 @@ This function advances the next thread when finished."
                            (insert (format " (process returned %d)" exit-status)))
                        (insert "\n")
                        (if (and atbob
-                                notmuch-search-target-thread)
+                                (not (string= notmuch-search-target-thread "found")))
                            (set 'never-found-target-thread t))))))
              (if (and never-found-target-thread
                       notmuch-search-target-line)
@@ -1515,11 +1515,10 @@ This function advances the next thread when finished."
                        (put-text-property beg (point-marker) 'notmuch-search-thread-id thread-id)
                        (put-text-property beg (point-marker) 'notmuch-search-authors authors)
                        (put-text-property beg (point-marker) 'notmuch-search-subject subject)
-                       (if (and notmuch-search-target-thread
-                                (string= thread-id notmuch-search-target-thread))
+                       (if (string= thread-id notmuch-search-target-thread)
                            (progn
                              (set 'found-target beg)
-                             (set 'notmuch-search-target-thread nil))))
+                             (set 'notmuch-search-target-thread "found"))))
                      (set 'line (match-end 0)))
                  (set 'more nil)))))
          (if found-target