1

我正在研究用于在 elisp 中执行独立单元测试的两个通用函数。一个是关于做某事并重置我的包的所有自定义变量,另一个是关于在临时缓冲区中做某事并重置我的包的所有自定义变量。

功能(一般):

(defun package-test-test (func)
    ""
    (unwind-protect
        (funcall func)
      (reset-all-custom-package-variables)))

功能(临时缓冲区):

    (defun package-test-test-in-buffer (func)
        ""
        (package-test-test
            (lambda ()
                (with-temp-buffer (funcall func)))))

当我现在打电话时:(package-test-test-in-buffer (lambda () (insert "a")))它超过了max-lisp-eval-depth,为什么(没有递归)?

4

1 回答 1

3

您的问题是Emacs Lisp 中默认的动态绑定func:函数中的参数是相同的变量。您需要重命名其中之一或使用词法绑定

另请参阅如何使用 Emacs Lisp 动态范围?

于 2017-10-31T15:23:13.283 回答