]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix point position after revert-buffer in tabulated-list mode
authorEli Zaretskii <eliz@gnu.org>
Sun, 27 Oct 2019 15:07:47 +0000 (17:07 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sun, 27 Oct 2019 15:07:47 +0000 (17:07 +0200)
* 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)

lisp/emacs-lisp/tabulated-list.el

index 66a859f56ced22db2f3b01bc8f0c989ec2e8f93f..88e79174bfcdf7dd628a54ff9c5c16e7d2cc3880 100644 (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)))