[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Redundant (harmful) duplication of run-hooks in define-globalized-mi
From: |
Alan Mackenzie |
Subject: |
Re: Redundant (harmful) duplication of run-hooks in define-globalized-minor-mode [patch] |
Date: |
Tue, 15 Jan 2013 14:08:55 +0000 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Hi, Stefan.
On Mon, Jan 14, 2013 at 09:12:15PM -0500, Stefan Monnier wrote:
> > ! (add-hook 'after-change-major-mode-hook
> > ! ',MODE-enable-in-buffers)
> > ! (add-hook 'change-major-mode-after-body-hook
> > ',MODE-enable-in-buffers)
> > (add-hook 'find-file-hook ',MODE-check-buffers)
> > (add-hook 'change-major-mode-hook ',MODE-cmhh))
> > --- 399,407 ----
> > ;; Setup hook to handle future mode changes and new buffers.
> > (if ,global-mode
> > (progn
> > ! (add-hook ',(if call-before-hook
> > ! 'change-major-mode-after-body-hook
> > ! 'after-change-major-mode-hook)
> I think we first need to understand why we currently use both.
This is difficult. The change was in revision 106202. Previously,
MODE-enable-in-buffers was simply add-hooked into
after-change-major-mode-hook. The relevant ChangeLog entry runs:
+ 2011-10-27 Chong Yidong <address@hidden>
+
+ * subr.el (change-major-mode-after-body-hook): New hook.
+ (run-mode-hooks): Run it.
+
+ * emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Use
+ change-major-mode-before-body-hook.
+
+ * simple.el (fundamental-mode):
+ * emacs-lisp/derived.el (define-derived-mode): Revert 2010-04-28
+ change introducing fundamental-mode-hook.
+
The new hook change-major-mode-after-body-hook came into existence after
a naming competition in the thread starting at:
From: Christoph Scholtes <address@hidden>
To: address@hidden
Subject: Fundamental mode vs. special mode
Date: Sat, 22 Oct 2011 14:13:03 -0600
Message-ID: <address@hidden>
That thread mainly discussed the propriety of fundamental-mode-hook, and
prompted Yidong to remove it, putting change-major-mode-after-body-hook
in its place. Here is his email proposing this:
> I propose to remove the fundamental-mode-hook variable introduced in
> that change, and introduce `run-mode-hooks-hook'[*], which
> `run-mode-hooks' runs before all the other hooks. Then minor modes
> can use `run-mode-hooks-hook', and the "turning off global modes"
> feature will be available to non-derived modes.
[*] renamed to `change-major-mode-after-body-hook' before
implementation.
> Also, the MODE-enable-in-buffers function should enable the mode only
> once, normally, even if called via both hooks.
I think that's true. My problem is that font-lock-mode is being called
too soon, before the mode has been fully set up by the major mode hook.
That first call of f-l-m sets up font-lock-keywords to include entries
for fontifying "doc comments". A buffer local variable specifies what
sort of doc comments.
It has to be admitted that the CC Mode code here isn't totally correct;
a complete solution to this bug probably involves making
font-lock-keywords buffer local when doc comments are specified. I
don't want to make this change (which would be somewhat involved) before
Emacs 24.3. ;-( Postponing `font-lock-mode' until after the mode hook
seems a safer bet at the moment.
> So if you see a problem, maybe it's because (eq ,MODE-major-mode
> major-mode) is not true the second time around, i.e. because
> `major-mode' has changed between the two hooks. Is that the case?
> If so, why?
> Stefan
--
Alan Mackenzie (Nuremberg, Germany).
- Redundant (harmful) duplication of run-hooks in define-globalized-minor-mode, Alan Mackenzie, 2013/01/13
- Re: Redundant (harmful) duplication of run-hooks in define-globalized-minor-mode, Dmitry Gutov, 2013/01/13
- Re: Redundant (harmful) duplication of run-hooks in define-globalized-minor-mode [patch], Alan Mackenzie, 2013/01/14
- emacs24/auctex bug, Camm Maguire, 2013/01/14
- Re: Redundant (harmful) duplication of run-hooks in define-globalized-minor-mode [patch], Stefan Monnier, 2013/01/14
- Re: Redundant (harmful) duplication of run-hooks in define-globalized-minor-mode [patch],
Alan Mackenzie <=
- Re: Redundant (harmful) duplication of run-hooks in define-globalized-minor-mode [patch], João Távora, 2013/01/17
- Re: Redundant (harmful) duplication of run-hooks in define-globalized-minor-mode [patch], Alan Mackenzie, 2013/01/17
- Re: Redundant (harmful) duplication of run-hooks in define-globalized-minor-mode [patch], Stefan Monnier, 2013/01/17
- Re: Redundant (harmful) duplication of run-hooks in define-globalized-minor-mode [patch], João Távora, 2013/01/18
- Re: Redundant (harmful) duplication of run-hooks in define-globalized-minor-mode [patch], Alan Mackenzie, 2013/01/18
- Re: Redundant (harmful) duplication of run-hooks in define-globalized-minor-mode [patch-2], Alan Mackenzie, 2013/01/31
- Re: Redundant (harmful) duplication of run-hooks in define-globalized-minor-mode [patch-2], Stefan Monnier, 2013/01/31