Mercurial > emacs
changeset 49352:8bfc6a0f6b3e
(regexp-opt-group): Undo last change. Fix the docstring instead.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Mon, 20 Jan 2003 21:37:02 +0000 |
parents | 69ba26552b66 |
children | 60b12919be0c |
files | lisp/ChangeLog lisp/emacs-lisp/regexp-opt.el |
diffstat | 2 files changed, 16 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- 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 <monnier@cs.yale.edu> + + * emacs-lisp/regexp-opt.el (regexp-opt-group): Undo last change. + Fix the docstring instead. + 2003-01-20 Glenn Morris <gmorris@ast.cam.ac.uk> * calendar/calendar.el (calendar-only-one-frame-setup): Autoload it.
--- 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)