Fix subtle problems in tabulated-list-mode with line numbers
* lisp/emacs-lisp/tabulated-list.el (tabulated-list-watch-line-number-width): Call tabulated-list-init-header instead of tabulated-list-revert. (tabulated-list-window-scroll-function): New function. (tabulated-list-mode): Put 'tabulated-list-window-scroll-function' on the buffer-local 'window-scroll-functions' list.
This commit is contained in:
parent
1f1de8e872
commit
93818eed8a
1 changed files with 13 additions and 2 deletions
|
@ -603,7 +603,16 @@ With a numeric prefix argument N, sort the Nth column."
|
|||
(let ((lnum-width (tabulated-list-line-number-width)))
|
||||
(when (not (= tabulated-list--current-lnum-width lnum-width))
|
||||
(setq-local tabulated-list--current-lnum-width lnum-width)
|
||||
(tabulated-list-revert)))))
|
||||
(tabulated-list-init-header)))))
|
||||
|
||||
(defun tabulated-list-window-scroll-function (window _start)
|
||||
(if display-line-numbers
|
||||
(let ((lnum-width
|
||||
(with-selected-window window
|
||||
(line-number-display-width 'columns))))
|
||||
(when (not (= tabulated-list--current-lnum-width lnum-width))
|
||||
(setq-local tabulated-list--current-lnum-width lnum-width)
|
||||
(tabulated-list-init-header)))))
|
||||
|
||||
;;; The mode definition:
|
||||
|
||||
|
@ -654,7 +663,9 @@ as the ewoc pretty-printer."
|
|||
;; the line-number width needs to change due to scrolling.
|
||||
(setq-local tabulated-list--current-lnum-width 0)
|
||||
(add-hook 'pre-redisplay-functions
|
||||
#'tabulated-list-watch-line-number-width nil t))
|
||||
#'tabulated-list-watch-line-number-width nil t)
|
||||
(add-hook 'window-scroll-functions
|
||||
#'tabulated-list-window-scroll-function nil t))
|
||||
|
||||
(put 'tabulated-list-mode 'mode-class 'special)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue