2011-01-16 15 views
8

dunnet.el गेम, एलिज़ा डॉक्टर या आईईएलएम मोड की कल्पना करें ...; यह, मुख्य बफर पर उत्तरों का मूल्यांकन और नए प्रश्नों को प्रेरित करने, फिर कुछ क्रियाओं को उनके elisp नियमों के अनुसार बनाना है।Emacs Lisp: कैसे, आरईपीएल के साथ एक इंटरैक्टिव बफर?

मैं एक इंटरेक्टिव सहायक की तरह कुछ बनाना चाहता हूं, लेकिन मिनीबफर से (इंटरैक्टिव) (एम-एक्स नहीं कर रहा) के रूप में संकेत नहीं दे रहा है ... मुझे एक प्रकार का आरईपीएल लूप चाहिए। तो सवाल यह है कि मैं किसी भी पाठ बातचीत/साहस की तरह काम करने वाले बफर (मुख्य स्क्रीन) पर बातचीत कैसे प्राप्त करूं, लेकिन इस तरह से मेरे defuned कार्यों को कॉल करने के लिए।

तो मुझे एक कस्टम आरईपीएल बनाने के लिए एक मूल elisp कंकाल की जरूरत है। लक्ष्य एक प्राकृतिक भाषा के साथ सहायक बनाना है, फिर anwsers को पार्स करना, और नियमों के अनुसार कुछ कार्य करना है।

अपने समय के लिए धन्यवाद,

स्टीव,

+0

क्या रिटर्न कुंजी के उचित पुन: बाध्यकारी के साथ कुछ प्रमुख मोड में बफर स्थापित करने के लिए पर्याप्त होगा? –

उत्तर

2

क्या अपने बफर में पर जा सकते हैं पर निर्भर करता है, तो आप सिर्फ यह return का एक उपयुक्त फिर से बाध्यकारी के साथ एक बड़ा मोड दे सकते हैं? (यह उत्तर अस्पष्ट रूप से लिस्प-इंटरैक्शन-मोड के सी-जे द्वारा प्रेरित है)

+0

ठीक है, यह एक प्रमुख मोड होना चाहिए, एक इंटरैक्टिव आरईपीएल, एक रिटर्न री-बाइंडिंग ... मेरा लक्ष्य एक पाठ सहायक सहायक बनाना है जो प्राकृतिक भाषा की व्याख्या कर सकता है और इसे एलीस फ़ंक्शन कॉल में परिवर्तित कर सकता है। मुझे एक उदाहरण दें: एक प्रकाशक की कल्पना करें जो सादे पाठ को किसी प्रकार के टेक्स स्रोत (लाटेक्स, टेक्सिनोफो ...) में एकीकृत करना चाहता है। सबसे पहले, संवाद एक शीर्षक, एक लेखक, एक पुस्तक आकार, एक रूपरेखा, मुख्य पाठक पाठ फाइलों के लिए पूछ सकता है ... या प्राकृतिक भाषा के साथ एक आरईपीएल की कल्पना करें जो एक स्क्लाइट चयन के लिए पूछताछ करता है ... कुछ पाठक अग्रभाग की तरह कुछ। – user577475

+1

आप शायद अपना खुद का "कच्चा" कीपैप सेट करना चाहते हैं ताकि उपयोगकर्ता बफर में आसानी से घूम न सके। टर्म-मोड के स्रोत कोड की जांच करें, यह ऐसा कुछ करता है जो इसके डिफ़ॉल्ट "चार-मोड" में होता है। – Thomas

5

आईएलएम देखें, जो एमएक्स के साथ एक एलिस्पेड प्रतिलिपि है।

0

आपको सी-पी सी-एन, ऊपर डाउन तीर/पृष्ठ ऊपर/नीचे जैसे बफर में जाने के लिए उपयोग की जाने वाली सभी कुंजियों को बांधना चाहिए, बस उन्हें (lambda()) पर बाध्य करें। कर्सर की स्थिति लाइन के आरंभ या अंत में होने पर सी-बी और सी-एफ (बाएं दायां तीर) के लिए फ़ंक्शन बदलें। और उस कार्य के लिए रिटर्न कुंजी को बाध्य करें जो मौजूदा लाइन को अंत से वैकल्पिक प्रॉम्प्ट से पढ़ता है (आप प्रॉम्प्ट को हटाने के लिए रेगेक्स का उपयोग कर सकते हैं) जो भी आप स्ट्रिंग के साथ चाहते हैं, और फिर बफर में अगली पंक्ति पर जाएं और अपना परिणाम प्रिंट करें।

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