Estou tentando escrever uma função que irá recuperar os docstrings de qualquer sexps em um arquivo que corresponda (def.*)
.
Eu gostaria de poder recuperar quaisquer funções / macros, bem como quaisquer variáveis definidas. Para variáveis, eu desejaria a sequência de caracteres, enquanto para todas as funções, também desejaria as listas de argumentos.
elisp
doc-strings
Jonathan Leech-Pepin
fonte
fonte
(def…)
sexps, não apenas especificações de nível superior? Ou a interpretação intermediária das funções e variáveis que seriam definidas se o arquivo for carregado? Ou uma definição mais relaxada que inclua formulários de nível superior como(when nil (defun …))
)?describe-function
e os amigos fazem uma boa parte do que você deseja (lista de doutrinas e argumentos).Respostas:
Se o objetivo é obter informações sobre funções e variáveis já existentes no ambiente :
Para documentos de funções e macros, consulte a
documentation
funçãoPara documentos variáveis, use
documentation-property
; por exemplo:Para arity da função e a lista de argumentos, consulte esta pergunta do Emacs.SE , a resposta e comentários à pergunta.
(Encontrei isso pressionando
C-h k C-h f
e percorrendo o código fonte dedescribe-function
(o mesmo para documentos de variáveis, mas estudandodescribe-variable
).)Para analisar um arquivo de código-fonte do Emacs Lisp, assumindo que o objetivo é obter informações sobre os
def.*
formulários de nível superior , é possível fazer algo semelhante ao seguinte.Isto pode ser facilmente estendido para
defvar
,defconst
, etc.Para lidar com a
defun
aparência dentro de formulários de nível superior, seria necessário descer para esses formulários, possivelmente usando recursão.fonte