From e5a446b0a706ddd4bedf973baeaf54f105198b09 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mattias=20Engdeg=C3=A5rd?= Date: Mon, 7 Oct 2019 18:07:16 +0200 Subject: [PATCH] Add `anychar' as alias to `anything' in rx (bug#37659) * lisp/emacs-lisp/rx.el (rx--translate-symbol, rx--builtin-symbols, rx): * test/lisp/emacs-lisp/rx-tests.el (rx-atoms): * doc/lispref/searching.texi (Rx Constructs): * etc/NEWS: Add `anychar', an alias for `anything'. Since `anychar' is more descriptive (and slightly shorter), treat it as the preferred name. --- doc/lispref/searching.texi | 3 ++- etc/NEWS | 4 ++++ lisp/emacs-lisp/rx.el | 7 +++---- test/lisp/emacs-lisp/rx-tests.el | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi index a4b65334126..2274bab002c 100644 --- a/doc/lispref/searching.texi +++ b/doc/lispref/searching.texi @@ -1220,7 +1220,8 @@ Corresponding string regexp: @samp{[^@dots{}]}, @samp{\S@var{code}}, Match any character except a newline.@* Corresponding string regexp: @samp{.} (dot) -@item @code{anything} +@item @code{anychar}, @code{anything} +@cindex @code{anychar} in rx @cindex @code{anything} in rx Match any character.@* Corresponding string regexp: @samp{.\|\n} (for example) diff --git a/etc/NEWS b/etc/NEWS index e1eb74f86e8..25c1cef9516 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1854,6 +1854,10 @@ at run time, instead of a constant string. *** New rx extension mechanism: 'rx-define', 'rx-let', 'rx-let-eval'. These macros add new forms to the rx notation. ++++ +*** 'anychar' is now an alias for 'anything' +Both match any single character; 'anychar' is more descriptive. + ** Frames +++ diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el index 45fec796cc3..6c0b2069302 100644 --- a/lisp/emacs-lisp/rx.el +++ b/lisp/emacs-lisp/rx.el @@ -126,7 +126,6 @@ Each entry is: (get name 'rx-definition))) ;; TODO: Additions to consider: -;; - A better name for `anything', like `any-char' or `anychar'. ;; - A name for (or), maybe `unmatchable'. ;; - A construct like `or' but without the match order guarantee, ;; maybe `unordered-or'. Useful for composition or generation of @@ -138,7 +137,7 @@ Each entry is: ;; Use `list' instead of a quoted list to wrap the strings here, ;; since the return value may be mutated. ((or 'nonl 'not-newline 'any) (cons (list ".") t)) - ('anything (rx--translate-form '(or nonl "\n"))) + ((or 'anychar 'anything) (rx--translate-form '(or nonl "\n"))) ((or 'bol 'line-start) (cons (list "^") 'lseq)) ((or 'eol 'line-end) (cons (list "$") 'rseq)) ((or 'bos 'string-start 'bot 'buffer-start) (cons (list "\\`") t)) @@ -913,7 +912,7 @@ can expand to any number of values." "List of built-in rx function-like symbols.") (defconst rx--builtin-symbols - (append '(nonl not-newline any anything + (append '(nonl not-newline any anychar anything bol eol line-start line-end bos eos string-start string-end bow eow word-start word-end @@ -1016,7 +1015,7 @@ CHAR Match a literal character. can be (any ...), (syntax ...), (category ...), or a character class. not-newline Match any character except a newline. Alias: nonl. -anything Match any character. +anychar Match any character. Alias: anything. CHARCLASS Match a character from a character class. One of: alpha, alphabetic, letter Alphabetic characters (defined by Unicode). diff --git a/test/lisp/emacs-lisp/rx-tests.el b/test/lisp/emacs-lisp/rx-tests.el index 76dcf419428..d4524e5a251 100644 --- a/test/lisp/emacs-lisp/rx-tests.el +++ b/test/lisp/emacs-lisp/rx-tests.el @@ -184,8 +184,8 @@ "ab"))) (ert-deftest rx-atoms () - (should (equal (rx anything) - ".\\|\n")) + (should (equal (rx anychar anything) + "\\(?:.\\|\n\\)\\(?:.\\|\n\\)")) (should (equal (rx line-start not-newline nonl any line-end) "^...$")) (should (equal (rx bol string-start string-end buffer-start buffer-end -- 2.39.2