emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 26171e0: Correct hack-local-variables change from T


From: Alan Mackenzie
Subject: [Emacs-diffs] master 26171e0: Correct hack-local-variables change from Thu May 5 11:05:49 2016 +0000
Date: Fri, 06 May 2016 19:00:59 +0000

branch: master
commit 26171e02773b9b2383f412dd79d241385d2d20df
Author: Alan Mackenzie <address@hidden>
Commit: Alan Mackenzie <address@hidden>

    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 29559d1..1d5d0d6 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -156,6 +156,11 @@ 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 d89b2f5..21f7bdc 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:".



reply via email to

[Prev in Thread] Current Thread [Next in Thread]