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)