2017-10-31 14 views
1

私はelispで独立した単体テストを実行するための2つの一般的な関数に取り組んでいます。 1つは何かをして私のパッケージのすべてのカスタム変数をリセットすることです、もう1つは一時バッファで何かをして、私のパッケージのすべてのカスタム変数をリセットすることです。 (一般的な)ネストされた(funcall func)がmax-lisp-eval-depthを超えています、なぜですか?

機能:

(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))))) 

私は今呼び出すとき:​​それはmax-lisp-eval-depthを超え、なぜ(何の再帰はありませんか)?

+0

オプションメニューに 'デバッグオンERROR'を有効にして' *バックトレース* 'バッファをご検討ください。 – sds

+0

後で関数として呼び出すときに2つのパラメータ名が同じであることは許されないようです。 – lordnik22

+0

これはあなたの問題の症状だからですが、*起こっているのは、 'package-test-test'が' func'という変数を 'funcall func'という関数にバインドするということです。その関数を呼び出します。したがって、無限再帰。 – phils

答えて

関連する問題