在Emacs的Org-mode中,有一件事情我不太喜欢表格函数。我希望能够查看由我运行的Emacs命令执行的所有函数。
如何做到这一点?有什么提示可以帮助我开始调试elisp代码,特别是单个感兴趣的命令?
每当调用该函数时,Emacs将进入Edebug,这使得逐步执行函数、检查变量和执行其他典型的调试任务变得容易。有关更多信息,请参见(info "(Elisp)Edebug")
。
我更喜欢传统的Emacs调试器而不是edebug。要使用它:
M-x debug-on-entry the-function RET
每当调用the-function
时,都会进入调试器。使用d逐步执行代码,并使用c跳过步骤(不要深入细节)。
在执行代码的同时,在另一个窗口/框架中查看the-function
的定义将会很有帮助。
您可以使用M-x cancel-debug-on-entry
取消debug-on-entry
。
C-h f
进入函数帮助模式,然后输入函数名称。如果它是一个 elisp 函数,你可以查看源代码并自行查找它调用的函数。
如果你想以编程方式查看函数的源代码(类似于Clojure的source
宏),可以使用symbol-function
子程序。
例如,我的.emacs
文件中有一个do-math
defun。要查看其源代码,可以执行以下操作:
(symbol-function 'do-math)
它会给我返回:
ELISP> (symbol-function 'do-math)
(lambda
(expression)
(interactive "sexpression:")
(insert
(number-to-string
(eval
(read expression)))))
C-M-x
。因此,要使用C-u M-x eval-defun
来对函数进行调试。 - Wilfred Hughes