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-function
y 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
documentation
funció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 f
y 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
defun
aparición dentro de los formularios de nivel superior, uno tendría que descender a estos formularios, posiblemente utilizando la recursividad.fuente