mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 18:40:39 -08:00
(pcase): New _ syntax in pred/app functions
The current syntax for functions in `app` and `pred` patterns allows a shorthand (F ARGS) where the object being matched is added as an extra last argument. This is nice for things like (pred (< 5)) but sometimes the object needs to be at another position. Until now you had to use (pred (lambda (x) (memq x my-list))) or (pred (pcase--flip memq my-list)) in those cases. So, introduce a new shorthand where `_` can be used to indicate where the object should be passed: (pred (memq _ my-list)) * lisp/emacs-lisp/pcase.el (pcase--split-pred): Document new syntax for pred/app functions. (pcase--funcall): Support new syntax. (pcase--flip): Declare obsolete. (pcase--u1, \`): Use `_` instead. (pcase--split-pred): Adjust accordingly. * doc/lispref/control.texi (pcase Macro): Document new syntax for pred/app functions. * lisp/progmodes/opascal.el (pcase-defmacro): * lisp/emacs-lisp/seq.el (seq--make-pcase-bindings): * lisp/emacs-lisp/eieio.el (eieio): * lisp/emacs-lisp/cl-macs.el (cl-struct, cl-type): Use _ instead of `pcase--flip`. (cl--pcase-mutually-exclusive-p): Adjust accordingly. * lisp/emacs-lisp/map.el (map--pcase-map-elt): Declare obsolete. (map--make-pcase-bindings): Use `_` instead.
This commit is contained in:
parent
9ebc91795f
commit
806759dc0a
8 changed files with 47 additions and 24 deletions
|
|
@ -619,12 +619,12 @@ SEQUENCE must be a sequence of numbers or markers."
|
|||
(unless rest-marker
|
||||
(pcase name
|
||||
(`&rest
|
||||
(progn (push `(app (pcase--flip seq-drop ,index)
|
||||
(progn (push `(app (seq-drop _ ,index)
|
||||
,(seq--elt-safe args (1+ index)))
|
||||
bindings)
|
||||
(setq rest-marker t)))
|
||||
(_
|
||||
(push `(app (pcase--flip seq--elt-safe ,index) ,name) bindings))))
|
||||
(push `(app (seq--elt-safe _ ,index) ,name) bindings))))
|
||||
(setq index (1+ index)))
|
||||
bindings))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue