mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-06 11:50:51 -08:00
Add rx.el support for numbered groups (Bug#8776).
* lisp/emacs-lisp/rx.el (rx-constituents): Add support for numbered groups. (rx-submatch-n): New function. (rx): Document it.
This commit is contained in:
parent
ddb8b596be
commit
6420d28b9a
3 changed files with 25 additions and 0 deletions
3
etc/NEWS
3
etc/NEWS
|
|
@ -1051,6 +1051,9 @@ deferring warnings until the main command loop is executed.
|
||||||
** `set-auto-mode' now respects mode: local variables at the end of files,
|
** `set-auto-mode' now respects mode: local variables at the end of files,
|
||||||
as well as those in the -*- line.
|
as well as those in the -*- line.
|
||||||
|
|
||||||
|
---
|
||||||
|
** rx.el has a new `group-n' construct for explicitly numbered groups.
|
||||||
|
|
||||||
|
|
||||||
* Changes in Emacs 24.1 on non-free operating systems
|
* Changes in Emacs 24.1 on non-free operating systems
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,10 @@
|
||||||
2011-06-18 Chong Yidong <cyd@stupidchicken.com>
|
2011-06-18 Chong Yidong <cyd@stupidchicken.com>
|
||||||
|
|
||||||
|
* emacs-lisp/rx.el (rx-constituents): Add support for numbered
|
||||||
|
groups (Bug#8776).
|
||||||
|
(rx-submatch-n): New function.
|
||||||
|
(rx): Document it.
|
||||||
|
|
||||||
* dired-x.el (dired-mark-unmarked-files): Fix interactive spec
|
* dired-x.el (dired-mark-unmarked-files): Fix interactive spec
|
||||||
(Bug#8768).
|
(Bug#8768).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -130,6 +130,8 @@
|
||||||
(** . (rx-** 2 nil)) ; SRE
|
(** . (rx-** 2 nil)) ; SRE
|
||||||
(submatch . (rx-submatch 1 nil)) ; SRE
|
(submatch . (rx-submatch 1 nil)) ; SRE
|
||||||
(group . submatch) ; sregex
|
(group . submatch) ; sregex
|
||||||
|
(submatch-n . (rx-submatch-n 2 nil))
|
||||||
|
(group-n . submatch-n)
|
||||||
(zero-or-more . (rx-kleene 1 nil))
|
(zero-or-more . (rx-kleene 1 nil))
|
||||||
(one-or-more . (rx-kleene 1 nil))
|
(one-or-more . (rx-kleene 1 nil))
|
||||||
(zero-or-one . (rx-kleene 1 nil))
|
(zero-or-one . (rx-kleene 1 nil))
|
||||||
|
|
@ -690,6 +692,16 @@ FORM is either `(repeat N FORM1)' or `(repeat N M FORMS...)'."
|
||||||
(mapconcat (lambda (re) (rx-form re ':)) (cdr form) nil))
|
(mapconcat (lambda (re) (rx-form re ':)) (cdr form) nil))
|
||||||
"\\)"))
|
"\\)"))
|
||||||
|
|
||||||
|
(defun rx-submatch-n (form)
|
||||||
|
"Parse and produce code from FORM, which is `(submatch-n N ...)'."
|
||||||
|
(let ((n (nth 1 form)))
|
||||||
|
(concat "\\(?" (number-to-string n) ":"
|
||||||
|
(if (= 3 (length form))
|
||||||
|
;; Only one sub-form.
|
||||||
|
(rx-form (nth 2 form))
|
||||||
|
;; Several sub-forms implicitly concatenated.
|
||||||
|
(mapconcat (lambda (re) (rx-form re ':)) (cddr form) nil))
|
||||||
|
"\\)")))
|
||||||
|
|
||||||
(defun rx-backref (form)
|
(defun rx-backref (form)
|
||||||
"Parse and produce code from FORM, which is `(backref N)'."
|
"Parse and produce code from FORM, which is `(backref N)'."
|
||||||
|
|
@ -1072,6 +1084,11 @@ CHAR
|
||||||
like `and', but makes the match accessible with `match-end',
|
like `and', but makes the match accessible with `match-end',
|
||||||
`match-beginning', and `match-string'.
|
`match-beginning', and `match-string'.
|
||||||
|
|
||||||
|
`(submatch-n N SEXP1 SEXP2 ...)'
|
||||||
|
`(group-n N SEXP1 SEXP2 ...)'
|
||||||
|
like `group', but make it an explicitly-numbered group with
|
||||||
|
group number N.
|
||||||
|
|
||||||
`(or SEXP1 SEXP2 ...)'
|
`(or SEXP1 SEXP2 ...)'
|
||||||
`(| SEXP1 SEXP2 ...)'
|
`(| SEXP1 SEXP2 ...)'
|
||||||
matches anything that matches SEXP1 or SEXP2, etc. If all
|
matches anything that matches SEXP1 or SEXP2, etc. If all
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue