Subject: bug#37941: 26.3.50; Wrong behavior when reverting a tabulated-list-mode buffer with truncated lines

From: Michał Krzywkowski <[email-masked]>
Date: Sun, 27 Oct 2019 11:02:39 +0100

When I revert a regular tabulated-list-mode buffer, the point stays the
same, and the displayed buffer boundaries remain the same as well.

However, when the entries in tabulated-list-entries contain strings that
are too long and will be truncated, reverting such buffer will scroll
the screen by one line.

To see this behavior, evaluate in emacs -Q, then type g:

  (with-current-buffer (generate-new-buffer "test")
    (require 'cl-lib)
    (tabulated-list-mode)
    (setq tabulated-list-format [("No." 5) ("Message" 10)])
    (let ((message (make-string 100 ?a)))
      (setq tabulated-list-entries
            (cl-loop for i from 1 to 100
                     collect `(,i [,(number-to-string i) ,message]))))
    (tabulated-list-init-header)
    (revert-buffer)
    (forward-line 50)
    (pop-to-buffer (current-buffer))
    (recenter))

You can also see that if the lines are not truncated, the behavior is
correct.

In GNU Emacs 26.3.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.5)
 of 2019-10-08 built on debian
Repository revision: 55dcd32ad2209dc34bfb6b713bf73be9bf4c4cb2
Windowing system distributor 'The X.Org Foundation', version 11.0.12004000
System Description:	Debian GNU/Linux 10 (buster)

--
Michał Krzywkowski
PGP: A5A7 06C4 28EF 8F64 2868 13A1 7BDE C129 F0B8 09A1