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

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

[elpa] master 940b651: Add `el-search--macroexpand'


From: Michael Heerdegen
Subject: [elpa] master 940b651: Add `el-search--macroexpand'
Date: Tue, 13 Sep 2016 16:54:05 +0000 (UTC)

branch: master
commit 940b651dfdd559eb72c3885b34d7b958a3906a91
Author: Michael Heerdegen <address@hidden>
Commit: Michael Heerdegen <address@hidden>

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

diff --git a/packages/el-search/el-search.el b/packages/el-search/el-search.el
index 3e3d828..a517165 100644
--- a/packages/el-search/el-search.el
+++ b/packages/el-search/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]