有一件事我不喜歡emacs的Org-mode中的表函數。我希望看到所有通過我作爲Emacs命令運行的函數執行的函數。Emacs - 如何查看/如何調試單個elisp函數/ emacs命令
這樣做的最好方法是什麼?任何提示如何開始調試elisp代碼,尤其是感興趣的單個命令?
有一件事我不喜歡emacs的Org-mode中的表函數。我希望看到所有通過我作爲Emacs命令運行的函數執行的函數。Emacs - 如何查看/如何調試單個elisp函數/ emacs命令
這樣做的最好方法是什麼?任何提示如何開始調試elisp代碼,尤其是感興趣的單個命令?
無論什麼時候調用該函數,Emacs都會放入Edebug中,這樣可以輕鬆地逐步執行函數,檢查變量並執行其他典型的調試任務。有關更多信息,請參閱(info "(Elisp)Edebug")
。
C-h f
要轉到功能幫助模式,然後鍵入功能的名稱。如果它是一個elisp函數,則可以查看源代碼並查找它調用的函數。
我更喜歡傳統的Emacs調試器來edebug。要使用它:
M-x debug-on-entry the-function RET
然後,無論何時調用the-function
,都會輸入調試器。如果你想通過一個臺階(未潛入其詳細信息跳過使用d步驟通過評測,並Ç。
它有助於在新窗口/幀的the-function
的定義,而你通過步它。
如果你想以編程的方式看到一個函數的源代碼(類似於Clojure的source
宏)你可以使用symbol-function
子程序。
例如,有我在.emacs
文件中的defun定義do-math
。看到它的來源,我可以做以下
(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
一些平臺,如侏儒3,不要讓Emacs接收'CMx'。所以用edebug來測試函數,使用'C-u M-x eval-defun'。 –