यदि लक्ष्य पर्यावरण में पहले से ही कार्यों और चर के बारे में जानकारी प्राप्त करना है :
फ़ंक्शंस और मैक्रोज़ के डोकस्ट्रिंग्स के लिए, फ़ंक्शन देखें documentation
।
चर docstrings के लिए, उपयोग करें documentation-property
; उदाहरण के लिए:
(documentation-property
'user-init-file 'variable-documentation)
फ़ंक्शन एरीटी और तर्क सूची के लिए, यह Emacs.SE प्रश्न , उत्तर और प्रश्न के लिए टिप्पणियां देखें।
(मैंने C-h k C-h f
इसे स्रोत कोड को दबाकर और स्किमिंग के describe-function
लिए समान रूप से पाया , लेकिन इसका अध्ययन किया गया describe-variable
)।)
Emacs Lisp स्रोत कोड फ़ाइल का विश्लेषण करने के लिए, यह मानते हुए कि लक्ष्य शीर्ष-स्तरीय def.*
रूपों के बारे में जानकारी प्राप्त करना है , व्यक्ति निम्नलिखित के समान कुछ कर सकता है।
(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)))))
यह आसानी से करने के लिए बढ़ाया जा सकता है defvar
, defconst
आदि
शीर्ष-स्तरीय रूपों के अंदरdefun
प्रदर्शित होने से निपटने के लिए इन रूपों में उतरना होगा , संभवतः पुनरावृत्ति का उपयोग करना।
(def…)
सेक्सप्स चाहते हैं , न कि केवल शीर्ष-स्तरीय चश्मा? या फ़ंक्शंस और चर की मध्यवर्ती व्याख्या जो फ़ाइल लोड होने पर परिभाषित की जाएगी? या अधिक आराम की परिभाषा जिसमें इस तरह के शीर्ष-स्तरीय रूप शामिल हैं(when nil (defun …))
)?