# HG changeset patch # User Stefan Monnier # Date 1165219686 0 # Node ID 429f18443ca0f50036f95ff71b5eb78a88dea265 # Parent ee60f0fe10d698cb9fd55b0f22914f4739be8ee4 (sgml-font-lock-keywords-1): Fix pathological O(n^2) regexp-search by anchoring the search. diff -r ee60f0fe10d6 -r 429f18443ca0 lisp/ChangeLog --- a/lisp/ChangeLog Mon Dec 04 07:34:01 2006 +0000 +++ b/lisp/ChangeLog Mon Dec 04 08:08:06 2006 +0000 @@ -1,3 +1,8 @@ +2006-12-04 Stefan Monnier + + * textmodes/sgml-mode.el (sgml-font-lock-keywords-1): Fix pathological + O(n^2) regexp-search by anchoring the search. + 2006-12-04 Dan Nicolaescu * whitespace.el (whitespace-cleanup-internal): Use current @@ -31,7 +36,7 @@ : Add "globally" to Help string. : MESSAGE arg need not say "globally". - (menu-bar-edit-menu ): Renamed from select-and-paste. + (menu-bar-edit-menu ): Rename from select-and-paste. 2006-12-03 Liam Healy (tiny change) @@ -45,7 +50,7 @@ docstring error. (allout-yank-processing): Fix depth shift of multiple-topic so yanks work again, using allout-ascend's new option. - (allout-setup-mode-map): Extracted from allout-mode to initialize + (allout-setup-mode-map): Extract from allout-mode to initialize allout-mode-map. Call it on file load, so the mode docstring substitutions work even if allout mode has not yet been invoked. (allout-mode): Use new allout-setup-mode-map to track any keybinding @@ -191,8 +196,8 @@ 2006-11-29 J.D. Smith - * progmodes/idlwave.el (idlwave-auto-fill): Remove - paragraph-start let to prevent auto-fill giving up. + * progmodes/idlwave.el (idlwave-auto-fill): + Remove paragraph-start let to prevent auto-fill giving up. 2006-11-28 Juanma Barranquero @@ -200,8 +205,8 @@ 2006-11-27 Andreas Seltenreich - * emacs-lisp/easy-mmode.el (easy-mmode-define-navigation): Fix - interactive spec of the functions getting defined to make them + * emacs-lisp/easy-mmode.el (easy-mmode-define-navigation): + Fix interactive spec of the functions getting defined to make them work as documented. 2006-11-28 Chong Yidong diff -r ee60f0fe10d6 -r 429f18443ca0 lisp/textmodes/sgml-mode.el --- a/lisp/textmodes/sgml-mode.el Mon Dec 04 07:34:01 2006 +0000 +++ b/lisp/textmodes/sgml-mode.el Mon Dec 04 08:08:06 2006 +0000 @@ -265,7 +265,10 @@ (1 (if (match-end 2) sgml-namespace-face font-lock-function-name-face)) (2 font-lock-function-name-face nil t)) ;; FIXME: this doesn't cover the variables using a default value. - (,(concat "\\(" sgml-namespace-re "\\)\\(?::\\(" + ;; The first shy-group is an important anchor: it prevents an O(n^2) + ;; pathological case where we otherwise keep retrying a failing match + ;; against a very long word at every possible position within the word. + (,(concat "\\(?:^\\|[ \t]\\)\\(" sgml-namespace-re "\\)\\(?::\\(" sgml-name-re "\\)\\)?=[\"']") (1 (if (match-end 2) sgml-namespace-face font-lock-variable-name-face)) (2 font-lock-variable-name-face nil t))