From dff76c18cce008747c917a3e5f79d242338c7884 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 8 Jul 2014 15:33:37 -0400 Subject: [PATCH] * lisp/linum.el (linum--face-height): New function. (linum-update-window): Use it to adjust margin to linum's width. Fixes: debbugs:17813 --- lisp/ChangeLog | 3 +++ lisp/linum.el | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6dbd14f6a48..0158ce91aea 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2014-07-08 Stefan Monnier + * 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. diff --git a/lisp/linum.el b/lisp/linum.el index bbf7ebec399..b13bd8dbbb6 100644 --- a/lisp/linum.el +++ b/lisp/linum.el @@ -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) -- 2.39.5