/ / Списък на всички необходими функции - emacs, elisp

Посочете всички необходими функции - emacs, elisp

Има ли функция в elisp, която изброява всички налични в emacs функции?

Под наличната функция имам предвид всички символи, които могат да се използват като аргументи за (require "some-symbol) без да получавате грешка (дори ако още не са били заредени).

Отговори:

1 за отговор № 1

Интересен въпрос. Е, нека кажем, че просто пресечете load-path и grep на нещо подобно provide - Това ли е списъкът с „характеристики“, които търсите?

(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)
...

(Изпълняването на това предостави бонуса да ми показва някои остарели директории в моя собствен път на зареждане).

EDIT: Тук е малка версия, включваща предложенията на 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))

1 за отговор № 2

Има променлива features това прави точно това. require проверява го на повикване. Това е всичко в документа.


1 за отговор № 3

Изпробвайте търсещия: интерактивно,

C-h p изпълнява командата finder-by-keyword, която е интерактивна autoloaded компилира Lisp функция в `finder.el '.

Той е свързан с C-h p, <f1> p, <help> p, <menu-bar> <help-menu> <Намерят-Emacs опаковки>.

(Търсач по дума)

Намерете пакети, отговарящи на дадена ключова дума.

или в код, достъп finder-keywords-hash след а (load-library "finder-inf").