Emacs 列出所有需要的特性
elisp中是否有列出emacs中当前可用的所有功能的函数Emacs 列出所有需要的特性,emacs,elisp,Emacs,Elisp,elisp中是否有列出emacs中当前可用的所有功能的函数 所谓可用特性,我指的是可以用作(需要“某些符号)参数的所有符号,而不会出现错误(即使它们尚未加载)。有一个变量特性,正好可以做到这一点。 require随时检查。都在文档中。尝试查找程序:交互式 C-HP通过关键字运行命令查找器,这是一种交互式 在“finder.el”中自动加载编译的Lisp函数 它与C-hp,p,p结合, (按关键字查找) 查找与给定关键字匹配的包 或者在代码中,在一个(加载库“finder-inf”)有趣的问题之
所谓可用特性,我指的是可以用作
(需要“某些符号)
参数的所有符号,而不会出现错误(即使它们尚未加载)。有一个变量特性
,正好可以做到这一点。
require
随时检查。都在文档中。尝试查找程序:交互式
C-HP通过关键字运行命令查找器,这是一种交互式
在“finder.el”中自动加载编译的Lisp函数
它与C-hp,p,p结合,
(按关键字查找)
查找与给定关键字匹配的包
或者在代码中,在一个
(加载库“finder-inf”)
有趣的问题之后访问finder关键字散列。好吧,假设你只是遍历你的加载路径
和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并没有这样做,原因很明显,我实际上需要的是代码列表,而不是交互列表。但这有点帮助。我可以用finder关键字hash
编译所有包的列表。是的,这就是我要找的东西。但是,请注意,您需要在您的grep中包含已编译的“elc”文件,因为某些源文件不是作为源文件出现的。也许还需要检查您的自动加载?它们可能会指定加载路径之外的路径。当然,任何操纵加载路径的代码都将丢失。@Bruce-好的方面。并且纠正了多余的concats(已编辑)-显然我一直在回想起我头脑中的其他Lisp@tripleee-我想你是对的-这些函数是可用的(因此“功能”),但在第一次调用之前不会实际加载。人们可以添加/定制另一个grep
来包含这些内容。Emacs有排序行
,但没有与排序-u
完全等价的东西;另见