2010-11-16 9 views
6

तो Emacs योजना/रैकेट/लिस्प कोड संपादित करने में बहुत अच्छा है। एक अच्छी बात यह है कि जब आप कोड टाइप करते हैं:मैं अन्य चीजों को इंडेंट करने के लिए emacs कैसे प्राप्त करूं जैसे इंडेंट परिभाषित करते हैं?

(define (make-position-table) 
    (for/list ([i (in-range 256)]) 
      `())) 

यह एक बहुत चालाक चीज करता है और दूसरी पंक्ति को दो कॉलम में इंडेंट करता है। अब तीसरी पंक्ति यह सभी लिस्प कोड और इंडेंट्स के साथ करता है जो सभी तर्कों को संरेखित करने के लिए करता है।

मैं Emacs को कैसे अनुकूलित करूं ताकि यह तीसरी पंक्ति को इंडेंट कर सके जैसे कि मैं एक नया शरीर पेश कर रहा था। क्या मैं चाहता है:

(define (make-position-table) 
    (for/list ([i (in-range 256)]) 
    `())) 

मेरा अनुमान है कि यह संभव है और कहा कि मैं सिर्फ पता लगा नहीं किया है स्थापित करने के लिए रहस्यमय Emacs चर। क्या किसी को भी यह करना आता है?

उत्तर

7

आप अपने .emacs फाइल करने के लिए इस जोड़ सकते हैं:

(put 'for/list 'scheme-indent-function 1) 

भी देखें एक hacked version of scheme mode कि कई और अधिक रैकेट-वाद करता है।

+0

मीठे! धन्यवाद। यह ठीक वही है जिसकी तलाश मुझे थी! – pknodle

+0

धन्यवाद !! यह pmatch के साथ महान काम करता है। – tcdowney

5

मुझे विश्वास है कि (put 'for/list 'scheme-indent-function 'defun) आपको जो चाहिए वह करना चाहिए।

अन्य प्रतीकों के लिए दोहराना। मेरे .emacs में

(mapc (lambda (sym) (put sym 'scheme-indent-function 'defun)) 
     (list 'for 'for/list 'for/and 'for/or 
      'match 'case 'syntax-parse 'test-suite 'test-case 
      'define-syntax-rule 'match-let 'match-let*)) 

उन दिनों से जब मैं पीएलटी योजना में डब रहा था।

+0

धन्यवाद। यह वास्तव में आसान है। – pknodle

+0

'defun' का उपयोग' 1' से अलग है: शुरुआती कीवर्ड के ठीक बाद एक नई लाइन आज़माएं और आप देखेंगे कि यह कैसे काम करता है। (इसके अलावा, रैकेट में 'फोल्ड/फ़ोल्ड' जैसी चीजें हैं जिनमें दो विशेष रूप हैं।) –

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