From a69ef94e22716f9cbb7cf8d78b89e7be4a4c60eb Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 11 May 2020 09:53:37 -0400 Subject: [PATCH] * 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 4b7689ad42c..a8ce23284c4 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))) -- 2.39.2