2011-12-25 26 views
8

Her biri bir komut satırı arabirimine sahip olan bir dizi yazılım aracıyla oynamak ve denemek istiyorum. Bu araçlardan bazıları hbase, pig, erlang ve prolog içerir. Emacs'i, bu araçlara bir UI olarak M-x run-python'lu bir python kabuğunu veya ielm kipi ile bir Lisp yorumlayıcısını çalıştırabildiğim şekilde kullanmak istiyorum.tarifi?

Bu komut satırı araçlarından birini bir emacs modunda sarmak için takip edebileceğim bir reçete var mı? Aracın istemini görüntüleyecek bir şey arıyorum, C-c C-n/C-p ile geçmiş boyunca arama yapmama izin verin, mevcut girdiyi Enter'a bastığım aracın işlemine gönderin ve aracın çıktısını görüntüleyin.

Bu araçların çoğunun büyük olasılıkla emacs modları olduğunu biliyorum, bir şey yoksa hızlı bir şekilde nasıl oluşturulacağıyla ilgileniyorum.

+0

Sorunuza tam olarak cevap vermez, ancak araç için bir emacs lisp sarıcısı kullanırsanız, bunu ielm'den kullanabilirsiniz. Bunu emacs redis sarıcı ile yapıyorum. http://code.google.com/p/eredis/ – justinhj

cevap

7

Son zamanlarda gosu dili için bir "inferior gosu modu" oluşturdum. Aslında oldukça basit çıktı: Ben sadece shell ve ielm'un dayandığı mod olan comint'u genişlettim. İşte kod önemli bit: özel tuş bağları yeri tanımlayan

(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 bit adildir; Ben o var olup olmadığını *inferior-gosu* tampon açmak pop bir süreç başlatmaya karar bir komut tanımlanmış bazı basit kod vardı Bundan sonra

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

: Ben comint bağlamaları sadece kopya olarak var. Ayrıca bir inferior-gosu kabuğunu açmak için normal gosu moduna biraz kod ekledim.

Kısaca: comint kullanın. İşte

bütün kod için bir bağlantı, ama buna çok daha fazla değil: https://github.com/TikhonJelvis/Gosu-Mode/blob/master/inferior-gosu-mode.el

Doğal Ancak istiyorum o kodu kullanmaktan çekinmeyin; Erlang'i nasıl entegre edeceğinizi ve dillerin ilgili düzenleme modlarına nasıl prolog yapabileceğinizi görmek için normal gosu moduna bakmak isteyebilirsiniz.

+5

Bu kullanışlı bir yanıt gibi görünüyor, ancak muhtemelen modunuzu oluşturmak için en iyi yaklaşım değil mi? Ebeveyn olarak belirtilen "comint-mode" ile kullanılan '(define-türetilmiş mod)' i görmeyi bekledim. – phils

İlgili konular