Erlang 21 - 3. The Erlang mode for Emacs

3 Emacs के लिए एरलैंग मोड




erlang

3 Emacs के लिए एरलैंग मोड

३.१ प्रयोजन

इस उपयोगकर्ता गाइड का उद्देश्य आपको Emacs के लिए Erlang मोड से परिचित कराना है और फ़ंक्शन और सुविधाओं की कुछ प्रासंगिक पृष्ठभूमि जानकारी देता है। Erlang mode reference manual भी देखें Erlang mode reference manual का उद्देश्य स्वयं Erlang प्रोग्रामर के लिए विकासशील प्रक्रिया को सुविधाजनक बनाना है।

3.2 पूर्व आवश्यक वस्तुएँ

Emacs और Erlang / OTP का बुनियादी ज्ञान।

३.३ कल्प

इस उपकरण पैकेज में Emacs के लिए दो एलिस्प मॉड्यूल शामिल हैं। Erlang.el है जो वास्तविक erangang मोड को परिभाषित करता है और erlang-start.el है जो कुछ अच्छी इनिशियलाइज़ेशन बनाता है।

3.4 यूनिक्स पर सेटअप

एक UNIX सिस्टम पर Erlang Emacs मोड सेट करने के लिए, अपने होम डायरेक्टरी में फाइल .emacs को एडिट / क्रिएट करें।

नीचे एक उपयोगकर्ता के लिए क्या जोड़ा जाना चाहिए, इसका पूरा उदाहरण नीचे दिया गया है। बशर्ते कि OTP निर्देशिका /usr/local/otp :

