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))))
¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top