# HG changeset patch # User Stefan Monnier # Date 1043098622 0 # Node ID 8bfc6a0f6b3ea006a9dd0289d12e1075516ce3e9 # Parent 69ba26552b66a628869010f28778095c64667785 (regexp-opt-group): Undo last change. Fix the docstring instead. diff -r 69ba26552b66 -r 8bfc6a0f6b3e lisp/ChangeLog --- a/lisp/ChangeLog Mon Jan 20 21:27:41 2003 +0000 +++ b/lisp/ChangeLog Mon Jan 20 21:37:02 2003 +0000 @@ -1,3 +1,8 @@ +2003-01-20 Stefan Monnier + + * emacs-lisp/regexp-opt.el (regexp-opt-group): Undo last change. + Fix the docstring instead. + 2003-01-20 Glenn Morris * calendar/calendar.el (calendar-only-one-frame-setup): Autoload it. diff -r 69ba26552b66 -r 8bfc6a0f6b3e lisp/emacs-lisp/regexp-opt.el --- a/lisp/emacs-lisp/regexp-opt.el Mon Jan 20 21:27:41 2003 +0000 +++ b/lisp/emacs-lisp/regexp-opt.el Mon Jan 20 21:37:02 2003 +0000 @@ -133,18 +133,18 @@ (require 'cl)) (defun regexp-opt-group (strings &optional paren lax) - "Return a regexp to match a string in STRINGS. -If PAREN non-nil, output regexp parentheses around returned regexp. -If LAX non-nil, don't output parentheses if it doesn't require them. -Merges keywords to avoid backtracking in Emacs' regexp matcher. + ;; Return a regexp to match a string in the sorted list STRINGS. + ;; If PAREN non-nil, output regexp parentheses around returned regexp. + ;; If LAX non-nil, don't output parentheses if it doesn't require them. + ;; Merges keywords to avoid backtracking in Emacs' regexp matcher. -The basic idea is to find the shortest common prefix or suffix, remove it -and recurse. If there is no prefix, we divide the list into two so that -\(at least) one half will have at least a one-character common prefix. + ;; The basic idea is to find the shortest common prefix or suffix, remove it + ;; and recurse. If there is no prefix, we divide the list into two so that + ;; \(at least) one half will have at least a one-character common prefix. -Also we delay the addition of grouping parenthesis as long as possible -until we're sure we need them, and try to remove one-character sequences -so we can use character sets rather than grouping parenthesis." + ;; Also we delay the addition of grouping parenthesis as long as possible + ;; until we're sure we need them, and try to remove one-character sequences + ;; so we can use character sets rather than grouping parenthesis. (let* ((open-group (cond ((stringp paren) paren) (paren "\\(?:") (t ""))) (close-group (if paren "\\)" "")) (open-charset (if lax "" open-group)) @@ -223,10 +223,7 @@ ;; particular letter and those that do not, and recurse on them. (let* ((char (char-to-string (string-to-char (car strings)))) (half1 (all-completions char strings)) - (half2 strings)) - ;; Remove from HALF2 whatever is in HALF1. - (dolist (elt half1) - (setq half2 (delq elt half2))) + (half2 (nthcdr (length half1) strings))) (concat open-group (regexp-opt-group half1) "\\|" (regexp-opt-group half2)