是否可以访问 require 中提到的文件,例如:
(require 'key-chord)
当点击“key-chord”(或其他输入而不是点击)时,您会访问该文件吗?
编辑:鉴于我们要访问文件“key-chord.el”
将光标放在任何需要的地方,例如“key-chord”中的“k”,然后执行M-x ffap RET RET
. ffap
是 的别名,它至少在 lisp 模式下find-file-at-point
可以理解。require
我已经ffap
绑定到C-x f
,因为我很少使用该键的默认绑定。
一些 Emacs 安装没有 .el 文件(只有 .elc 文件)。在 Debian/Ubuntu 中,您需要安装一个单独的软件包来获取它们(emacs- version -el、IIRC)。
locate-library
告诉您文件名,并find-file
在缓冲区中打开文件进行编辑。(find-file-read-only
如果您只想检查它,您可能想要。)
(find-file (locate-library "key-chord.el" t))
你可以把它变成一个函数,像这样:
(defun find-locate-library (lib)
"Visit the source for library LIB in a buffer."
(let ((location (locate-library (concat lib ".el") t)))
(if location
(find-file location)
(message "Could not find library %s" lib)) ))
如何将其连接到查看或编辑缓冲区是一个单独的主题。我想您可以修改 Elisp 模式以使库名称可点击,但我无法立即告诉您如何做到这一点。
感谢@Deokhwan Kim 提出的将搜索限制为仅“.el”文件的建议。
M-x find-library
RET提示您输入库的名称,然后访问该文件。
在有效的库名称上使用 point 调用它会使其成为默认提示值。
在语句中的任何地方用 point 调用它require
也会做正确的事情。
I use find-library
frequently, and bind it to C-hC-l for convenience.