当我这样做时 C-h f
或 C-h v
, 帮助告诉我符号是在哪个文件中定义的,或者将从哪里自动加载。如何以编程方式找到相同的信息?
最佳答案
一些挖掘表明
(find-lisp-object-file-name object type)
应该做的伎俩。举个例子:
(find-lisp-object-file-name 'goto-line 'function)
;; => "/usr/local/Cellar/emacs/24.3/share/emacs/24.3/lisp/simple.el"
编辑:我是如何发现这些信息的:
首先我做了
C-h k C-h f
弄清楚是什么 C-h f
一定会。结果是describe-function
,所以让我们做 C-h f describe-function
看到它的来源。我注意到它本质上是一个围绕 describe-function-1
的交互式包装器。 ,所以我跳到了源头。里面有很多东西,但相关的一行是:(file-name (find-lisp-object-file-name function def))
揭秘
find-lisp-object-file-name
是用于在内部完成这项工作的函数。
关于emacs - 在 Emacs Lisp 中,如何找到符号定义的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18166834/