J'essaie d'écrire une fonction qui récupérera les docstrings de n'importe quel sexps dans un fichier qui correspond (def.*)
.
Je voudrais pouvoir à la fois récupérer toutes les fonctions / macros, ainsi que toutes les variables définies. Pour les variables, je voudrais la docstring, tandis que pour toutes les fonctions, je voudrais également les listes d'arguments.
elisp
doc-strings
Jonathan Leech-Pepin
la source
la source
(def…)
sexps, pas seulement des spécifications de haut niveau? Ou l'interprétation intermédiaire des fonctions et des variables qui seraient définies si le fichier était chargé? Ou une définition plus détendue qui inclut des formes de niveau supérieur telles que(when nil (defun …))
)?describe-function
et les amis font une bonne partie de ce que vous voulez (docstring et liste d'arguments).Réponses:
Si l'objectif est d'obtenir des informations sur les fonctions et variables déjà présentes dans l'environnement :
Pour les docstrings de fonctions et de macros, voir la
documentation
fonction.Pour les docstrings variables, utilisez
documentation-property
; par exemple:Pour l'arité de la fonction et la liste des arguments, consultez cette question Emacs.SE , la réponse et les commentaires sur la question.
(J'ai trouvé cela en appuyant
C-h k C-h f
et en survolant le code source dedescribe-function
(idem pour les docstrings variables, mais en étudiantdescribe-variable
).)Pour analyser un fichier de code source Emacs Lisp, en supposant que le but est d'obtenir des informations sur les
def.*
formulaires de niveau supérieur , on peut faire quelque chose de semblable au suivant.Ceci peut être facilement étendu à
defvar
,defconst
etc.Pour gérer l'
defun
apparition à l' intérieur de formulaires de niveau supérieur, il faudrait descendre dans ces formulaires, éventuellement en utilisant la récursivité.la source