]> git.eshelyaron.com Git - emacs.git/commitdiff
Put files in mhtml-mode when they have <!DOCTYPE, case-insensitive
authorDaniel Martín <mardani29@yahoo.es>
Sat, 19 Sep 2020 17:15:48 +0000 (19:15 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sat, 19 Sep 2020 17:15:48 +0000 (19:15 +0200)
* lisp/files.el (magic-fallback-mode-alist): Match "DOCTYPE" in a
case-insensitive way before putting files in mhtml-mode. See
https://html.spec.whatwg.org/multipage/syntax.html#the-doctype for the
standard reference.
* test/lisp/files-tests.el (files-test-magic-mode-alist-doctype): Add
a test (bug#43511).

lisp/files.el
test/lisp/files-tests.el

index 07d66c9d3841f0313abe3abc6386018dde07f9ea..98de93c869380a924dfa10ee195ef7200c6d2bab 100644 (file)
@@ -3067,7 +3067,7 @@ If FUNCTION is nil, then it is not called.  (That is a way of saying
                "\\(?:!DOCTYPE[ \t\r\n]+[^>]*>[ \t\r\n]*<[ \t\r\n]*" comment-re "*\\)?"
                "[Hh][Tt][Mm][Ll]"))
      . mhtml-mode)
-    ("<!DOCTYPE[ \t\r\n]+[Hh][Tt][Mm][Ll]" . mhtml-mode)
+    ("<![Dd][Oo][Cc][Tt][Yy][Pp][Ee][ \t\r\n]+[Hh][Tt][Mm][Ll]" . mhtml-mode)
     ;; These two must come after html, because they are more general:
     ("<\\?xml " . xml-mode)
     (,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)")
index 5b2f5fd6f0f1dd958aff603f855a9f3c4a8b7515..b73eac28174a5173601a3be2fb8d2a6761becbc3 100644 (file)
@@ -1365,5 +1365,17 @@ See <https://debbugs.gnu.org/36401>."
   (should (equal (parse-colon-path "/foo//bar/baz")
                  '("/foo/bar/baz/"))))
 
+(ert-deftest files-test-magic-mode-alist-doctype ()
+  "Test that DOCTYPE and variants put files in mhtml-mode."
+  (with-temp-buffer
+    (goto-char (point-min))
+    (insert "<!DOCTYPE html>")
+    (normal-mode)
+    (should (eq major-mode 'mhtml-mode))
+    (erase-buffer)
+    (insert "<!doctype html>")
+    (normal-mode)
+    (should (eq major-mode 'mhtml-mode))))
+
 (provide 'files-tests)
 ;;; files-tests.el ends here