Как получить список неактивных функций Emacs lisp?
Как получить полный список неинтерактивных функций, которые я могу использовать в Emacs Lisp?
Интерактивные легко найти в справочной системе, но я хочу получить полный список всех других функций, которые я могу использовать. Например concat
, car
, cdr
и т.д. (И желательно с документацией).
Спасибо
Ed
Редактировать: ответили благодаря Джуни. Я немного поиграл с его ответом и получил его для сортировки результатов (используя результаты его кода, чтобы помочь мне найти правильную функцию сортировки!)
(flet ((first-line (text)
(if text
(substring text 0 (string-match "\n" text))
"")))
(let ((funclist (list)))
(mapatoms
(lambda (x)
(and (fboundp x) ; does x name a function?
(not (commandp (symbol-function x))) ; is it non-interactive?
(subrp (symbol-function x)) ; is it built-in?
(add-to-list 'funclist
(concat (symbol-name x) " - " (first-line (documentation x))
"\n")))))
(dolist (item (sort funclist 'string<))
(insert item))))
Ответы
Ответ 1
Вот основная идея - см. руководство Emacs Lisp для любых неясных понятий.
(flet ((first-line (text)
(if text
(substring text 0 (string-match "\n" text))
"")))
(mapatoms
(lambda (x)
(and (fboundp x) ; does x name a function?
(not (commandp (symbol-function x))) ; is it non-interactive?
(subrp (symbol-function x)) ; is it built-in?
(insert (symbol-name x) " - " (first-line (documentation x)) "\n")))))
Ответ 2
Попробуйте apropos
вместо apropos-command
. Это даст вам все функции, а не только интерактивные. C-h a
по умолчанию привязан последним, но если вы делаете много взлома elisp, я рекомендую привязать его к первому.
Ответ 3
Вы можете проверить содержимое obarray, хотя оно содержит все символы, а не "все функции".
В качестве альтернативы, следующее может сделать трюк (потянет части пакета совместимости CL):
(уменьшить (лямбда (до следующего) (если (fboundp next) (минус дальше так далеко) до сих пор)) obarray : начальное значение nil)
Ответ 4
вы можете сделать хуже, чем посмотреть на веб-сайте
Ответ 5
Попробуйте команду apropos с пустым вводом.
Ответ 6
Nevermind. Оказывается, Ch f (описать функцию) включает в себя неинтерактивные функции, хотя мне все равно будет интересно найти способ просмотра/поиска только неинтерактивных (особенно только встроенных).