;;; linum.el --- display line numbers in the left margin -*- lexical-binding: t -*-
-;; Copyright (C) 2008-2013 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2014 Free Software Foundation, Inc.
;; Author: Markus Triska <markus.triska@gmx.at>
-;; Maintainer: FSF
+;; Maintainer: emacs-devel@gnu.org
;; Keywords: convenience
;; Version: 0.9x
(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))
(run-hooks 'linum-before-numbering-hook)
;; Create an overlay (or reuse an existing one) for each
;; line visible in this window, if necessary.
- (while (and (not (eobp)) (<= (point) limit))
+ (while (and (not (eobp)) (< (point) limit))
(let* ((str (if fmt
(propertize (format fmt line) 'face 'linum)
(funcall linum-format line)))
(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)