Fix point position after revert-buffer in tabulated-list mode

* lisp/emacs-lisp/tabulated-list.el (tabulated-list-print):
Don't use count-screen-lines, as it is unreliable when lines
are truncated and the region ends before a newline (the root
cause is in vertical-motion, but is very hard to fix there).
Instead, use vertical-motion directly, as the problems with
counting/not counting the newline that ends the region are not
relevant to what we need in this function, which is simply the
number of the current window line.  (Bug#37941)
This commit is contained in:
Eli Zaretskii 2019-10-27 17:07:47 +02:00
parent 1b687e171e
commit fc0f98a8a8

View file

@ -424,7 +424,12 @@ changing `tabulated-list-sort-key'."
(setq saved-col (current-column))
(when (eq (window-buffer) (current-buffer))
(setq window-line
(count-screen-lines (window-start) (point)))))
(save-excursion
(save-restriction
(widen)
(narrow-to-region (window-start) (point))
(goto-char (point-min))
(vertical-motion (buffer-size)))))))
;; Sort the entries, if necessary.
(when sorter
(setq entries (sort entries sorter)))