From 26171e02773b9b2383f412dd79d241385d2d20df Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Fri, 6 May 2016 18:58:49 +0000 Subject: [PATCH] Correct hack-local-variables change from Thu May 5 11:05:49 2016 +0000 Prevent hack-local-variables being called from the fundamental-mode mode call early in normal-mode. This fixes bug #23460 and bug #23463. * lisp/files.el (normal-mode) Replace call to fundamental-mode with calls to the things it calls, with the exception of hack-local-variables. * etc/NEWS: Add an entry to note the calling of hack-local-variables at each major mode initialization. --- etc/NEWS | 5 +++++ lisp/files.el | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/etc/NEWS b/etc/NEWS index 29559d143d..1d5d0d6458 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -155,6 +155,11 @@ These variables are for users who would like to avoid the small probability of data corruption due to techniques Emacs uses to recover in these situations. ++++ +** File local and directory local variables are now initialized each +time the major mode is set, not just when the file is first visited. +These local variables will thus not vanish on setting a major mode. + +++ ** A second dir-local file (.dir-locals-2.el) is now accepted. See the variable 'dir-locals-file-2' for more information. diff --git a/lisp/files.el b/lisp/files.el index d89b2f5258..21f7bdc7dc 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -2316,7 +2316,10 @@ not set local variables (though we do notice a mode specified with -*-.) or from Lisp without specifying the optional argument FIND-FILE; in that case, this function acts as if `enable-local-variables' were t." (interactive) - (fundamental-mode) + (kill-all-local-variables) + (unless delay-mode-hooks + (run-hooks 'change-major-mode-after-body-hook + 'after-change-major-mode-hook)) (let ((enable-local-variables (or (not find-file) enable-local-variables))) ;; FIXME this is less efficient than it could be, since both ;; s-a-m and h-l-v may parse the same regions, looking for "mode:". -- 2.39.2