aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2019-10-27 17:07:47 +0200
committerEli Zaretskii2019-10-27 17:07:47 +0200
commitfc0f98a8a87ca48b4c3fb0e66d1bd1e2dcc9aa19 (patch)
treec39e9fe2cf0ef45672cc39dcd1d7f7ccf631354c
parent1b687e171e542165a260a9416d103a0af201e0c7 (diff)
downloademacs-fc0f98a8a87ca48b4c3fb0e66d1bd1e2dcc9aa19.tar.gz
emacs-fc0f98a8a87ca48b4c3fb0e66d1bd1e2dcc9aa19.zip
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)
-rw-r--r--lisp/emacs-lisp/tabulated-list.el7
1 files changed, 6 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/tabulated-list.el b/lisp/emacs-lisp/tabulated-list.el
index 66a859f56ce..88e79174bfc 100644
--- a/lisp/emacs-lisp/tabulated-list.el
+++ b/lisp/emacs-lisp/tabulated-list.el
@@ -424,7 +424,12 @@ changing `tabulated-list-sort-key'."
424 (setq saved-col (current-column)) 424 (setq saved-col (current-column))
425 (when (eq (window-buffer) (current-buffer)) 425 (when (eq (window-buffer) (current-buffer))
426 (setq window-line 426 (setq window-line
427 (count-screen-lines (window-start) (point))))) 427 (save-excursion
428 (save-restriction
429 (widen)
430 (narrow-to-region (window-start) (point))
431 (goto-char (point-min))
432 (vertical-motion (buffer-size)))))))
428 ;; Sort the entries, if necessary. 433 ;; Sort the entries, if necessary.
429 (when sorter 434 (when sorter
430 (setq entries (sort entries sorter))) 435 (setq entries (sort entries sorter)))