Я пытаюсь написать функцию, которая будет извлекать строки документов из любого пола в файле, который соответствует (def.*)
.
Я хотел бы иметь возможность извлекать любые функции / макросы, а также любые переменные, которые определены. Для переменных мне нужна строка документации, а для любых функций - списки аргументов.
elisp
doc-strings
Джонатан Лич-Пепин
источник
источник
(def…)
полы, а не только спецификации высшего уровня? Или промежуточная интерпретация функций и переменных, которые будут определены, если файл загружен? Или более смягченное определение, которое включает такие формы высшего уровня как(when nil (defun …))
)?describe-function
и друзья делают довольно большую часть того, что вы хотите (строка документации и список аргументов).Ответы:
Если целью является получение информации о функциях и переменных уже в среде :
Строки документации по функциям и макросам см. В
documentation
функции.Для переменных строк документации используйте
documentation-property
; например:О функции функции и списке аргументов см. Этот вопрос Emacs.SE , ответ и комментарии к вопросу.
(Я нашел это, нажав
C-h k C-h f
и просматривая исходный кодdescribe-function
(то же самое для переменных строк документации, но изучаяdescribe-variable
).)Чтобы проанализировать файл исходного кода Emacs Lisp, предполагая, что целью является получение информации о
def.*
формах верхнего уровня , можно сделать что-то похожее на следующее.Это может быть легко расширена до
defvar
,defconst
и т.д.Чтобы обработать
defun
появление в формах верхнего уровня, нужно спуститься в эти формы, возможно, используя рекурсию.источник