如何获取 emacs-lisp 文件中定义的函数列表

Joh*_*hin 3 elisp

是否可以获取 emacs-lisp 文件中定义的函数列表?我找到了这种相关的答案:How do I get a list of Emacs lisp non-interactive functions? ,但它涉及所有定义的原子的映射,而不仅仅是文件中的原子。

sds*_*sds 5

如果相关文件已加载,则您可以修改链接问题中的代码以过滤掉其他文件中定义的符号:

(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表格。

但是,您可能更喜欢使用etagsimenu而不是自己扫描文件。