]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix major-mode setting regression when there's a mode: cookie
authorLars Ingebrigtsen <larsi@gnus.org>
Mon, 18 Apr 2022 08:36:32 +0000 (10:36 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 18 Apr 2022 08:36:43 +0000 (10:36 +0200)
* lisp/files.el (hack-local-variables): Fix regression in setting
the major mode when there are mode: cookies in the file (bug#54993).

lisp/files.el
test/lisp/files-resources/file-mode [new file with mode: 0644]
test/lisp/files-tests.el

index 80180276a99ac5a80ad6badac206d138dd066bb5..135a6177e9c4250b7ff7390589e08fe4ca5ad700 100644 (file)
@@ -3899,7 +3899,7 @@ inhibited."
       (with-demoted-errors "Directory-local variables error: %s"
        ;; Note this is a no-op if enable-local-variables is nil.
        (hack-dir-local-variables))
-      (let ((result (append (hack-local-variables--find-variables)
+      (let ((result (append (hack-local-variables--find-variables handle-mode)
                             (hack-local-variables-prop-line))))
         (if (and enable-local-variables
                  (not (inhibit-local-variables-p)))
diff --git a/test/lisp/files-resources/file-mode b/test/lisp/files-resources/file-mode
new file mode 100644 (file)
index 0000000..92ac4c3
--- /dev/null
@@ -0,0 +1,3 @@
+Local variables:
+mode: text
+end:
index e4424f3cbedc356a7ebc194b58bb146cd4625760..f76d047f3024b70dc4c10287726381271f32b67d 100644 (file)
@@ -1814,5 +1814,12 @@ Prompt users for any modified buffer with `buffer-offer-save' non-nil."
   (should (equal (file-name-split "/foo/bar/") '("" "foo" "bar" "")))
   (should (equal (file-name-split "foo/bar/") '("foo" "bar" ""))))
 
+(ert-deftest files-test-set-mode ()
+  (find-file (ert-resource-file "file-mode"))
+  (should (eq major-mode 'text-mode))
+  (emacs-lisp-mode)
+  ;; Check that the mode cookie doesn't override the explicit setting.
+  (should (eq major-mode 'emacs-lisp-mode)))
+
 (provide 'files-tests)
 ;;; files-tests.el ends here