]> git.notmuchmail.org Git - notmuch/commitdiff
emacs: improve hidden signatures handling in notmuch-show-advance-and-archive
authorDmitry Kurochkin <dmitry.kurochkin@gmail.com>
Sun, 6 Nov 2011 09:03:59 +0000 (13:03 +0400)
committerDavid Bremner <bremner@debian.org>
Tue, 8 Nov 2011 00:38:37 +0000 (20:38 -0400)
Use `previous-single-char-property-change' instead of going
through each character by hand and testing it's visibility.  This
fixes `notmuch-show-advance-and-archive' to work for the last
message in thread with hidden signature.

emacs/notmuch-show.el
test/emacs

index 440e089e2bfdb49aea2ddabb7f3380412b91f183..b70dbfb2b95c4f07a774e8632592ef0daa5a71b6 100644 (file)
@@ -1152,17 +1152,18 @@ thread, (remove the \"inbox\" tag from each message). Also kill
 this buffer, and display the next thread from the search from
 which this thread was originally shown."
   (interactive)
 this buffer, and display the next thread from the search from
 which this thread was originally shown."
   (interactive)
-  (let ((end-of-this-message (notmuch-show-message-bottom)))
+  (let* ((end-of-this-message (notmuch-show-message-bottom))
+        (visible-end-of-this-message (1- end-of-this-message)))
+    (while (invisible-p visible-end-of-this-message)
+      (setq visible-end-of-this-message
+           (previous-single-char-property-change visible-end-of-this-message
+                                                 'invisible)))
     (cond
      ;; Ideally we would test `end-of-this-message' against the result
      ;; of `window-end', but that doesn't account for the fact that
     (cond
      ;; Ideally we would test `end-of-this-message' against the result
      ;; of `window-end', but that doesn't account for the fact that
-     ;; the end of the message might be hidden, so we have to actually
-     ;; go to the end, walk back over invisible text and then see if
-     ;; point is visible.
-     ((save-excursion
-       (goto-char (- end-of-this-message 1))
-       (notmuch-show-move-past-invisible-backward)
-       (> (point) (window-end)))
+     ;; the end of the message might be hidden.
+     ((and visible-end-of-this-message
+          (> visible-end-of-this-message (window-end)))
       ;; The bottom of this message is not visible - scroll.
       (scroll-up nil))
 
       ;; The bottom of this message is not visible - scroll.
       (scroll-up nil))
 
index 76b18e7dd4fe974e192fd017284178fc04b05aad..1aa5299af0c72247c30f4314c3d11321e2a2de99 100755 (executable)
@@ -369,7 +369,6 @@ test_emacs "(notmuch-show \"id:$id\") \
 test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest 'notmuch-show-advance-and-archive with invisible signature'
 test_expect_equal_file OUTPUT EXPECTED
 
 test_begin_subtest 'notmuch-show-advance-and-archive with invisible signature'
-test_subtest_known_broken
 message1='id:20091118010116.GC25380@dottiness.seas.harvard.edu'
 message2='id:1258491078-29658-1-git-send-email-dottedmag@dottedmag.net'
 test_emacs "(notmuch-search \"$message1 or $message2\")
 message1='id:20091118010116.GC25380@dottiness.seas.harvard.edu'
 message2='id:1258491078-29658-1-git-send-email-dottedmag@dottedmag.net'
 test_emacs "(notmuch-search \"$message1 or $message2\")