[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/assess f1edef3220 52/95: Move call implementation to cl
From: |
ELPA Syncer |
Subject: |
[elpa] externals/assess f1edef3220 52/95: Move call implementation to closure |
Date: |
Tue, 19 Jul 2022 15:57:33 -0400 (EDT) |
branch: externals/assess
commit f1edef32206a3a80e51453f7630ba04d94def25f
Author: Phillip Lord <phillip.lord@russet.org.uk>
Commit: Phillip Lord <phillip.lord@russet.org.uk>
Move call implementation to closure
Previously, calls were captured in a global var which was only going to
work with one call at a time. Now we use a closure to avoid this problem.
---
assess-call.el | 21 ++++++++++++++++-----
test/assess-call-test.el | 8 ++++----
2 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/assess-call.el b/assess-call.el
index 4a9dfdabad..cd5c35f54e 100644
--- a/assess-call.el
+++ b/assess-call.el
@@ -62,16 +62,27 @@
assess-call--capture-store))
rtn))
+(defun assess-call--capture-lambda ()
+ (let ((capture-store nil))
+ (lambda (fn &rest args)
+ (if (eq fn :return)
+ capture-store
+ (let ((rtn (apply fn args)))
+ (setq capture-store
+ (cons (cons args rtn)
+ capture-store)))))))
+
(defun assess-call-capture (sym-fn fn)
"Trace all calls to SYM-FN when FN is called with no args.
The return value is a list of cons cells, with car being the
parameters of the calls, and the cdr being the return value."
- (setq assess-call--capture-store nil)
- (advice-add sym-fn :around #'assess-call--capture-advice)
- (funcall fn)
- (advice-remove sym-fn #'siyphus-call--capture-advice)
- assess-call--capture-store)
+ (let ((capture-lambda
+ (assess-call--capture-lambda)))
+ (advice-add sym-fn :around capture-lambda)
+ (funcall fn)
+ (advice-remove sym-fn capture-lambda)
+ (funcall capture-lambda :return)))
(provide 'assess-call)
;;; assess-call.el ends here
diff --git a/test/assess-call-test.el b/test/assess-call-test.el
index 25ae531d58..9d0876b3fb 100644
--- a/test/assess-call-test.el
+++ b/test/assess-call-test.el
@@ -52,7 +52,7 @@
(lambda ()
(assess-call-call-return-car 20 21 22))))))
-(defun call-capture-multiply (a b)
+(defun assess-call-capture-multiply (a b)
(* a b))
(ert-deftest call-capture-twice ()
@@ -60,9 +60,9 @@
(equal
'(((3 4) . 12) ((1 2) . 2))
(assess-call-capture
- 'call-capture-multiply
+ 'assess-call-capture-multiply
(lambda ()
- (call-capture-multiply 1 2)
- (call-capture-multiply 3 4))))))
+ (assess-call-capture-multiply 1 2)
+ (assess-call-capture-multiply 3 4))))))
(provide 'assess-call-test)
- [elpa] externals/assess 7409b103a3 46/95: Update .gitignore, (continued)
- [elpa] externals/assess 7409b103a3 46/95: Update .gitignore, ELPA Syncer, 2022/07/19
- [elpa] externals/assess e1b7740df5 55/95: Add unwind-protect to assess-call functions, ELPA Syncer, 2022/07/19
- [elpa] externals/assess 2335b8bd69 63/95: Remove old call-capture variable, ELPA Syncer, 2022/07/19
- [elpa] externals/assess 61771edab7 67/95: Move cask to melpa-stable, ELPA Syncer, 2022/07/19
- [elpa] externals/assess e2e5f1cbbd 69/95: Merge pull request #6 from NicolasPetton/master, ELPA Syncer, 2022/07/19
- [elpa] externals/assess 70c6d8c57d 70/95: Fix a few typos, ELPA Syncer, 2022/07/19
- [elpa] externals/assess bafab950e7 68/95: Fix typos, ELPA Syncer, 2022/07/19
- [elpa] externals/assess 47ce039423 77/95: Avoid font-lock-ensure for older Emacs, ELPA Syncer, 2022/07/19
- [elpa] externals/assess 4a71be3ba5 38/95: Change all references to sisyphus to assess, ELPA Syncer, 2022/07/19
- [elpa] externals/assess d2885a9bd7 50/95: Update readme for 0.2 release., ELPA Syncer, 2022/07/19
- [elpa] externals/assess f1edef3220 52/95: Move call implementation to closure,
ELPA Syncer <=
- [elpa] externals/assess 0781fd79c4 88/95: Prepare for 0.5 release, ELPA Syncer, 2022/07/19
- [elpa] externals/assess d809f70748 53/95: Documentation for `assess-call--capture-lambda`, ELPA Syncer, 2022/07/19
- [elpa] externals/assess 4b941ebd35 57/95: Added -pkg.el file to .gitignore, ELPA Syncer, 2022/07/19
- [elpa] externals/assess 36093a2c6b 61/95: Fix keybinding for edmacro. Add test., ELPA Syncer, 2022/07/19
- [elpa] externals/assess 46834f9423 54/95: Add ability to capture calls to hooks, ELPA Syncer, 2022/07/19
- [elpa] externals/assess 74d8de749c 64/95: assess-with-temp-buffers now uses let*, ELPA Syncer, 2022/07/19
- [elpa] externals/assess fca80753d7 66/95: Kill even modified file associated buffers, ELPA Syncer, 2022/07/19
- [elpa] externals/assess df2532f2ec 56/95: Add autoload cookies, ELPA Syncer, 2022/07/19
- [elpa] externals/assess 979c26b3b7 73/95: Add assess-with-filesystem, ELPA Syncer, 2022/07/19
- [elpa] externals/assess 190eab03d7 74/95: Fix debug declation in -with-temp-buffers, ELPA Syncer, 2022/07/19