2011-12-25 11 views
8

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

वहाँ एक नुस्खा मैं एक Emacs मोड में इन कमांड लाइन उपकरणों में से एक रैप करने के लिए का पालन कर सकता है? मैं कुछ ऐसा ढूंढ रहा हूं जो टूल के प्रॉम्प्ट को प्रदर्शित करेगा, मुझे सी-सी सी-एन/सी-पी के साथ इतिहास के माध्यम से खोज करने दें, टूल की प्रक्रिया में वर्तमान इनपुट सबमिट करें जिसे मैंने एंटर दबाया है, और टूल के आउटपुट को प्रदर्शित किया है।

मैं जानता हूँ कि इन उपकरणों के कई शायद Emacs मोड पहले से ही है, मैं कैसे जल्दी से एक का निर्माण करने के लिए कुछ भी नहीं है, तो मौजूद है में दिलचस्पी है।

+0

यह आपके प्रश्न का काफी जवाब नहीं देता है, लेकिन यदि आप उपकरण के लिए एक emacs lisp wrapper बनाते हैं तो आप इसे ielm से उपयोग कर सकते हैं। उदाहरण के लिए मैं अपने emacs redis wrapper के साथ ऐसा करता हूं। http://code.google.com/p/eredis/ – justinhj

उत्तर

7

मैं हाल ही में Gosu भाषा के लिए एक "अवर Gosu मोड" का निर्माण किया। यह वास्तव में बहुत सरल साबित हुआ: मैं बस comint जो मोड, जिस पर दोनों shell और ielm आधारित हैं बढ़ाया। यहाँ कोड के महत्वपूर्ण बिट है:

(require 'comint) 
(defun inferior-gosu-mode() 
    (interactive) 
    (comint-mode) 
    (setq comint-prompt-regex inferior-gosu-prompt) 
    (setq major-mode 'inferior-gosu-mode) 
    (setq mode-name "Inferior Gosu") 
    (setq mode-line-process '(":%s")) 
    (use-local-map 'inferior-gosu-mode-map)) 

use-local-map बिट सिर्फ जगह है जहाँ आप विशेष कुंजी बाइंडिंग निर्धारित करें;

(defvar inferior-gosu-mode-map nil) 
(unless inferior-gosu-mode-map 
    (setq inferior-gosu-mode-map (copy-keymap comint-mode-map))) 

इस मैं कुछ सरल कोड है कि एक प्रक्रिया है कि अगर यह अस्तित्व *inferior-gosu* बफर खोलने पॉप होगा शुरू करने के लिए एक कमांड परिभाषित किया था के बाद: मैं comint बाइंडिंग का सिर्फ एक प्रति के रूप में यह है। मैंने एक अवरुद्ध-गोसु खोल खोलने के लिए सामान्य गोसु मोड में थोड़ा सा कोड भी जोड़ा।

संक्षेप में: comint का उपयोग करें।

यहाँ पूरे कोड का कोई लिंक है, लेकिन वहाँ भी बहुत कुछ करने के लिए यह नहीं है: https://github.com/TikhonJelvis/Gosu-Mode/blob/master/inferior-gosu-mode.el

स्वाभाविक रूप से हालांकि आप चाहते हैं कि कोड का उपयोग करने के लिए स्वतंत्र महसूस; आप यह भी देखने के लिए सामान्य गोस्सू मोड को देखना चाहेंगे कि आप भाषाओं के संबंधित संपादन मोड में कैसे उलझन और प्रोलॉग कर सकते हैं।

+5

यह एक उपयोगी उत्तर की तरह लगता है, लेकिन शायद आपके मोड को बनाने के लिए सबसे अच्छा तरीका नहीं है? मुझे '(परिभाषित-व्युत्पन्न-मोड)' का उपयोग करने की उम्मीद थी, जिसका उपयोग माता-पिता के रूप में निर्दिष्ट 'कॉमिन-मोड' के साथ किया गया था। – phils

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

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