diff options
author | Stefan Monnier <[email protected]> | 2006-12-04 08:08:06 +0000 |
---|---|---|
committer | Stefan Monnier <[email protected]> | 2006-12-04 08:08:06 +0000 |
commit | 9bbceb74b4d1ac225fd9a2292d287810a6c90316 (patch) | |
tree | 3d283554677a32a546f0f6a3e520c83a31a719e9 /lisp | |
parent | 2b058c727ef14a3fe205c99c0b5191820b285480 (diff) |
(sgml-font-lock-keywords-1): Fix pathological O(n^2) regexp-search by
anchoring the search.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ChangeLog | 17 | ||||
-rw-r--r-- | lisp/textmodes/sgml-mode.el | 5 |
2 files changed, 15 insertions, 7 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 86d6f6acfd..4d3e30b345 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2006-12-04 Stefan Monnier <[email protected]> + + * 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 <[email protected]> * whitespace.el (whitespace-cleanup-internal): Use current @@ -31,7 +36,7 @@ <indicate-empty-lines, case-fold-search>: Add "globally" to Help string. <case-fold-search>: MESSAGE arg need not say "globally". - (menu-bar-edit-menu <paste-from-menu>): Renamed from select-and-paste. + (menu-bar-edit-menu <paste-from-menu>): Rename from select-and-paste. 2006-12-03 Liam Healy <[email protected]> (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 <[email protected]> - * 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 <[email protected]> @@ -200,8 +205,8 @@ 2006-11-27 Andreas Seltenreich <[email protected]> - * 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 <[email protected]> diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index 6136d22e43..aa24a72487 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -265,7 +265,10 @@ Any terminating `>' or `/' is not matched.") (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)) |