]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid errors in forms-mode when default major mode is text
authorEli Zaretskii <eliz@gnu.org>
Sat, 12 Mar 2016 11:05:49 +0000 (13:05 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 12 Mar 2016 11:05:49 +0000 (13:05 +0200)
* lisp/forms.el (forms-mode): Bind
change-major-mode-with-file-name to nil when calling
set-visited-file-name.  (Bug#22982)

lisp/forms.el

index c141188788b533829b2e31b347c1b36002769d59..c0b48fd3b63b10bf07ef65639865e6510e4b6df5 100644 (file)
@@ -589,7 +589,14 @@ Commands:                        Equivalent keys in read-only mode:
        (make-local-variable 'forms--dynamic-text)
 
        ;; Prevent accidental overwrite of the control file and auto-save.
-       (set-visited-file-name nil)
+        ;; We bind change-major-mode-with-file-name to nil to prevent
+        ;; set-visited-file-name from calling set-auto-mode, which
+        ;; might kill all local variables and set forms-file nil,
+        ;; which will then barf in find-file-noselect below.  This can
+        ;; hapen when the user sets the default major mode that is
+        ;; different from the Fundamental mode.
+        (let (change-major-mode-with-file-name)
+          (set-visited-file-name nil))
 
        ;; Prepare this buffer for further processing.
        (setq buffer-read-only nil)