(setq load-path (cons  "/usr/local/otp/lib/tools-<ToolsVer>/emacs"
load-path))
(setq erlang-root-dir "/usr/local/otp")
(setq exec-path (cons "/usr/local/otp/bin" exec-path))
(require 'erlang-start)

विंडोज पर 3.5 सेटअप

विंडोज सिस्टम पर एरलैंग इमैक मोड को सेट करने के लिए, फाइल को .emacs को एडिट / क्रिएट करें, फाइल का लोकेशन सिस्टम के कॉन्फ़िगरेशन पर निर्भर करता है। यदि गृह परिवेश चर सेट है, तो Emacs गृह चर द्वारा दर्शाई गई निर्देशिका में .emacs फ़ाइल की तलाश करेंगे। अगर घर सेट नहीं है, तो Emacs C:\ में .emacs फ़ाइल की तलाश करेगा।

नीचे एक उपयोगकर्ता के लिए क्या जोड़ा जाना चाहिए, इसका पूरा उदाहरण नीचे दिया गया है। बशर्ते कि OTP निर्देशिका C:\Program Files\erl<Ver> :

(setq load-path (cons  "C:/Program Files/erl<Ver>/lib/tools-<ToolsVer>/emacs"
load-path))
(setq erlang-root-dir "C:/Program Files/erl<Ver>")
(setq exec-path (cons "C:/Program Files/erl<Ver>/bin" exec-path))
(require 'erlang-start)
ध्यान दें

.Emacs में, स्लैश चरित्र "/" का उपयोग पथ विभाजक के रूप में किया जा सकता है। लेकिन अगर आप बैकस्लैश कैरेक्टर "\" का उपयोग करने का निर्णय लेते हैं, तो कृपया यह न करें कि आपको डबल बैकस्लैश का उपयोग करना होगा, क्योंकि उन्हें एमाक्स द्वारा भागने वाले पात्रों के रूप में माना जाता है।

3.6 इंडेंटेशन

"वर्तमान अंग्रेजी के ऑक्सफोर्ड एडवांस्ड लर्नर्स डिक्शनरी" शब्द "इंडेंट" के बारे में निम्नलिखित कहता है:

"प्रारंभ (प्रिंट या लेखन की एक पंक्ति) दूसरों की तुलना में मार्जिन से दूर है"।

एर्लैंग मोड, निश्चित रूप से, यह सुविधा प्रदान करता है। उपयोग किया गया लेआउट भाषा के सामान्य उपयोग पर आधारित है।

यह दृढ़ता से इस सुविधा का उपयोग करने और गैर-मानक तरीके से इंडेंट लाइनों से बचने की सिफारिश करता है। कुछ प्रेरणाएँ हैं:

  • समान लेआउट का उपयोग करके कोड पढ़ना और बनाए रखना आसान है।
  • चूंकि एरलैंग मोड की कई विशेषताएं मानक लेआउट पर आधारित हैं, यदि वे एक गैरमानक लेआउट का उपयोग किया जाता है तो वे सही ढंग से काम नहीं कर सकते हैं।

इंडेंटेशन फीचर का इस्तेमाल किसी फाइल के बड़े सेक्शन को रिइंडेंट करने के लिए किया जा सकता है। यदि कुछ पंक्तियों में अमानक इंडेंटेशन का उपयोग किया जाता है तो वे फिर से संतुलित हो जाएंगे।

3.7 संपादन

  • Mx erlang-mode RET - यह कमांड वर्तमान बफर के लिए Erlang प्रमुख मोड को सक्रिय करता है। जब यह मोड सक्रिय होता है तो मोड लाइन में "एरलैंग" शब्द होता है।

जब Erlang मोड को सही तरीके से स्थापित किया जाता है, तो Emacs में .erl या .hrl को समाप्त करने वाली फ़ाइल स्वतः सक्रिय हो .hrl है।

जब फ़ाइल को -module(). में नाम से बचाया जाता है -module(). फ़ाइल नाम के विरुद्ध लाइन की जाँच की जाती है। क्या उन्हें Emacs को मिसमैच करना चाहिए ताकि मॉड्यूल स्पेसिफिक को बदल सकें ताकि वह फ़ाइल नाम से मेल खाए। डिफ़ॉल्ट रूप से, उपयोगकर्ता को परिवर्तन करने से पहले पूछा जाता है।

एक "इलेक्ट्रिक" कमांड एक ऐसा चरित्र है जो सिर्फ चरित्र डालने के अलावा कुछ प्रकार की क्रिया करता है। उदाहरण के लिए "?" चरित्र एक ऐसी स्थिति में टाइप किया जाता है जहाँ एक फ़ंक्शन क्लॉज होता है एक नया फ़ंक्शन हेडर उत्पन्न होता है। बिजली के आदेश इस प्रकार हैं:

  • erlang-electric-comma - एक अल्पविराम वर्ण और संभवतः एक नई इंडेंटेड पंक्ति सम्मिलित करें।
  • erlang-electric-semicolon - एक अर्धविराम चरित्र और संभवतः अगली पंक्ति के लिए एक प्रोटोटाइप सम्मिलित करें।
  • erlang-electric-gt - "एक '>' डालें - एक नई इंडेंटेड लाइन पर हस्ताक्षर और संभव।

सभी इलेक्ट्रिक कमांड को डिसेबल करने के लिए वैरिएबल erlang-electric-commands को खाली लिस्ट में सेट करें। संक्षेप में, निम्न पंक्ति को अपने .emacs -file में रखें:

(setq erlang-electric-commands '())

3.8 सिंटेक्स हाइलाइटिंग

एक बफर को प्रदर्शित करते समय रंगों का उपयोग करना Emacs के लिए संभव है। "सिंटैक्स हाइलाइटिंग" से हमारा मतलब है कि सिंटैक्टिक घटक, उदाहरण के लिए कीवर्ड और फ़ंक्शन नाम, रंगीन होंगे।

वाक्य रचना हाइलाइटिंग का मूल विचार एक कार्यक्रम की संरचना को स्पष्ट करना है। उदाहरण के लिए, हाइलाइटिंग सरल बग को स्पॉट करना आसान बना देगा। क्या आपने कभी केवल लोअर-केस में एक चर नहीं लिखा है? वाक्यविन्यास के साथ एक चर पर प्रकाश डाला जाएगा, जबकि परमाणुओं को सामान्य पाठ रंग के साथ दिखाया जाएगा।

3.9 टैग

टैग एक मानक Emacs पैकेज है जिसका उपयोग बड़े विकास परियोजनाओं में स्रोत फ़ाइलों के बारे में जानकारी रिकॉर्ड करने के लिए किया जाता है। किसी प्रोजेक्ट की फ़ाइलों को सूचीबद्ध करने के अलावा, एक टैग फ़ाइल में सामान्य रूप से परिभाषित किए गए सभी फ़ंक्शन और चर के बारे में जानकारी होती है। अब तक, टैग सिस्टम का सबसे उपयोगी कमांड प्रोजेक्ट में किसी भी फाइल में फ़ंक्शंस की परिभाषा खोजने की इसकी क्षमता है। हालाँकि टैग सिस्टम इस सुविधा तक सीमित नहीं है, उदाहरण के लिए, किसी प्रोजेक्ट में सभी फाइलों में टेक्स्ट सर्च करना या प्रोजेक्ट-वाइड सर्च करना और बदलना संभव है।

टैग सिस्टम का उपयोग करने के लिए TAGS नामक एक फाइल TAGS होगी। फ़ाइल को प्रोजेक्ट में सभी फ़ंक्शंस, रिकॉर्ड्स और मैक्रोज़ पर डेटाबेस के रूप में देखा जा सकता है। TAGS फ़ाइल Erlang के लिए दो अलग-अलग तरीकों का उपयोग करके बनाई जा सकती है। पहला मानक Emacs उपयोगिता "etags" है, दूसरा Erlang मॉड्यूल tags का उपयोग करके है।

3.10 Etags

etags एक प्रोग्राम है जो Emacs वितरण का हिस्सा है। इसे आमतौर पर एक कमांड लाइन से एक यूनिक्स शेल या डॉस बॉक्स की तरह निष्पादित किया जाता है।

Emacs और etags के काफी आधुनिक संस्करणों के etags कार्यक्रम में etags लिए मूल समर्थन है। यह जांचने के लिए कि क्या आपके संस्करण में यह समर्थन शामिल है, कमांड लाइन प्रॉम्प्ट पर कमांड etags --help जारी करें। सहायता पाठ के अंत में समर्थित भाषाओं की एक सूची है। जब तक एर्लैंग इस सूची का सदस्य नहीं है, मेरा सुझाव है कि आपको एमएसीएस के एक नए संस्करण में अपग्रेड करना चाहिए।

जैसा कि सहायता पाठ में देखा गया है - जब तक आपने अपने Emacs को अभी तक अपग्रेड नहीं किया है (ठीक है, आप यहां क्या इंतजार कर रहे हैं? क्या आप जाते हैं और अपग्रेड करते हैं?) - etags फ़ाइल एक्सटेंशन .erl और .hrl को Erlang के साथ .hrl

मूल रूप से, etags उपयोगिता निम्नलिखित फ़ॉर्म का उपयोग करके चलाई गई है:

etags file1.erl file2.erl

यह वर्तमान निर्देशिका में TAGS नामक एक फ़ाइल बनाएगा।

etags यूटिलिटी फ़ाइल नामों के स्थान पर एकल डैश की आपूर्ति करके अपने मानक इनपुट से फ़ाइलों की एक सूची भी पढ़ सकती है। यह सुविधा तब उपयोगी होती है जब किसी प्रोजेक्ट में बड़ी संख्या में फाइलें होती हैं। मानक UNIX कमांड फाइल्स की सूची बनाने के लिए इस्तेमाल की जा सकती है, जैसे:

find . -name "*.[he]rl" -print | etags -

उपरोक्त पंक्ति वर्तमान निर्देशिका में सभी Erlang स्रोत फ़ाइलों को कवर करने वाली TAGS फ़ाइल बनाएगी, और नीचे उपनिर्देशिकाओं में।

कृपया अधिक जानकारी के लिए GNU Emacs Manual और etags मैन पेज देखें।

3.11 शैल

Emacs के अंदर एक Erlang खोल पर लग रहा है और एक सामान्य Erlang खोल के रूप में होना चाहिए। बस एक बड़ा अंतर है, कर्सर कुंजी वास्तव में किसी भी सामान्य Emacs बफर की तरह कर्सर को चारों ओर ले जाएगी। कमांड लाइन के इतिहास को निम्न आदेशों द्वारा पहुँचा जा सकता है:

  • C-up या Mp ( comint-previous-input ) - इनपुट हिस्ट्री में पिछली लाइन पर जाएं।
  • C-down या Mn ( comint-next-input ) - इनपुट इतिहास में अगली पंक्ति पर जाएं।

यदि Erlang खोल बफ़र को मार दिया जाएगा कमांड लाइन इतिहास एक फ़ाइल में सहेजा गया है। कमांड लाइन इतिहास स्वचालित रूप से पुनर्प्राप्त किया जाता है जब एक नया एर्लांग खोल शुरू किया जाता है।

3.12 संकलन

एरलैंग के लिए क्लासिक एडिट-कंपाइल-बगफिक्स चक्र एक स्रोत फ़ाइल को एक संपादक में संपादित करना है, इसे एक फ़ाइल में सहेजें और एक एरलैंग शेल पर स्विच करें। शेल में संकलन कमांड दिया जाता है। क्या संकलन विफल होना चाहिए आपको संपादक को बाहर लाना होगा और सही लाइन का पता लगाना होगा।

Erlang संपादन मोड के साथ संपूर्ण संपादन-संकलन-बगफिक्स चक्र को Emacs को छोड़े बिना किया जा सकता है। Emacs किसी फ़ाइल को संकलित करने के लिए Erlang का आदेश दे सकते हैं और यह त्रुटिपूर्ण संदेशों को स्वचालित रूप से गलत लाइनों पर रखने के लिए त्रुटि संदेश को पार्स कर सकता है।