2012-07-03 18 views
6

Emacs को स्वचालित रूप से फ्लाई पर रूबी कोड कैसे दिखाना है?emacs में फ्लाई पर इंडेंट रूबी कोड

उदाहरण के लिए

, Emacs में इस के साथ,

def hello 
    puts "hello" 
    en 

बाद मैं प्रकार 'डी', मैं इसे इस में बदल करना चाहते हैं,

def hello 
    puts "hello" 
end 

यह विम में डिफ़ॉल्ट है, लेकिन कैसे क्या मैं इमाक्स में इसे प्राप्त कर सकता हूं?

उत्तर

3

ruby-electric पुरानी खबर है। Emacs 24 में अंतर्निहित मामूली मोड है जिसे electric-indent-mode कहा जाता है जो कुछ वर्णों के बाद स्वचालित रूप से न्यूलाइन डालता है और आप निश्चित रूप से RETURN कुंजी newline-and-indent पर रीमेप कर सकते हैं (यह केवल डिफ़ॉल्ट रूप से इंडेंट करने के लिए मैप किया गया है)। Emacs 24 में आप electric-pairs-mode और ruby-end मोड के साथ मेल खाने वाले डिलीम्स प्राप्त कर सकते हैं जब आवश्यक हो तो आपके लिए स्वचालित रूप से end डालेंगे। अधिक जानकारी के लिए आप prelude-ruby.el पर एक नज़र डाल सकते हैं।

+0

'इलेक्ट्रिक इंडेंट-मोड' अच्छा है, अब मैं 'आरईटी' को 'टिप्पणी-इंडेंट-न्यू-लाइन' से बांधता हूं। धन्यवाद। – fangwen

2

आप ruby-electric (भी Rinari का हिस्सा) जोड़ देते हैं तो आप निम्नलिखित प्राप्त:

  • सही ढंग से इंडेंट "अंत" जब आप "वर्ग" लिखते हैं, "def", "मॉड्यूल" आदि
  • मिलान जब आप ओपनिंग टाइप करते हैं तो डिलीमीटर।

आप अतिरिक्त मोड में शामिल नहीं करना चाहते हैं, end सही ढंग से इंडेंट किया जाएगा एक बार आप प्रेस दर्ज करें। या आप मौजूदा लाइन को फिर से इंडेंट करने के लिए टैब दबाएं।

+0

आपकी युक्तियों के लिए धन्यवाद, लेकिन क्या यह फ्लाई पर इंडेंटेशन काम करने के लिए एक elisp फ़ंक्शन लिखना संभव है? – fangwen

+0

यह उत्तर मक्खी पर कैसे नहीं है? क्या आपने इसे आजमाया? –

0

Auto-indent-mode आज़माएं!

  1. वापसी स्वचालित रूप से कोड उचित रूप से indents (यदि सक्षम)
  2. चिपकाया जा रहा है/yanking indents उचित रूप से
  3. हत्या लाइन अनावश्यक रिक्त स्थान से दूर ले जाएगा (यदि सक्षम)
  4. यात्रा फ़ाइल, मांगपत्र पर उचित रूप से, लेकिन बचाओ (अगर कुछ भी हुआ, तो दिखाएं)
  5. सहेजने पर, वैकल्पिक रूप से अवांछित, पिछली श्वेत-रिक्त स्थान को हटा दें, और निश्चित रूप से फ़ाइल को इंडेंट करें (यदि सक्षम है)।
0

यह काम नहीं करेगा क्योंकि रूबी को यह नहीं पता है कि आप "अंत" से शुरू होने वाले किसी भी चर के "अंत" टाइप करना चाहते हैं या नहीं। तो फिर से इंडेंट करने के लिए Tab टाइप करना आवश्यक है। और निम्न विन्यास मेरे लिए अच्छा काम करता है।

; auto indent                                                  
(define-key global-map (kbd "RET") 'newline-and-indent) 
(add-hook 'ruby-mode-hook (lambda() (local-set-key "\r" 'newline-and-indent))) 
संबंधित मुद्दे