我正在研究一个在保持时突破edebug
的功能
当前函数绑定的参数。
(defun stop-edebug ()
"Stop edebugging"
(interactive)
(if (not edebug-mode)
(error "edebug isn't running!")
(save-excursion
(beginning-of-defun)
(if (looking-at "(defun\\s-+\\_<[^ ]+\\_>\\s-+(")
(progn
(goto-char (match-end 0))
(backward-char 1)
(forward-sexp 1)
(let ((sexps (mapcar
(lambda(x!) (cons x! (symbol-value x!)))
(preceding-sexp))))
(edebug-mode -1)
(mapc (lambda(x) (set (car x) (cdr x))) sexps)))))))
这样我可以在edebug
绑定后按照自己的步调评估函数体
我的函数参数。
问题是(edebug-mode -1)
并不是真正的退出方式
edebug
。它导致edebug
标记在缓冲区中延迟,可能还有其他标记
我不知道的副作用。
通常,退出是通过绑定到top-level
的 q 完成的。
但是我不知道如何在top-level
之后调用任何东西
它直接跳到主命令循环。
所以我要求在top-level
之后调用某种方法
或者以更好的方式退出edebug
而不是(edebug-mode -1)
。
答案 0 :(得分:1)
要在调用top-level
后运行代码,您可以安排该代码以便以后在计时器中执行。 E.g。
...
(run-with-timer 0 nil
(lambda ()
(do the thing (here))))
(top-level))