[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/el-search eef5de0 243/332: [el-search] Save two 'eval'
From: |
Stefan Monnier |
Subject: |
[elpa] externals/el-search eef5de0 243/332: [el-search] Save two 'eval' calls |
Date: |
Tue, 1 Dec 2020 15:48:55 -0500 (EST) |
branch: externals/el-search
commit eef5de0be53bb4aa8cede9d092e0c5d91a4118ec
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Michael Heerdegen <michael_heerdegen@web.de>
[el-search] Save two 'eval' calls
* packages/el-search/el-search.el
(el-search--with-additional-pcase-macros): Reimplement to set and
unset respective 'pcase-macroexpander' symbol properties "by
hand" (i.e. without 'cl-letf').
(el-search--macroexpand): Remove now unnecessary 'eval' wrapper.
(el-search-make-matcher): Remove now unnecessary 'eval' wrapper.
Byte compile lambda form instead of function value.
---
el-search.el | 34 ++++++++++++++++++++--------------
1 file changed, 20 insertions(+), 14 deletions(-)
diff --git a/el-search.el b/el-search.el
index 1176275..ecedaa3 100644
--- a/el-search.el
+++ b/el-search.el
@@ -930,9 +930,16 @@ for details.
(lambda ,args ,@(and doc `(,doc)) ,@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))
+ (let ((saved (make-symbol "saved")))
+ `(let ((,saved nil))
+ (unwind-protect
+ (progn
+ (pcase-dolist (`(,symbol . ,fun) el-search--pcase-macros)
+ (push (cons symbol (get symbol 'pcase-macroexpander)) ,saved)
+ (put symbol 'pcase-macroexpander fun))
+ ,@body)
+ (pcase-dolist (`(,symbol . ,fun) ,saved)
+ (put symbol 'pcase-macroexpander fun))))))
(defun el-search--macroexpand-1 (pattern &optional n)
"Expand el-search PATTERN.
@@ -952,19 +959,18 @@ N times."
(defun el-search--macroexpand (pattern)
"Like `pcase--macroexpand' but also expanding \"el-search\" patterns."
- (eval `(el-search--with-additional-pcase-macros (pcase--macroexpand
',pattern))))
+ (el-search--with-additional-pcase-macros (pcase--macroexpand pattern)))
(cl-defun el-search-make-matcher (pattern &optional (result nil
result-specified))
- (eval ;use `eval' to allow for user defined pattern types at run time
- (let ((expression (make-symbol "expression")))
- `(el-search--with-additional-pcase-macros
- (let ((byte-compile-debug t) ;make undefined pattern types raise an
error
- (warning-suppress-log-types '((bytecomp)))
- (pcase--dontwarn-upats (cons '_ pcase--dontwarn-upats)))
- (byte-compile (lambda (,expression)
- (pcase ,expression
- (,pattern ,(if result-specified result t))
- (_ nil)))))))))
+ (let ((expression (make-symbol "expression")))
+ (el-search--with-additional-pcase-macros
+ (let ((byte-compile-debug t) ;make undefined pattern types raise an error
+ (warning-suppress-log-types '((bytecomp)))
+ (pcase--dontwarn-upats (cons '_ pcase--dontwarn-upats)))
+ (byte-compile `(lambda (,expression)
+ (pcase ,expression
+ (,pattern ,(if result-specified result t))
+ (_ nil))))))))
(defun el-search--match-p (matcher expression)
(funcall matcher expression))
- [elpa] externals/el-search 6251577 213/332: * el-search/el-search.el: Add `el-search-edit-search-description', (continued)
- [elpa] externals/el-search 6251577 213/332: * el-search/el-search.el: Add `el-search-edit-search-description', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 48103e3 221/332: * el-search/el-search.el: Fix handling of void replacements, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 7c099aa 225/332: Small improvements to el-search--search-and-replace-pattern, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search da7857b 227/332: * el-search/el-search.el: Add `el-search-looking-at', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 9f400b4 234/332: * el-search/el-search.el: Fix infloop in el-search--flatten-tree, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 3bb5b76 236/332: * el-search/el-search.el: Prefer adverb "backward" in names and text, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 41e0251 224/332: * el-search/el-search.el: Bump version to 1.6; some minor tweaks, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search c4eeae5 223/332: * el-search/el-search.el: Fix single buffer query-replace, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search bd67d58 239/332: [el-search] Raise user-error when replacement contains gensyms, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 96b7423 245/332: [el-search] Special case 'el-search-make-matcher' for '_', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search eef5de0 243/332: [el-search] Save two 'eval' calls,
Stefan Monnier <=
- [elpa] externals/el-search 427afa8 253/332: [el-search] Bump version to 1.7.1, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 0907a21 248/332: [el-search] Bump version to 1.7, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 1bc9c89 252/332: [el-search] Improve 'el-search-display-match-count', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search ba806ce 251/332: [el-search] Enforce defun start for heuristic matching, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search ab5bcd8 266/332: [el-search] Follow-up to "Fix nested match issues in *El Occur*", Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 2c2930b 256/332: * el-search/el-search.el: Again tweak commentary in header, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 5e97386 255/332: [el-search] Improve match faces, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search fdb5656 270/332: [el-search] Make y move forward after replacing, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 75d0232 279/332: [el-search] Fix C-J with numeric arg in case of no match, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search a661225 272/332: [el-search] Minor tweaks in el-search-query-replace, Stefan Monnier, 2020/12/01