* lisp/linum.el (linum--face-height): New function.

(linum-update-window): Use it to adjust margin to linum's width.

Fixes: debbugs:17813
This commit is contained in:
Stefan Monnier 2014-07-08 15:33:37 -04:00
parent 78478ff636
commit dff76c18cc
2 changed files with 12 additions and 0 deletions

View file

@ -1,5 +1,8 @@
2014-07-08 Stefan Monnier <monnier@iro.umontreal.ca>
* linum.el (linum--face-height): New function (bug#17813).
(linum-update-window): Use it to adjust margin to linum's width.
* leim/quail/sisheng.el (sisheng-list): Don't bother with-case-table.
* eshell/em-smart.el (eshell-smart-scroll-window): Use
with-selected-window.

View file

@ -138,6 +138,9 @@ Linum mode is a buffer-local minor mode."
(mapc #'delete-overlay linum-available)
(setq linum-available nil))))
(defun linum--face-height (face)
(aref (font-info (face-font face)) 2))
(defun linum-update-window (win)
"Update line numbers for the portion visible in window WIN."
(goto-char (window-start win))
@ -178,6 +181,12 @@ Linum mode is a buffer-local minor mode."
(let ((inhibit-point-motion-hooks t))
(forward-line))
(setq line (1+ line)))
(when (display-graphic-p)
(setq width (ceiling
;; We'd really want to check the widths rather than the
;; heights, but it's a start.
(/ (* width 1.0 (linum--face-height 'linum))
(frame-char-height)))))
(set-window-margins win width (cdr (window-margins win)))))
(defun linum-after-change (beg end _len)