2011-05-08 28 views
6

क्या SLIME macrostepper के लिए कोई एलिज़ एनालॉग है? विशेष रूप से, मैं ऐसा कुछ ढूंढ रहा हूं जो एक नए बफर में अगले विस्तार चरण (या केवल अंतिम विस्तार) में बिंदु पर कोड फैलाता है।Emacs Lisp मैक्रो स्टेपर

अनुभवहीन

(defun macroexpand-point() 
    (interactive) 
    (let ((b (get-buffer-create "*el-macroexpansion*")) 
     (expansion (format "%s" (macroexpand (thing-at-point 'sexp))))) 
    (with-current-buffer b 
     (insert expansion) 
     (display-buffer b)))) 

मैं यहाँ क्या उम्मीद कर रहा हूँ नहीं करता है।

(defun macroexpand-sexp-at-point() 
    (macroexpand (sexp-at-point))) 

पूरे समारोह अधिक succintly व्यक्त किया जा सकता है इस प्रकार

(defun macroexpand-point (sexp) 
    (interactive (list (sexp-at-point))) 
    (with-output-to-temp-buffer "*el-macroexpansion*" 
    (pp (macroexpand sexp))) 
    (with-current-buffer "*el-macroexpansion*" (emacs-lisp-mode))) 
+0

जिज्ञासा से, यह वास्तव में क्या करता है? मैक्रो-स्टेपर – PascalVKooten

+0

@Dualinity पर वास्तव में कुछ भी नहीं मिल सकता है - यह बिंदु पर elisp मैक्रो कॉल लेता है और यह आपको एक टेम्प बफर में फैला हुआ कोड दिखाता है। यदि वह अभी भी समझ में नहीं आता है, तो आपको [लिस्प में मैक्रोज़] (http://www.apl.jhu.edu/~hall/Lisp-Notes/Macros.html) पर पढ़ने की आवश्यकता हो सकती है। – Inaimathi

उत्तर

2

एक को macrostep package उपयोगी मिल सकता है।

macrostep पर

त्वरित howto:

आप पैकेज स्थापित, और आगे अनुकूलन के बिना, आप यह कर सकते हैं के बाद: अभिव्यक्ति आप का विस्तार करना चाहते से पहले

ले जाएँ कर्सर विस्तार करने के लिए यह कदम, तो M-x macrostep-expand e e e e e है कदम से इको क्षेत्र में कैसे छोड़ना है और कैसे अनदेखा करना है, इस बारे में गूंज क्षेत्र में लघु सहायता संदेश प्रदर्शित होता है।

कोई dash.el page से मैक्रो उदाहरणों पर इसका परीक्षण कर सकता है, जो बहुत आसान नहीं हैं और बहुत जटिल नहीं हैं।

संबंधित मुद्दे