ruler-mode: Improve compatibility with text-scale (bug#75168)

* lisp/ruler-mode.el (ruler-mode-ruler): Use pixelwise line-number
display width for alignment with line numbers.
This commit is contained in:
Arsen Arsenović 2025-01-18 16:40:29 +01:00 committed by Eli Zaretskii
parent 63a322b616
commit 311b3f70f5

View file

@ -632,12 +632,7 @@ Optional argument PROPS specifies other text properties to apply."
(let* ((w (ruler-mode-text-scaled-window-width))
(m (window-margins))
(f (window-fringes))
(i (if display-line-numbers
;; FIXME: ruler-mode relies on I being an integer, so
;; the column numbers might be slightly off if the
;; line-number face is customized.
(round (line-number-display-width 'columns))
0))
(i 0)
(j (ruler-mode-text-scaled-window-hscroll))
;; Setup the scrollbar, fringes, and margins areas.
(lf (ruler-mode-space
@ -745,6 +740,12 @@ Optional argument PROPS specifies other text properties to apply."
(dolist (p (nreverse props))
(add-text-properties (nth 0 p) (nth 1 p) (nthcdr 2 p) ruler-str))
;; Attach an alignment indent.
(if display-line-numbers
(setq ruler-str
(concat (ruler-mode-space `(,(line-number-display-width t)))
ruler-str)))
;; Return the ruler propertized string. Using list here,
;; instead of concat visually separate the different areas.
(if (nth 2 (window-fringes))