对于emacs,在Org-mode中有一件我不喜欢的桌面功能。我希望看到我作为Emacs命令运行的函数执行的所有函数。
最好的方法是什么?有关如何开始使用elisp代码,特别是单个感兴趣的命令的任何提示吗?
答案 0 :(得分:23)
每当调用该函数时,Emacs将进入Edebug,这使得逐步执行函数,检查变量以及执行其他典型的调试任务变得容易。有关详细信息,请参阅(info "(Elisp)Edebug")
。
答案 1 :(得分:12)
我更喜欢传统的Emacs调试器来进行edebug。使用它:
M-x debug-on-entry the-function RET
然后,每当调用the-function
时,都会输入调试器。使用 d 逐步完成评估,如果您想跳过某个步骤,请使用 c 。
在您逐步浏览时,有助于在另一个窗口/框架中查看the-function
的定义。
您可以使用debug-on-entry
取消M-x cancel-debug-on-entry
。
答案 2 :(得分:0)
C-h f
进入功能帮助模式,然后输入功能名称。如果它是一个elisp函数,那么您可以查看源代码并自己查找它调用的函数。
答案 3 :(得分:0)
如果你想以编程方式查看函数的来源(类似于Clojure的source
宏),你可以使用symbol-function
子例程。
例如,我的do-math
文件中有一个defun .emacs
。要查看其来源,我可以执行以下操作
(symbol-function 'do-math)
它给了我
ELISP> (symbol-function 'do-math)
(lambda
(expression)
(interactive "sexpression:")
(insert
(number-to-string
(eval
(read expression)))))
另见: https://www.gnu.org/software/emacs/manual/html_node/elisp/Function-Indirection.html