[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/assess 46834f9423 54/95: Add ability to capture calls t
From: |
ELPA Syncer |
Subject: |
[elpa] externals/assess 46834f9423 54/95: Add ability to capture calls to hooks |
Date: |
Tue, 19 Jul 2022 15:57:33 -0400 (EDT) |
branch: externals/assess
commit 46834f94233707f5ff40b59a1191a3dd09059e12
Author: Phillip Lord <phillip.lord@russet.org.uk>
Commit: Phillip Lord <phillip.lord@russet.org.uk>
Add ability to capture calls to hooks
---
assess-call.el | 29 +++++++++++++++++++++++++++++
test/assess-call-test.el | 27 +++++++++++++++++++++++++++
2 files changed, 56 insertions(+)
diff --git a/assess-call.el b/assess-call.el
index 6cd0b3997a..df5bfaa438 100644
--- a/assess-call.el
+++ b/assess-call.el
@@ -90,6 +90,35 @@ parameters of the calls, and the cdr being the return value."
(advice-remove sym-fn capture-lambda)
(funcall capture-lambda :return)))
+(defun assess-call--hook-capture-lambda ()
+ "Returns a function which captures all of its args.
+
+The returned function takes any number of ARGS. In the special
+case that the first arg is `:return` then it returns all previous
+args."
+ (let ((capture-store nil))
+ (lambda (&rest args)
+ (if (eq (car-safe args) :return)
+ capture-store
+ (setq capture-store
+ (cons
+ args
+ capture-store))))))
+
+(defun assess-call-capture-hook (hook-var fn &optional append local)
+ "Trace all calls to HOOK-VAR when FN is called with no args.
+APPEND and LOCAL are passed to `add-hook` and documented there."
+ (let ((capture-lambda
+ (assess-call--hook-capture-lambda)))
+ (add-hook hook-var
+ capture-lambda
+ append local)
+ (funcall fn)
+ (remove-hook hook-var
+ capture-lambda
+ local)
+ (funcall capture-lambda :return)))
+
(provide 'assess-call)
;;; assess-call.el ends here
;; #+end_src
diff --git a/test/assess-call-test.el b/test/assess-call-test.el
index 9d0876b3fb..8c243e78e5 100644
--- a/test/assess-call-test.el
+++ b/test/assess-call-test.el
@@ -65,4 +65,31 @@
(assess-call-capture-multiply 1 2)
(assess-call-capture-multiply 3 4))))))
+(defvar assess-call-test-hook nil)
+
+(ert-deftest assess-call-test-hook-test ()
+ (should
+ (equal
+ '(nil)
+ (assess-call-capture-hook
+ 'assess-call-test-hook
+ (lambda ()
+ (run-hooks 'assess-call-test-hook)))))
+ (should
+ (equal
+ '(nil nil)
+ (assess-call-capture-hook
+ 'assess-call-test-hook
+ (lambda ()
+ (run-hooks 'assess-call-test-hook)
+ (run-hooks 'assess-call-test-hook)))))
+ (should
+ (equal
+ '((bob))
+ (assess-call-capture-hook
+ 'assess-call-test-hook
+ (lambda ()
+ (run-hook-with-args 'assess-call-test-hook
+ 'bob))))))
+
(provide 'assess-call-test)
- [elpa] externals/assess 70c6d8c57d 70/95: Fix a few typos, (continued)
- [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, 2022/07/19
- [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 <=
- [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
- [elpa] externals/assess 1c34f2bc14 79/95: Fix error symbol declaration, ELPA Syncer, 2022/07/19
- [elpa] externals/assess 1b1ac33709 87/95: Fix travis build, ELPA Syncer, 2022/07/19
- [elpa] externals/assess 29950d8964 90/95: Merge pull request #18 from DamienCassou/typos, ELPA Syncer, 2022/07/19
- [elpa] externals/assess cb2c0361a7 91/95: Add expected failure, ELPA Syncer, 2022/07/19
- [elpa] externals/assess be539d6447 92/95: Update test framework, drop early 24, ELPA Syncer, 2022/07/19