¿Cómo obtengo una lista de funciones no interactivas de Emacs lisp?
Pregunta
¿Cómo obtengo una lista completa de funciones no interactivas que puedo usar en Emacs Lisp?
Los interactivos son fáciles de encontrar en el sistema de ayuda, pero quiero una lista completa de todas las demás funciones que puedo usar. Por ejemplo, concat
, car
, cdr
, etc. (y preferiblemente con documentación).
Gracias
Ed
Editar: Respondió gracias a Jouni. Jugué un poco con su respuesta y conseguí ordenar los resultados (¡utilizando los resultados de su código para ayudarme a encontrar la función de clasificación correcta!)
(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))))
Solución
Aquí está la idea básica: consulte el manual de Emacs Lisp para cualquier conceptos poco claros.
(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")))))
Otros consejos
Pruebe apropos
en lugar de apropos-command
. Eso te dará todas las funciones, no solo las interactivas. C-h a
está vinculado de forma predeterminada a este último, pero si está realizando una gran cantidad de pirateos, recomiendo vincularlo al primero.
Puede comprobar el contenido de obarray, aunque contiene todos los símbolos, en lugar de " todas las funciones " ;.
Alternativamente, lo siguiente puede hacer el truco (se incluirá en partes del paquete de compatibilidad CL):
(reducir (lambda (hasta ahora lejano) (if (fboundp siguiente) (contras hasta ahora hasta ahora) hasta ahora)) obarray : valor inicial nil)
podría hacerlo peor que consulte el sitio web
Pruebe el comando apropos con una entrada vacía.
No importa. Resulta que Ch f (describe la función) incluye funciones no interactivas, aunque todavía estaría interesado en encontrar una manera de ver / buscar solo las no interactivas (especialmente solo las integradas).