diff options
| author | Stefan Monnier | 2020-05-11 09:53:37 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2020-05-11 09:53:37 -0400 |
| commit | a69ef94e22716f9cbb7cf8d78b89e7be4a4c60eb (patch) | |
| tree | 9980243e5866de205747a5bd472e835a769a64c1 | |
| parent | 703115829b35de6a90d7bafb7931f905e79d0d35 (diff) | |
| download | emacs-a69ef94e22716f9cbb7cf8d78b89e7be4a4c60eb.tar.gz emacs-a69ef94e22716f9cbb7cf8d78b89e7be4a4c60eb.zip | |
* lisp/emacs-lisp/pcase.el (pcase--fgrep): Look inside vectors
| -rw-r--r-- | lisp/emacs-lisp/pcase.el | 13 |
1 files 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: | |||
| 698 | (dolist (binding (pcase--fgrep bindings (pop sexp))) | 698 | (dolist (binding (pcase--fgrep bindings (pop sexp))) |
| 699 | (push binding res) | 699 | (push binding res) |
| 700 | (setq bindings (remove binding bindings)))) | 700 | (setq bindings (remove binding bindings)))) |
| 701 | (let ((tmp (assq sexp bindings))) | 701 | (if (vectorp sexp) |
| 702 | (if tmp | 702 | ;; With backquote, code can appear within vectors as well. |
| 703 | (cons tmp res) | 703 | ;; This wouldn't be needed if we `macroexpand-all' before |
| 704 | res)))) | 704 | ;; calling pcase--fgrep, OTOH. |
| 705 | (pcase--fgrep bindings (mapcar #'identity sexp)) | ||
| 706 | (let ((tmp (assq sexp bindings))) | ||
| 707 | (if tmp | ||
| 708 | (cons tmp res) | ||
| 709 | res))))) | ||
| 705 | 710 | ||
| 706 | (defun pcase--self-quoting-p (upat) | 711 | (defun pcase--self-quoting-p (upat) |
| 707 | (or (keywordp upat) (integerp upat) (stringp upat))) | 712 | (or (keywordp upat) (integerp upat) (stringp upat))) |