2010-08-16 14 views
7

इमेक्स के पास फ्लेक्स और बाइसन में ऑटो इंडेंटेशन का खराब प्रबंधन है। वास्तव में, ऐसा लगता है कि फ्लेक्स मोड के लिए कोई समर्थन नहीं है। तो, उपयोगकर्ता के साथ एक emacs कैसे सामना करता है? मुझे VIM पसंद है लेकिन मैं स्विच नहीं करना चाहूंगा क्योंकि मैं Emacs में बहुत तेज और अधिक आरामदायक हूं।फ्लेक्स और बाइसन के लिए Emacs मोड, या इन मोड के लिए ऑटो इंडेंट को हटा रहा है?

कुछ महीने पहले मेरे पास बाइसन के लिए एक थर्ड पार्टी एलिस्प मॉड्यूल था, लेकिन जब इसका इंडेंटेशन टूट गया, तो यह कभी तय नहीं होगा। संक्षेप में, यह एक बुरा हैक था।

या क्या कोई तरीका है कि मैं .l और .y फ़ाइलों के लिए ऑटो इंडेंटेशन बंद कर सकता हूं (इसलिए दबाव एक इंडेंट करेगा)? मैं सिर्फ emacs के लिए इस elisp सेटिंग कैसे बदलूँगा?

elisp के लिए एक अच्छी और संक्षिप्त मार्गदर्शिका भी बहुत उपयोगी होगी। अगर मेरे पास सही दस्तावेज था तो मुझे अपने स्वयं के फ्लेक्स और बाइसन मोड लिखने के लिए कुछ दिन बिताना पड़ेगा।

+0

मुझे यकीन है कि आप ".l और .y फ़ाइलों के लिए ऑटो खरोज बंद" द्वारा क्या मतलब है नहीं कर रहा हूँ। मॉडलिन का क्या मतलब है? आप ऑटो-मोड-एलीस्ट को संशोधित करके समायोजित कर सकते हैं। – zwol

+0

यह बाइसन के लिए सी मोड में प्रतीत होता है। फ्लेक्स के लिए, यह लिस्प मोड में है। बाइसन के लिए सी मोड सहनशील है, लेकिन ऐसा लगता है कि Emacs के लिए कोई लेक्स या फ्लेक्स मोड नहीं हैं। – Kizaru

+0

आपने पहले ही इस देखा हो सकता है, लेकिन अगर नहीं मुझे निम्नलिखित प्रश्न का उल्लेख: http://stackoverflow.com/questions/2166680/is-there-a-good-emacs-mode-or-method-for- लेक्स-फ्लेक्स-याक-जंगली भैंसों-फ़ाइलें –

उत्तर

3

Emacs मुख्य रूप से फ़ाइल नाम एक्सटेंशन के आधार पर प्रमुख मोड चुनता है। .l एक दलित विस्तार है: कुछ लोग इसे लेक्स के लिए उपयोग करते हैं, अन्य लिस्प के लिए (और कुछ अन्य दुर्लभ उपयोग हैं)। Emacs एकत्रित करती है तुतलाना साथ .l, और लेक्स साथ .lex (जिसके लिए वह सी मोड का उपयोग करता)।

.l फ़ाइलें आपके साथ काम अधिक बार तुतलाना से लेक्स हैं, तो आप बदल सकते हैं क्या .l फ़ाइलें आपके .emacs में निम्न पंक्ति से संबद्ध हैं:

(add-to-list 'auto-mode-alist '("\\.l\\'" . c-mode)) 

तुम भी एक फ़ाइल क्या मोड के अंदर घोषित कर सकते हैं जब आप फ़ाइल खोलते हैं तो आप Emacs का उपयोग करना चाहते हैं। (आमतौर पर एक टिप्पणी में) फ़ाइल की पहली पंक्ति पर निम्नलिखित स्निपेट रखो:

-*-mode: c-mode-*- 

यह एक अधिक सामान्य विशेषता है अन्य वाक्यविन्यास और अन्य संभावनाओं की पेशकश; अधिक जानकारी के लिए Emacs मैन्युअल में "फ़ाइल चर" देखें।


आप चाहते हैं, तो Emacs लिस्प के साथ आरंभ करने के लिए, पढ़ने के Emacs Lisp intro (जो आपके Emacs या ओएस वितरण में शामिल किया जा सकता है)। एक बार जब आप भाषा की मूल बातें के साथ थोड़ा सा खेल लेंगे, तो आप Emacs Lisp संदर्भ मैनुअल में मोड पर अध्याय पर जा सकते हैं।

+0

मैं घर पर मेरे Emacs सेटअप पर इस कोशिश करता हूँ ... मैं पूरी तरह यकीन नहीं है, लेकिन मैंने सोचा कि फ्लेक्स/लेक्स सी मोड (विशेष रूप से नियम अनुभाग में) के साथ मुद्दों था।उदाहरण के लिए, यदि रेखा का पहला अक्षर व्हाइटस्पेस नहीं है, तो फ्लेक्स इसे मिलान करने के लिए एक पैटर्न के रूप में व्याख्या करता है। सी मोड के साथ, अगर मैं किसी नियम के अनुरूप कुछ कोड रखना चाहता था, तो मैं इसे तब तक बंद करने में असमर्थ हूं जब तक कि मैं इंडेंट को मजबूर नहीं करता, जो थकाऊ है। यहां क्या करना है इसके लिए कोई आसान समाधान या विचार? – Kizaru

+0

@PlaZMAZ: मुझे नहीं लगता कि आप इसे थोड़ा कोड लिखने के बिना हल कर सकते हैं। एक लेक्स या yacc मोड सी मोड से लिया जाएगा (Emacs Lisp मैन्युअल में "व्युत्पन्न मोड" देखें)। सीसी मोड में एक जटिल इंडेंटेशन इंजन है, जिसे मैंने कभी नहीं देखा है; मुझे लगता है कि "उन्नत अनुकूलन" अनुभाग आपको रूचि देगा। वाक्यविन्यास रंग के लिए, "फ़ॉन्ट लॉक मोड" देखें। – Gilles

1

अतिरिक्त युक्ति: आप यह तय कर सकते हैं कि आप जो चाहते हैं वह Emacs का सामान्य व्यवहार है - इसका उपयोग तब होता है जब फ़ाइल प्रारूप के लिए कोई विशेष मोड नहीं होता है। करने के लिए

(add-to-list 'auto-mode-alist '("\\.l\\'" . fundamental-mode)) 

एक और बात: यह Emacs शब्दावली में मौलिक मोड कहा जाता है: तो तुम इतनी तरह M-x fundamental-mode फिरते यह अनुरोध कर सकते हैं, या फ़ाइल की पहली पंक्ति पर -*- mode: fundamental -*- शब्दों में कहें, या अनुकूलित ऑटो मोड-alist कोशिश करें indented-text-mode (शायद ऑटो-फिल अक्षम के साथ)।