Subject: Incorrect Gnus summary line number after toggle-thread and limiting

From: Pankaj Jangid <[email-masked]>
Date: Wed, 16 Dec 2020 18:54:55 +0530

Tags: patch

Set summary line format to display line number. Something like this,

(setq gnus-summary-line-format
      "%4P %U%R%z %-16&user-date; %(%[%4L:%*%-23,23f%]%) %B%s\n"

This will display line number in the first column.

Start Gnus and enter any group with few emails in it (better if there
are threads in it).

Invoke T-T (gnus-summary-toggle-threads) or any of the limiting
functions like /-/ (gnus-summary-limit-to-subject). These calls invoke
gnus-summary-prepare function.

And every time gnus-summary-prepare is invoked it starts increamenting
line-number from the previous max.

The result is that, on each refresh the line number keep on
increasing. And showing incorrect values.

I have moved these two lines from gnus-summary-read-group-1 to
gnus-summary-prepare function.

    (when (boundp 'gnus-pick-line-number)
      (setq gnus-pick-line-number 0))

This fixes the issue. Unless there are side-effects that I am unaware
of.

In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.5, cairo version 1.16.0)
 of 2020-12-16 built on lt
Repository revision: fda9a2bbfd3adcce046c03bee72ba848c61a3e29
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12004000
System Description: Debian GNU/Linux 10 (buster)

Configured using:
 'configure --prefix=/home/pankaj/.local'

diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 9488b32487..16152e252a 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -4100,8 +4100,6 @@ gnus-summary-read-group-1
      ;; The group was successfully selected.
      (t
       (gnus-set-global-variables)
-      (when (boundp 'gnus-pick-line-number)
-	(setq gnus-pick-line-number 0))
       (when (boundp 'spam-install-hooks)
 	(spam-initialize))
       ;; Save the active value in effect when the group was entered.
@@ -4226,6 +4224,8 @@ gnus-summary-prepare
 	  gnus-newsgroup-data-reverse nil)
     (gnus-run-hooks 'gnus-summary-generate-hook)
     ;; Generate the buffer, either with threads or without.
+    (when (boundp 'gnus-pick-line-number)
+      (setq gnus-pick-line-number 0))
     (when gnus-newsgroup-headers
       (gnus-summary-prepare-threads
        (if gnus-show-threads