emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 74846b8: Don't unhide first thread if entering without selecting


From: Lars Ingebrigtsen
Subject: master 74846b8: Don't unhide first thread if entering without selecting article
Date: Sun, 24 Oct 2021 14:45:10 -0400 (EDT)

branch: master
commit 74846b8d3092466ee9e3dd1336b452a0eb50a5b3
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Don't unhide first thread if entering without selecting article
    
    * lisp/gnus/gnus-sum.el (gnus-summary-first-unread-subject)
    (gnus-summary-first-unseen-subject)
    (gnus-summary-first-unseen-or-unread-subject): Use it.
    (gnus-summary--goto-and-possibly-unhide): New function -- don't
    unhide the first thread unless necessary (bug#51344).
---
 lisp/gnus/gnus-sum.el | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index ab8c578..f7385d1 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -8064,9 +8064,7 @@ Return nil if there are no unread articles."
 Return nil if there are no unread articles."
   (interactive nil gnus-summary-mode)
   (prog1
-      (when (gnus-summary-first-subject t)
-       (gnus-summary-show-thread)
-       (gnus-summary-first-subject t))
+      (gnus-summary--goto-and-possibly-unhide t)
     (gnus-summary-position-point)))
 
 (defun gnus-summary-next-unseen-article (&optional backward)
@@ -8100,23 +8098,27 @@ Return nil if there are no unread articles."
 Return nil if there are no unseen articles."
   (interactive nil gnus-summary-mode)
   (prog1
-      (when (gnus-summary-first-subject nil nil t)
-       (gnus-summary-show-thread)
-       (gnus-summary-first-subject nil nil t))
+      (gnus-summary--goto-and-possibly-unhide)
     (gnus-summary-position-point)))
 
+(defun gnus-summary--goto-and-possibly-unhide (&optional unread undownloaded
+                                                         unseen)
+  (let ((first (gnus-summary-first-subject unread undownloaded unseen)))
+    (if (and first
+             (not (= first (gnus-summary-article-number))))
+        (progn
+          (gnus-summary-show-thread)
+          (gnus-summary-first-subject unread undownloaded unseen))
+      first)))
+
 (defun gnus-summary-first-unseen-or-unread-subject ()
   "Place the point on the subject line of the first unseen and unread article.
 If all articles have been seen, on the subject line of the first unread
 article."
   (interactive nil gnus-summary-mode)
   (prog1
-      (unless (when (gnus-summary-first-subject nil nil t)
-               (gnus-summary-show-thread)
-               (gnus-summary-first-subject nil nil t))
-       (when (gnus-summary-first-subject t)
-         (gnus-summary-show-thread)
-         (gnus-summary-first-subject t)))
+      (unless (gnus-summary--goto-and-possibly-unhide nil nil t)
+        (gnus-summary-first-subject t))
     (gnus-summary-position-point)))
 
 (defun gnus-summary-first-article ()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]