From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.help Subject: Re: UI glitch with text-scale-increase / text-scale-decrease with linum / nlinum Date: Mon, 09 Feb 2015 09:57:08 -0500 Message-ID: References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1423493901 28663 80.91.229.3 (9 Feb 2015 14:58:21 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 9 Feb 2015 14:58:21 +0000 (UTC) Cc: help-gnu-emacs@gnu.org, markus.triska@gmx.at To: Gauthier Segay Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Feb 09 15:58:20 2015 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YKpmy-0004fg-Lf for geh-help-gnu-emacs@m.gmane.org; Mon, 09 Feb 2015 15:58:16 +0100 Original-Received: from localhost ([::1]:33334 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YKpmt-0004Oz-9Q for geh-help-gnu-emacs@m.gmane.org; Mon, 09 Feb 2015 09:58:11 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:55457) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YKpm2-0003ZD-71 for help-gnu-emacs@gnu.org; Mon, 09 Feb 2015 09:57:22 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YKplx-00074f-Vv for help-gnu-emacs@gnu.org; Mon, 09 Feb 2015 09:57:18 -0500 Original-Received: from chene.dit.umontreal.ca ([132.204.246.20]:60271) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YKplx-00074V-Q3 for help-gnu-emacs@gnu.org; Mon, 09 Feb 2015 09:57:13 -0500 Original-Received: from pastel.home (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id t19Ev8Xg011917; Mon, 9 Feb 2015 09:57:09 -0500 Original-Received: by pastel.home (Postfix, from userid 20848) id B3C8C1240; Mon, 9 Feb 2015 09:57:08 -0500 (EST) In-Reply-To: (Gauthier Segay's message of "Sun, 8 Feb 2015 20:42:13 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV5212=0 X-NAI-Spam-Version: 2.3.0.9393 : core <5212> : inlines <2054> : streams <1387401> : uri <1850534> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 132.204.246.20 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:102594 Archived-At: > (global-set-key (kbd "") 'text-scale-increase) > (global-set-key (kbd "") 'text-scale-decrease) > The issue is that linum or nlinum doesn't notice the change, the line > number gutter doesn'adjust it's width. Can you test the patch below (for nlinum.el) to see if it solves your problem? Stefan diff --git a/packages/nlinum/nlinum.el b/packages/nlinum/nlinum.el index 82e274c..ca15800 100644 --- a/packages/nlinum/nlinum.el +++ b/packages/nlinum/nlinum.el @@ -1,6 +1,6 @@ ;;; nlinum.el --- Show line numbers in the margin -*- lexical-binding: t -*- -;; Copyright (C) 2012, 2014 Free Software Foundation, Inc. +;; Copyright (C) 2012, 2014, 2015 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: convenience @@ -54,6 +54,7 @@ Linum mode is a buffer-local minor mode." :lighter nil ;; (" NLinum" nlinum--desc) (jit-lock-unregister #'nlinum--region) (remove-hook 'window-configuration-change-hook #'nlinum--setup-window t) + (remove-hook 'text-scale-mode #'nlinum--setup-window t) (remove-hook 'after-change-functions #'nlinum--after-change t) (kill-local-variable 'nlinum--line-number-cache) (remove-overlays (point-min) (point-max) 'nlinum t) @@ -63,6 +64,7 @@ Linum mode is a buffer-local minor mode." ;; FIXME: Another approach would be to make the mode permanent-local, ;; which might indeed be preferable. (add-hook 'change-major-mode-hook (lambda () (nlinum-mode -1))) + (add-hook 'text-scale-mode #'nlinum--setup-window nil t) (add-hook 'window-configuration-change-hook #'nlinum--setup-window nil t) (add-hook 'after-change-functions #'nlinum--after-change nil t) (jit-lock-register #'nlinum--region t)) @@ -71,14 +73,24 @@ Linum mode is a buffer-local minor mode." (defun nlinum--face-height (face) (aref (font-info (face-font face)) 2)) +(defun nlinum--face-width (face) ;New info only in Emacs>=25. + (let ((fi (font-info (face-font face)))) + (when (> (length fi) 11) + (let ((width (aref info 11))) + (if (<= width 0) + (aref info 10) + width))))) + (defun nlinum--setup-window () (let ((width (if (display-graphic-p) (ceiling - ;; We'd really want to check the widths rather than the - ;; heights, but it's a start. - (/ (* nlinum--width 1.0 - (nlinum--face-height 'linum)) - (frame-char-height))) + (let ((width (nlinum--face-width 'linum))) + (if width + (/ (* nlinum--width 1.0 width) + (frame-char-width)) + (/ (* nlinum--width 1.0 + (nlinum--face-height 'linum)) + (frame-char-height))))) nlinum--width))) (set-window-margins nil (if nlinum-mode width) (cdr (window-margins)))))