emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/el-search 10e596b 113/332: Add `el-search--macroexpand'


From: Stefan Monnier
Subject: [elpa] externals/el-search 10e596b 113/332: Add `el-search--macroexpand'
Date: Tue, 1 Dec 2020 15:48:24 -0500 (EST)

branch: externals/el-search
commit 10e596b762bb49190f1b2545f29063fe76c9d7d9
Author: Michael Heerdegen <michael_heerdegen@web.de>
Commit: Michael Heerdegen <michael_heerdegen@web.de>

    Add `el-search--macroexpand'
---
 el-search.el | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/el-search.el b/el-search.el
index 3e3d828..a517165 100644
--- a/el-search.el
+++ b/el-search.el
@@ -452,6 +452,12 @@ of the definitions is limited to \"el-search\".
   `(setf (alist-get ',name el-search--pcase-macros)
          (lambda ,args ,@body)))
 
+(defmacro el-search--with-additional-pcase-macros (&rest body)
+  `(cl-letf ,(mapcar (pcase-lambda (`(,symbol . ,fun))
+                       `((get ',symbol 'pcase-macroexpander) #',fun))
+                     el-search--pcase-macros)
+     ,@body))
+
 (defun el-search--macroexpand-1 (pattern)
   "Expand \"el-search\" PATTERN.
 This is like `pcase--macroexpand', but expands only patterns
@@ -464,11 +470,9 @@ Return PATTERN if this pattern type was not defined with
       (apply expander (cdr pattern))
     pattern))
 
-(defmacro el-search--with-additional-pcase-macros (&rest body)
-  `(cl-letf ,(mapcar (pcase-lambda (`(,symbol . ,fun))
-                       `((get ',symbol 'pcase-macroexpander) #',fun))
-                     el-search--pcase-macros)
-     ,@body))
+(defun el-search--macroexpand (pattern)
+  "Like `pcase--macroexpand' but also expanding \"el-search\" patterns."
+  (eval `(el-search--with-additional-pcase-macros (pcase--macroexpand 
',pattern))))
 
 (defun el-search--matcher (pattern &optional result)
   (eval ;use `eval' to allow for user defined pattern types at run time



reply via email to

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