diff options
| author | Mattias EngdegÄrd | 2019-12-03 15:17:37 +0100 |
|---|---|---|
| committer | Mattias EngdegÄrd | 2019-12-03 15:17:37 +0100 |
| commit | a6b598518c4bf6dfc587cfb2b61fa5fb04b99494 (patch) | |
| tree | 53a5dd14398ff04282ff98f7e97f4560b3f84b58 /lisp | |
| parent | a05bafffdcb88df74408a8402cafc9829407c1e5 (diff) | |
| download | emacs-a6b598518c4bf6dfc587cfb2b61fa5fb04b99494.tar.gz emacs-a6b598518c4bf6dfc587cfb2b61fa5fb04b99494.zip | |
Avoid duplicated character classes in rx
For example, (any digit digit) should produce "[[:digit:]]",
not "[[:digit:][:digit:]]".
* lisp/emacs-lisp/rx.el (rx--translate-any): Deduplicate character classes.
* test/lisp/emacs-lisp/rx-tests.el (rx-any): Add test case.
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/emacs-lisp/rx.el | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el index 52a35ffa2a7..6fde27831a0 100644 --- a/lisp/emacs-lisp/rx.el +++ b/lisp/emacs-lisp/rx.el | |||
| @@ -376,7 +376,9 @@ If NEGATED, negate the sense." | |||
| 376 | (push (cons arg arg) conses)) | 376 | (push (cons arg arg) conses)) |
| 377 | ((and (symbolp arg) | 377 | ((and (symbolp arg) |
| 378 | (let ((class (cdr (assq arg rx--char-classes)))) | 378 | (let ((class (cdr (assq arg rx--char-classes)))) |
| 379 | (and class (push class classes))))) | 379 | (and class |
| 380 | (or (memq class classes) | ||
| 381 | (push class classes)))))) | ||
| 380 | (t (error "Invalid rx `any' argument: %s" arg)))) | 382 | (t (error "Invalid rx `any' argument: %s" arg)))) |
| 381 | (let ((items | 383 | (let ((items |
| 382 | ;; Translate strings and conses into nonoverlapping intervals, | 384 | ;; Translate strings and conses into nonoverlapping intervals, |