changeset 58130:702ed45c4f39

(magic-mode-alist): Reduce backtracking in the HTML regexp.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Thu, 11 Nov 2004 04:52:27 +0000
parents 6f1bde62e20e
children be4a8443df49
files lisp/ChangeLog lisp/files.el
diffstat 2 files changed, 12 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed Nov 10 22:35:21 2004 +0000
+++ b/lisp/ChangeLog	Thu Nov 11 04:52:27 2004 +0000
@@ -1,5 +1,7 @@
 2004-11-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+	* files.el (magic-mode-alist): Reduce backtracking in the HTML regexp.
+
 	* textmodes/sgml-mode.el (sgml-tag-text-p): New fun.
 	(sgml-parse-tag-backward): Use it to skip spurious < or >.
 
@@ -11,8 +13,7 @@
 2004-11-10  Nick Roberts  <nickrob@snap.net.nz>
 
 	* tooltip.el: Don't require cl, comint, gud, gdb-ui for
-	compilation. The resulting compiler warnings appear to be
-	harmless.
+	compilation. The resulting compiler warnings appear to be harmless.
 
 2004-11-10  Daniel Pfeiffer  <occitan@esperanto.org>
 
@@ -69,7 +70,7 @@
 	(diary-from-outlook-gnus, diary-from-outlook-rmail): Do not use
 	interactive-p; but rather new optional argument NOCONFIRM.
 
-2004-11-09  Stefan  <monnier@iro.umontreal.ca>
+2004-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* emacs-lisp/easymenu.el (easy-menu-intern): Revert to no-downcasing.
 	(easy-menu-name-match): Revert correspondingly.
@@ -232,7 +233,7 @@
 
 	* emacs-lisp/easymenu.el (easy-menu-get-map): Fix last change.
 
-2004-11-06  Stefan  <monnier@iro.umontreal.ca>
+2004-11-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* emacs-lisp/easymenu.el (easy-menu-get-map-look-for-name): Remove.
 	(easy-menu-lookup-name): New fun to replace it.
--- a/lisp/files.el	Wed Nov 10 22:35:21 2004 +0000
+++ b/lisp/files.el	Thu Nov 11 04:52:27 2004 +0000
@@ -1866,10 +1866,14 @@
 with that interpreter in `interpreter-mode-alist'.")
 
 (defvar magic-mode-alist
-  '(;; The < comes before the groups (but the first) to reduce backtracking.
-    ;; Is there a nicer way of getting . including \n like Perl's //s?
+  `(;; The < comes before the groups (but the first) to reduce backtracking.
     ;; TODO: UTF-16 <?xml may be preceded by a BOM 0xff 0xfe or 0xfe 0xff.
-    ("\\(?:<\\?xml\\s +[^>]*>\\)?\\s *<\\(?:!--\\(?:.\\|\n\\)*?-->\\s *<\\)*\\(?:!DOCTYPE\\s +[^>]*>\\s *<\\)?\\s *\\(?:!--\\(?:.\\|\n\\)*?-->\\s *<\\)*[Hh][Tt][Mm][Ll]" . html-mode)
+    (,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)")
+	     (comment-re (concat "\\(?:!--" incomment-re "*-->\\s *<\\)")))
+	(concat "\\(?:<\\?xml\\s +[^>]*>\\)?\\s *<"
+		comment-re "*"
+		"\\(?:!DOCTYPE\\s +[^>]*>\\s *<\\s *" comment-re "*\\)?"
+		"[Hh][Tt][Mm][Ll]")) . html-mode)
     ;; These two must come after html, because they are more general:
     ("<\\?xml " . xml-mode)
     ("\\s *<\\(?:!--\\(?:.\\|\n\\)*?-->\\s *<\\)*!DOCTYPE " . sgml-mode)