gpt4 book ai didi

emacs - 列出所有必需的功能

转载 作者:行者123 更新时间:2023-12-03 13:44:00 25 4
gpt4 key购买 nike

elisp 中是否有一个函数可以列出 emacs 当前可用的所有功能?

可用功能是指所有可以用作 (require 'some-symbol) 参数而不会出错的符号(即使它们尚未加载)。

最佳答案

有趣的问题。好吧,假设您只是遍历您的 load-path 并在 provide 之类的东西上进行 grep - 这是您正在寻找的“功能”列表吗?

(dolist (dirname load-path)
(shell-command (concat "grep '\(provide' " dirname "/*.el") "tmp")
(switch-to-buffer "tmp")
(append-to-buffer "provided" (point-min) (point-max))
(switch-to-buffer "provided"))


/Users/keith/.emacs.d/slime//hyperspec.el:(provide 'hyperspec)
/Users/keith/.emacs.d/slime//slime-autoloads.el: (provide 'slime-autoloads))
/Users/keith/.emacs.d/slime//slime.el:(provide 'slime)
/Users/keith/.emacs.d/geiser-0.4/elisp//geiser-autodoc.el:(provide 'geiser-autodoc)
/Users/keith/.emacs.d/geiser-0.4/elisp//geiser-base.el:(provide 'geiser-base)
/Users/keith/.emacs.d/geiser-0.4/elisp//geiser-company.el:(provide 'geiser-company)
/Users/keith/.emacs.d/geiser-0.4/elisp//geiser-compile.el:(provide 'geiser-compile)
/Users/keith/.emacs.d/geiser-0.4/elisp//geiser-completion.el:(provide 'geiser-completion)
/Users/keith/.emacs.d/geiser-0.4/elisp//geiser-connection.el:(provide 'geiser-connection)
...

(运行它的好处是在我自己的加载路径中显示了一些过时的目录)。

编辑:这是一个结合了 Bruce 和 tripleee 的建议的小版本:

(defun list-features ()
(dolist (dirname load-path)
(shell-command (concat "grep --no-filename --text '\(provide\\|\(autoload' " dirname "/*.(el|elc)") "tmp")
(switch-to-buffer "tmp")
(append-to-buffer "features" (point-min) (point-max)))
;; Remove duplicates from finding provided functions in both .el and .elc files
(switch-to-buffer "features")
(shell-command-on-region (point-min) (point-max) "sort -u" nil t nil nil))

关于emacs - 列出所有必需的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18173799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com