[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master a69ef94: * lisp/emacs-lisp/pcase.el (pcase--fgrep): Look inside v
From: |
Stefan Monnier |
Subject: |
master a69ef94: * lisp/emacs-lisp/pcase.el (pcase--fgrep): Look inside vectors |
Date: |
Mon, 11 May 2020 09:53:42 -0400 (EDT) |
branch: master
commit a69ef94e22716f9cbb7cf8d78b89e7be4a4c60eb
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>
* lisp/emacs-lisp/pcase.el (pcase--fgrep): Look inside vectors
---
lisp/emacs-lisp/pcase.el | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 4b7689a..a8ce232 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -698,10 +698,15 @@ MATCH is the pattern that needs to be matched, of the
form:
(dolist (binding (pcase--fgrep bindings (pop sexp)))
(push binding res)
(setq bindings (remove binding bindings))))
- (let ((tmp (assq sexp bindings)))
- (if tmp
- (cons tmp res)
- res))))
+ (if (vectorp sexp)
+ ;; With backquote, code can appear within vectors as well.
+ ;; This wouldn't be needed if we `macroexpand-all' before
+ ;; calling pcase--fgrep, OTOH.
+ (pcase--fgrep bindings (mapcar #'identity sexp))
+ (let ((tmp (assq sexp bindings)))
+ (if tmp
+ (cons tmp res)
+ res)))))
(defun pcase--self-quoting-p (upat)
(or (keywordp upat) (integerp upat) (stringp upat)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master a69ef94: * lisp/emacs-lisp/pcase.el (pcase--fgrep): Look inside vectors,
Stefan Monnier <=