Estoy tratando de escribir una función que recupere las cadenas de documentos de cualquier sexps en un archivo que coincida (def.*).
Me gustaría poder recuperar las funciones / macros, así como las variables definidas. Para las variables me gustaría la cadena de documentación, mientras que para cualquier función también me gustaría las listas de argumentos.
elisp
doc-strings
Jonathan Leech-Pepin
fuente
fuente

(def…)sexps, no solo las especificaciones de nivel superior? ¿O la interpretación intermedia de las funciones y variables que se definirían si se carga el archivo? ¿O una definición más relajada que incluya formas de nivel superior como(when nil (defun …)))?describe-functiony los amigos hacen una buena parte de lo que quieres (docstring y lista de argumentos).Respuestas:
Si el objetivo es obtener información sobre funciones y variables que ya están en el entorno :
Para las cadenas de documentos de funciones y macros, vea la
documentationfunción.Para cadenas de documentos variables, use
documentation-property; por ejemplo:Para la función arity y la lista de argumentos, vea esta pregunta de Emacs.SE , la respuesta y los comentarios a la pregunta.
(Encontré esto presionando
C-h k C-h fy deslizando el código fuente dedescribe-function(lo mismo para cadenas de documentos variables, pero estudiandodescribe-variable)).Para analizar un archivo de código fuente de Emacs Lisp, suponiendo que el objetivo es obtener información sobre
def.*formularios de nivel superior , se puede hacer algo similar a lo siguiente.Esto se puede extender fácilmente a
defvar,defconst, etc.Para manejar la
defunaparición dentro de los formularios de nivel superior, uno tendría que descender a estos formularios, posiblemente utilizando la recursividad.fuente