2008-08-18 18 views
26

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

क्या कोई भी लिस्प के अलावा किसी अन्य भाषा में Emacs एक्सटेंशन लिखने का तरीका जानता है? यह या तो किसी अन्य भाषा में Emacs एक्सटेंशन API को बाइंडिंग का रूप ले सकता है (उदाहरण के लिए, ओकैमल को प्रथम श्रेणी की Emacs एक्सटेंशन भाषा बनाना) या एक Emacs इंटरैक्शन मोड जहां, उदाहरण के लिए, एक्सटेंशन में एक पाइप है जिसमें वह लिख सकता है Emacs Lisp अभिव्यक्तियां और परिणाम मान पढ़ें।

+0

मैं आपको सलाह देता हूं कि एरिक एलिक द्वारा सुझाए गए अनुसार मर्लिन यह कैसे करता है, उदाहरण के लिए https://github.com/the-lambda-church/merlin/blob/master/emacs/merlin.el#L430 एक प्रक्रिया शुरू करता है, और https://github.com/the-lambda-church/merlin/blob/ मास्टर/emacs/merlin.el # L631 एक एसिंक हैंडलर के साथ ओकंपल मर्लिन प्रक्रिया के लिए एक आदेश भेजता है। – unhammer

उत्तर

4

मैं अगर यह अपने विशेष समस्या के लिए काम करेंगे पता नहीं है, लेकिन मैं खोल-आदेश-से-स्ट्रिंग समारोह का उपयोग कर कुछ इसी तरह कर रहे हैं:

(shell-command-to-string 
    "bash -c \"script-to-exec args\"") 

इसलिए उदाहरण के लिए, हम मौजूदा है पाइथन में लिखी गई स्क्रिप्ट जो एक फ़ाइल को जोड़ती हैं, इसलिए उपरोक्त मुझे स्क्रिप्ट को emacs lisp के माध्यम से आमंत्रित करने देता है।

एक त्वरित Google खोज found this page पाइथन में एक्सटेंशन लिखने के लिए सिस्टम का वर्णन करने के लिए, इसलिए ऐसा लगता है कि आप जो चाहते हैं उसे करने के लिए संभव है ... आपको केवल यह देखना होगा कि किसी ने ओकैमल के लिए एक समान रूपरेखा लिखी है या नहीं।

13

http://www.emacswiki.org/cgi-bin/emacs-en?CategoryExtensionLanguage उन सभी गैर-एलिस्पेप एक्सटेंशन भाषाओं की एक सूची है जिसका आप उपयोग कर सकते हैं।

यह गतिशील भाषा केंद्रित प्रतीत होता है।

http://common-lisp.net/project/slime/ उस सूची से गायब है, क्योंकि यह काफी विस्तार भाषा नहीं है, बल्कि एक एलिसप-आम लिस्प ब्रिज है। इसका स्रोत कोड दिखाएगा कि कैसे सॉकेट पर आगे और आगे संवाद करना है।

एरलांग के लिए एक समान आईडीई http://fresh.homeunix.net/~luke/distel/ (वर्तमान में नीचे) और https://github.com/massemanet/distel पर डिस्टेल है।

शुभकामनाएं!

0

कोई "एक्सटेंशन API" नहीं है। Emacs Lisp वहाँ रास्ता है, और यह हिल नहीं रहा है।

आप अपनी अन्य प्रक्रिया से Emacs आदेश चला सकते हैं। Gnuserv पर एक नज़र डालें।

बहुत सारे अनुप्रयोग हैं जहां एक अलग प्रक्रिया में मॉडल/नियंत्रक के लिए Emacs दृश्य है। Emacs जीडीबी इंटरफ़ेस एक अच्छा उदाहरण है। मुझे एक सरल उदाहरण के बारे में निश्चित नहीं है, शायद sql-postgresql?

3

PyMacs आज़माएं, जो पायथन में Emacs को विस्तारित करने की अनुमति देता है।

संपादित करें: अद्यतन लिंक।

+0

मृत लिंक, यह सहायक नहीं है – Anthon

2

स्थिर टाइप किया भाषाओं ओर से, वहाँ कुछ है कि काफी performant और अच्छी तरह से हास्केल के लिए विशेष रुप से दिखाई देता है:

https://github.com/knupfer/haskell-emacs

वहाँ भी शायद कुछ स्काला के लिए उपयोगी Ensime परियोजना से पुन: उपयोग किया जा करने के लिए (है दोनों Emacs और विम) के लिए एक पुल:

https://github.com/ensime/ensime-server

इसके अलावा, एक त्वरित गूगल खोज ई के विस्तार के लिए एक और संभावित उम्मीदवार का पता चला क्लासिक एफपी भाषा, ओकैमल के साथ मैक्स; परियोजना .ml स्रोत फ़ाइलों का एक बहुत कुछ है तो वहाँ एक Emacs-OCaml कहीं पुल हो गया है:

https://github.com/the-lambda-church/merlin

2

कुछ एक्सटेंशन API भेजे Emacs 25.1 और गतिशील मॉड्यूल

एक पुस्तकालय के साथ अब संभव है , emacs-ffilibffi पर आधारित एक विदेशी फ़ंक्शन इंटरफ़ेस प्रदान करता है।

README पर पूरा दस्तावेज़ देखें।