]> git.eshelyaron.com Git - emacs.git/commitdiff
(rx-submatch): Pass : to rx-form (bug#1518).
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 9 Dec 2008 21:17:09 +0000 (21:17 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 9 Dec 2008 21:17:09 +0000 (21:17 +0000)
lisp/ChangeLog
lisp/emacs-lisp/rx.el

index 5af9ed44e040118a004aa1b7fb581b76e8ae4224..6dd1cd01bb19267704da83a5a5ffaf5ba21a4ec1 100644 (file)
@@ -1,3 +1,7 @@
+2008-12-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacs-lisp/rx.el (rx-submatch): Pass : to rx-form.
+
 2008-12-09  Glenn Morris  <rgm@gnu.org>
 
        * Makefile.in (ELCFILES): Update.
index c5e94874793502235d5e0a8b746d9346b84319ca..7f3793f05ac2612a2fdf1a05797c121698950693 100644 (file)
@@ -666,7 +666,13 @@ FORM is either `(repeat N FORM1)' or `(repeat N M FORM1)'."
 
 (defun rx-submatch (form)
   "Parse and produce code from FORM, which is `(submatch ...)'."
-  (concat "\\(" (mapconcat #'rx-form (cdr form) nil) "\\)"))
+  (concat "\\("
+          (if (= 2 (length form))
+              ;; Only one sub-form.
+              (rx-form (cadr form))
+            ;; Several sub-forms implicitly concatenated.
+            (mapconcat (lambda (re) (rx-form re ':)) (cdr form) nil))
+          "\\)"))
 
 
 (defun rx-backref (form)