GNU bug report logs -
#23407
.dir-local settings get obliterated on running a major mode function.
Previous Next
Reported by: Alan Mackenzie <acm <at> muc.de>
Date: Sat, 30 Apr 2016 10:29:02 UTC
Severity: normal
Merged with 15577
Found in version 24.3
Done: Alan Mackenzie <acm <at> muc.de>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Hello, Stefan.
Thanks for looking at my patch.
On Mon, May 02, 2016 at 12:02:11AM -0400, Stefan Monnier wrote:
> > Anyhow, I've hacked a patch together. The idea is to call
> > `hack-local-variables' from `run-mode-hooks' rather than from
> > `normal-mode'.
> Good idea.
> > + ;; delay-mode-hooks is set when `byte-compile-file' is the caller.
> > + ;; It is essential that we call `hack-local-variables' in order to
> > + ;; set up `lexical-binding', since `run-mode-hooks' is prevented
> > + ;; from doing its job.
> > + (when delay-mode-hooks
> > + (with-demoted-errors "File local-variables error: %s"
> > + (hack-local-variables 'no-mode))))
> But this seems terribly brittle. Do we care about delay-mode-hooks (as
> the code says) or about byte-compile-file (as the comment says)?
This bit of code was necessitated by:
#########################################################################
commit 3ba6b3a9c1e0565ee5f45f11a9c09702a24f8453
Author: Artur Malabarba <bruce.connor.am <at> gmail.com>
Date: Sun Apr 12 03:23:35 2015 +0100
Speed up byte-compilation and autoload generation by avoiding mode-hooks
This prevents emacs-lisp-mode-hook from being run everytime an
autoload file is generated, which can account for a fraction of
package installation time depending on the hooks the user has
configured.
* lisp/emacs-lisp/bytecomp.el (byte-compile-file): Use
* delay-mode-hooks.
* lisp/emacs-lisp/autoload.el (autoload-find-file)
(autoload-find-generated-file): Use delay-mode-hooks.
#########################################################################
if hack-local-variables isn't run, lexical-binding (for example) doesn't
get set up, and make bootstrap fails.
> If it's the former, then the comment needs to be fixed, if it's the
> latter, than we need to find some other way to tell this code what's
> going on.
I don't really understand the question. Sure, that bit of code is ugly.
But the comment both motivates ("it's `byte-compile-file''s fault") and
explains the problem (which is that `delay-mode-hooks' being set would
prevent `run-mode-hook', and thus `hack-local-variable' from running).
It is possible that other stuff might call `normal-mode' like this.
What sort of changes do you advocate for the comment (or for the code)?
> Stefan
--
Alan Mackenzie (Nuremberg, Germany).
This bug report was last modified 9 years and 73 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.