Question

Comment obtenir une liste complète des fonctions non interactives que je peux utiliser dans Emacs Lisp?

Les outils interactifs sont assez faciles à trouver dans le système d’aide, mais je veux une liste complète de toutes les autres fonctions que je peux utiliser. Par exemple, concat , voiture , cdr , etc. (et de préférence avec documentation).

Merci

Ed

Edit: a répondu à Jouni. Je me suis un peu amusé avec sa réponse et l’ai fait pour trier les résultats (en utilisant les résultats de son code pour m'aider à trouver la fonction de tri correcte!)

(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))))
Était-ce utile?

La solution

Voici l’idée de base - consultez le manuel Emacs Lisp pour tout concepts peu clairs.

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

Autres conseils

Essayez apropos au lieu de commande apropos . Cela vous donnera toutes les fonctions, pas seulement interactives. C-h a est lié par défaut à ce dernier, mais si vous faites beaucoup de piratage elisp, je vous recommande de le lier à l'ancien.

Vous pouvez vérifier le contenu de obarray, même s'il contient tous les symboles, plutôt que "toutes les fonctions".

Sinon, les solutions suivantes peuvent faire l'affaire (extraire certaines parties du package de compatibilité CL):

(réduire (lambda (so-far next)) (if (fboundp next) (par rapport à so-far) so-far))     obarray     : valeur initiale nulle)

vous pourriez faire pire que consulter le site Web

Essayez la commande apropos avec une entrée vide.

Peu importe. Il s'avère que Ch f (décrire la fonction) inclut des fonctions non interactives, même si je serais toujours intéressé de trouver un moyen de visualiser / rechercher uniquement les fonctions non interactives (en particulier celles intégrées).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top