Amaç, ortamdaki işlevler ve değişkenler hakkında bilgi almaksa :
Fonksiyonlar ve makrolar için bkz. documentation
Fonksiyon.
Değişken öğretiler için documentation-property
; Örneğin:
(documentation-property
'user-init-file 'variable-documentation)
İşlevselliği ve bağımsız değişken listesi için bu Emacs.SE sorusuna , sorunun cevabına ve sorunun yorumlarına bakın.
(Bunu C-h k C-h f
, kaynak koduna basıp gözden geçirerek buldum describe-function
(değişken doktrinler için aynı, ama çalışıyorum describe-variable
).)
Amacın üst düzey def.*
formlar hakkında bilgi edinmek olduğunu kabul ederek bir Emacs Lisp kaynak kodu dosyasını analiz etmek için aşağıdakine benzer bir şey yapılabilir.
(defun get-defun-info (buffer)
"Get information about all `defun' top-level sexps in a buffer
BUFFER. Returns a list with elements of the form (symbol args docstring)."
(with-current-buffer buffer
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
(let (result)
;; keep going while reading succeeds
(while (condition-case nil
(progn
(read (current-buffer))
(forward-sexp -1)
t)
(error nil))
(let ((form (read (current-buffer))))
(cond
((not (listp form)) ; if it's not a list, skip it
nil)
((eq (nth 0 form) 'defun) ; if it's a defun, collect info
(let ((sym (nth 1 form))
(args (nth 2 form))
(doc (when (stringp (nth 3 form)) (nth 3 form))))
(push (list sym args doc) result))))))
result)))))
Bu kolayca uzatılabilir defvar
, defconst
vb
İşlemek için defun
görünen iç üst düzey formları tek inerek olurdu içine muhtemelen özyineleme kullanılarak bu formların.
(def…)
sadece üst düzey özellikler değil, tüm sexps'leri gerçekten istiyor musunuz? Veya dosya yüklenirse tanımlanacak fonksiyonların ve değişkenlerin ara yorumu? Ya da gibi üst düzey formları içeren daha rahat bir tanım(when nil (defun …))
?