Fix rx charset generation
* lisp/emacs-lisp/rx.el (rx--charset-p): Don't overquote. (rx--generate-alt): Generate '.' for negated newline. * test/lisp/emacs-lisp/rx-tests.el (rx-any, rx-charset-or): Test.
This commit is contained in:
parent
9908b5a614
commit
d424195905
2 changed files with 14 additions and 3 deletions
|
@ -305,7 +305,7 @@ Return (REGEXP . PRECEDENCE)."
|
|||
"Whether FORM looks like a charset, only consisting of character intervals
|
||||
and set operations."
|
||||
(or (and (consp form)
|
||||
(or (and (memq (car form) '(any 'in 'char))
|
||||
(or (and (memq (car form) '(any in char))
|
||||
(rx--every (lambda (x) (not (symbolp x))) (cdr form)))
|
||||
(and (memq (car form) '(not or | intersection))
|
||||
(rx--every #'rx--charset-p (cdr form)))))
|
||||
|
@ -450,6 +450,10 @@ classes."
|
|||
(not negated))
|
||||
(cons (list (regexp-quote (char-to-string (caar items))))
|
||||
t))
|
||||
;; Negated newline.
|
||||
((and (equal items '((?\n . ?\n)))
|
||||
negated)
|
||||
(rx--translate-symbol 'nonl))
|
||||
;; At least one character or class, possibly negated.
|
||||
(t
|
||||
(cons
|
||||
|
|
|
@ -130,7 +130,10 @@
|
|||
(should (equal (rx (any "") (not (any "")))
|
||||
"\\`a\\`[^z-a]"))
|
||||
(should (equal (rx (any space ?a digit space))
|
||||
"[a[:space:][:digit:]]")))
|
||||
"[a[:space:][:digit:]]"))
|
||||
(should (equal (rx (not "\n") (not ?\n) (not (any "\n")) (not-char ?\n)
|
||||
(| (not (in "a\n")) (not (char ?\n (?b . ?b)))))
|
||||
".....")))
|
||||
|
||||
(ert-deftest rx-pcase ()
|
||||
(should (equal (pcase "a 1 2 3 1 1 b"
|
||||
|
@ -298,7 +301,11 @@
|
|||
(not (any "a-k"))))
|
||||
"[^abh-k]"))
|
||||
(should (equal (rx (or ?f (any "b-e") "a") (not (or ?x "y" (any "s-w"))))
|
||||
"[a-f][^s-y]")))
|
||||
"[a-f][^s-y]"))
|
||||
(should (equal (rx (not (or (in "abc") (char "bcd"))))
|
||||
"[^a-d]"))
|
||||
(should (equal (rx (or (not (in "abc")) (not (char "bcd"))))
|
||||
"[^bc]")))
|
||||
|
||||
(ert-deftest rx-def-in-charset-or ()
|
||||
(rx-let ((a (any "badc"))
|
||||
|
|
Loading…
Add table
Reference in a new issue