是否可以获取 emacs-lisp 文件中定义的函数列表?我找到了这种相关的答案:How do I get a list of Emacs lisp non-interactive functions? ,但它涉及所有定义的原子的映射,而不仅仅是文件中的原子。
如果相关文件已加载,则您可以修改链接问题中的代码以过滤掉其他文件中定义的符号:
(let ((funclist ()))
(mapatoms
(lambda (x)
(when (and (fboundp x) ; does x name a function?
(let ((f (symbol-file x)))
(and f (string= (file-name-base f) "my-file.el"))))
(push x funclist))))
funclist)
Run Code Online (Sandbox Code Playgroud)
如果文件尚未加载,您将必须扫描它scan-sexps并找到defun表格。
但是,您可能更喜欢使用etags或imenu而不是自己扫描文件。