emacs-diffs
[Top][All Lists]
Advanced

[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)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]