]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve support of display-line-numbers in tabulated-list-mode
authorEli Zaretskii <eliz@gnu.org>
Sat, 19 Aug 2017 10:37:31 +0000 (13:37 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 19 Aug 2017 10:37:31 +0000 (13:37 +0300)
* lisp/emacs-lisp/tabulated-list.el
(tabulated-list-line-number-width): New function.
(tabulated-list-init-header, tabulated-list-print-entry): Use it.
(Bug#27895)

lisp/emacs-lisp/tabulated-list.el

index 955b664b8c5402be246887a802a9ba744f521ef2..a0a74ce7f92dec1361831bc43aca3c628491b8a4 100644 (file)
@@ -186,6 +186,17 @@ If ADVANCE is non-nil, move forward by one line afterwards."
 Populated by `tabulated-list-init-header'.")
 (defvar tabulated-list--header-overlay nil)
 
+(defun tabulated-list-line-number-width ()
+  "Return the width taken by display-line-numbers in the current buffer."
+  ;; line-number-display-width returns the value for the selected
+  ;; window, which might not be the window in which the current buffer
+  ;; is displayed.
+  (let ((cbuf-window (get-buffer-window (current-buffer))))
+    (if (window-live-p cbuf-window)
+        (with-selected-window cbuf-window
+          (+ (line-number-display-width) 2))
+      4)))
+
 (defun tabulated-list-init-header ()
   "Set up header line for the Tabulated List buffer."
   ;; FIXME: Should share code with tabulated-list-print-col!
@@ -195,7 +206,7 @@ Populated by `tabulated-list-init-header'.")
                        keymap ,tabulated-list-sort-button-map))
        (cols nil))
     (if display-line-numbers
-        (setq x (+ x (line-number-display-width) 2)))
+        (setq x (+ x (tabulated-list-line-number-width))))
     (push (propertize " " 'display `(space :align-to ,x)) cols)
     (dotimes (n (length tabulated-list-format))
       (let* ((col (aref tabulated-list-format n))
@@ -413,7 +424,7 @@ of column descriptors."
        (ncols (length tabulated-list-format))
        (inhibit-read-only t))
     (if display-line-numbers
-        (setq x (+ x (line-number-display-width) 2)))
+        (setq x (+ x (tabulated-list-line-number-width))))
     (if (> tabulated-list-padding 0)
        (insert (make-string x ?\s)))
     (let ((tabulated-list--near-rows ; Bind it if not bound yet (Bug#25506).