From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.devel Subject: Re: Fontless Info Date: Sun, 24 Feb 2013 18:08:38 +0000 Message-ID: <20130224180838.GA2982@acm.acm> References: <874nh8ybnz.fsf@dimension8.tehua.net> <87mwv0zk06.fsf@thinkpad.tsdh.de> <83r4kcp95y.fsf@gnu.org> <20130219231046.GB4377@acm.acm> <87k3pz4odx.fsf@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1361729357 6111 80.91.229.3 (24 Feb 2013 18:09:17 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 24 Feb 2013 18:09:17 +0000 (UTC) Cc: Eli Zaretskii , emacs-devel@gnu.org, aidalgol@no8wireless.co.nz, Tassilo Horn To: Dmitry Gutov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Feb 24 19:09:39 2013 Return-path: Envelope-to: ged-emacs-devel@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 1U9g13-0003Xx-Tw for ged-emacs-devel@m.gmane.org; Sun, 24 Feb 2013 19:09:38 +0100 Original-Received: from localhost ([::1]:51934 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U9g0j-00032r-2G for ged-emacs-devel@m.gmane.org; Sun, 24 Feb 2013 13:09:17 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:49529) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U9g0g-00032i-Q0 for emacs-devel@gnu.org; Sun, 24 Feb 2013 13:09:15 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U9g0f-0005R0-5C for emacs-devel@gnu.org; Sun, 24 Feb 2013 13:09:14 -0500 Original-Received: from colin.muc.de ([193.149.48.1]:33600 helo=mail.muc.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U9g0e-0005Qb-Rt for emacs-devel@gnu.org; Sun, 24 Feb 2013 13:09:13 -0500 Original-Received: (qmail 48674 invoked by uid 3782); 24 Feb 2013 18:09:11 -0000 Original-Received: from acm.muc.de (pD9556B76.dip.t-dialin.net [217.85.107.118]) by colin.muc.de (tmda-ofmipd) with ESMTP; Sun, 24 Feb 2013 19:09:08 +0100 Original-Received: (qmail 6092 invoked by uid 1000); 24 Feb 2013 18:08:38 -0000 Content-Disposition: inline In-Reply-To: <87k3pz4odx.fsf@yandex.ru> User-Agent: Mutt/1.5.21 (2010-09-15) X-Delivery-Agent: TMDA/1.1.12 (Macallan) X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 8.x X-Received-From: 193.149.48.1 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:157289 Archived-At: Hello, Dmitry. On Sat, Feb 23, 2013 at 08:58:50AM +0400, Dmitry Gutov wrote: > Hey Alan, > Alan Mackenzie writes: > > This might well do the trick: > I've applied the patch, bootstrapped, and it [still] has problems with > whitespace-mode. To reproduce: > 1. Run emacs -Q > 2. Eval (add-hook 'prog-mode 'whitespace-mode) > 3. Open any .el file, for example => no syntax highligting OK, thanks. whitespace-mode disables then re-enables font lock mode. The code in define-globalized-minor-mode was recording the disable, but not the re-enable, so it thought the major mode hook had disabled font lock mode. I've amended it so that it now takes account of the re-enabling too. I think this solves the immediate problem. Here's the patch (based off the trunk of a few days ago). As always, please do a complete rebuild after applying the patch. Let me know how it goes, please. === modified file 'lisp/emacs-lisp/easy-mmode.el' *** lisp/emacs-lisp/easy-mmode.el 2013-02-15 20:01:51 +0000 --- lisp/emacs-lisp/easy-mmode.el 2013-02-24 17:53:33 +0000 *************** *** 359,366 **** (MODE-check-buffers (intern (concat global-mode-name "-check-buffers"))) (MODE-cmhh (intern (concat global-mode-name "-cmhh"))) ! (MODE-disable-in-buffer ! (intern (concat global-mode-name "-disable-in-buffer"))) (minor-MODE-hook (intern (concat mode-name "-hook"))) (disable-MODE (intern (concat "disable-" mode-name))) (MODE-major-mode (intern (concat (symbol-name mode) "-major-mode"))) --- 359,366 ---- (MODE-check-buffers (intern (concat global-mode-name "-check-buffers"))) (MODE-cmhh (intern (concat global-mode-name "-cmhh"))) ! (set-disable-MODE-in-buffer ! (intern (concat "set-disable-" global-mode-name "-in-buffer"))) (minor-MODE-hook (intern (concat mode-name "-hook"))) (disable-MODE (intern (concat "disable-" mode-name))) (MODE-major-mode (intern (concat (symbol-name mode) "-major-mode"))) *************** *** 409,431 **** (add-hook 'find-file-hook ',MODE-check-buffers) (add-hook 'change-major-mode-hook ',MODE-cmhh)) (remove-hook 'after-change-major-mode-hook ',MODE-enable-in-buffers) - (remove-hook 'change-major-mode-after-body-hook - ',MODE-enable-in-buffers) (remove-hook 'find-file-hook ',MODE-check-buffers) (remove-hook 'change-major-mode-hook ',MODE-cmhh)) ;; Go through existing buffers. (dolist (buf (buffer-list)) (with-current-buffer buf ! (if ,global-mode (,turn-on) (when ,mode (,mode -1)))))) ;; Autoloading define-globalized-minor-mode autoloads everything ;; up-to-here. :autoload-end ! ;; A function which checks whether MODE has been disabled in the major ! ;; mode hook which has just been run. ! (add-hook ',minor-MODE-hook ',MODE-disable-in-buffer) ;; List of buffers left to process. (defvar ,MODE-buffers nil) --- 409,431 ---- (add-hook 'find-file-hook ',MODE-check-buffers) (add-hook 'change-major-mode-hook ',MODE-cmhh)) (remove-hook 'after-change-major-mode-hook ',MODE-enable-in-buffers) (remove-hook 'find-file-hook ',MODE-check-buffers) (remove-hook 'change-major-mode-hook ',MODE-cmhh)) ;; Go through existing buffers. (dolist (buf (buffer-list)) (with-current-buffer buf ! (if ,global-mode ! (,turn-on) ! (when ,mode (let (,disable-MODE) (,mode -1))))))) ;; Autoloading define-globalized-minor-mode autoloads everything ;; up-to-here. :autoload-end ! ;; A function which checks whether MODE has been left disabled ! ;; in the major mode hook which has just been run. ! (add-hook ',minor-MODE-hook ',set-disable-MODE-in-buffer) ;; List of buffers left to process. (defvar ,MODE-buffers nil) *************** *** 439,445 **** (if ,mode (,mode -1)) (unless (eq ,MODE-major-mode major-mode) (if ,mode ! (progn (,mode -1) (,turn-on)) (,turn-on)))) --- 439,445 ---- (if ,mode (,mode -1)) (unless (eq ,MODE-major-mode major-mode) (if ,mode ! (let (,disable-MODE) (,mode -1) (,turn-on)) (,turn-on)))) *************** *** 457,469 **** (add-to-list ',MODE-buffers (current-buffer)) (add-hook 'post-command-hook ',MODE-check-buffers)) (put ',MODE-cmhh 'definition-name ',global-mode) ! ;; disable-MODE is set in MODE-disable-in-buffer and cleared by ! ;; kill-all-local-variables. (defvar-local ,disable-MODE nil) ! (defun ,MODE-disable-in-buffer () ! (unless ,mode ! (setq ,disable-MODE t))) ! (put ',MODE-disable-in-buffer 'definition-name ',global-mode)))) ;;; ;;; easy-mmode-defmap --- 457,468 ---- (add-to-list ',MODE-buffers (current-buffer)) (add-hook 'post-command-hook ',MODE-check-buffers)) (put ',MODE-cmhh 'definition-name ',global-mode) ! ;; disable-MODE is set/cleared in set-disable-MODE-in-buffer ! ;; and cleared by kill-all-local-variables. (defvar-local ,disable-MODE nil) ! (defun ,set-disable-MODE-in-buffer () ! (setq ,disable-MODE (not ,mode))) ! (put ',set-disable-MODE-in-buffer 'definition-name ',global-mode)))) ;;; ;;; easy-mmode-defmap -- Alan Mackenzie (Nuremberg, Germany).