आपकी समस्या इस तथ्य से उत्पन्न हो रही है कि आपने enter
को newline-and-indent
पर रीबाउंड किया है, जो scala-mode
का उपयोग करते समय बेवकूफ़ प्रतीत नहीं होता है। newline-and-indent
indent-according-to-mode
पर कॉल करना समाप्त होता है, जो कुछ अवांछित सेटिंग्स के लिए जांच करता है, यदि आवश्यक हो तो उनके चारों ओर काम करता है, और यदि सब ठीक है, तो indent-line-function
पर कॉल करना समाप्त होता है, जो एक बफर स्थानीय चर है।
चूंकि यह मोड-विशिष्ट है, मोड अपने indent-line-function
को परिभाषित करते हैं। सबसे सुंदर संगत व्यवहार है, लेकिन स्काला के समारोह scala-indent-line
, यहाँ देखा है:
(defun scala-indent-line()
"Indent current line as smartly as possible.
When called repeatedly, indent each time one stop further on the right."
(interactive)
(if (or (eq last-command this-command)
(eq last-command 'scala-undent-line))
(scala-indent-line-to (+ (current-indentation) scala-mode-indent:step))
(let
((indentation (scala-indentation)))
(scala-indent-line-to indentation))))
इस बारे में अजीब बात यह है कि यह बार-बार कॉल और इंडेंट आगे का पता लगाता है हर बार खत्म हो गया है। एम-एक्स का उपयोग करते समय, last-command
scala-indent-line
नहीं है, यह execute-extended-command
है। इसलिए, एम-एक्स का उपयोग करते समय, यह सही इंडेंटेशन स्तर पर इंडेंट जारी है। जब एक कुंजी से बंधे होते हैं, हालांकि, यह नोटिस करता है कि इसे तुरंत पहले निष्पादित किया गया था और एक अतिरिक्त स्तर को इंडेंट किया गया था।
प्रभाव संचयी नहीं है ... मुझे लगता है कि यह फ़ंक्शन के अंत में अजीब कमांड सेट की वजह से है, जो प्रारंभ में लाइन को इंडेंट करता है, लेकिन फिर (scala-indentation)
के साथ सही इंडेंटेशन के लिए जांच करता है और तदनुसार इंडेंट करता है।
मैं इस पर 100% नहीं हूं, लेकिन पहली नज़र में ऐसा लगता है कि ऐसा लगता है।
स्रोत
2010-09-01 04:59:04
वैसे तो समाधान उस कोड पथ में नहीं जाने देना है। निम्नलिखित काम करता है: (स्थानीय सेट कुंजी [वापसी] '(लैम्ब्डा() (सहभागी) (setq अंतिम आदेश नहीं के बराबर) (newline और मांगपत्र))))) – qrest