2012-01-11 31 views
6

私はIDEまたは統合されたREPLを探していません。私は、誰かが 'psql'やいくつかの* nixシェルから知っているように、REPLにバッファエディタを持つことができるかどうかを知りたいかどうか尋ねたがっています。バッファエディタを使用したClojure標準REPL?

psqlの場合、たとえば「\ e」と入力すると、EDITORで最後のコマンドが実行され、実行されたupponの終了が実行されます。

これはclojure replにとって素晴らしいものです。

$ java -cp jline.jar:clojure-1.3.0.jar jline.ConsoleRunner clojure.main 

このような機能はありますか?どこで実装する必要がありますか、jlineで?

ソリューション:

rlwrapは、トリックを行います。

私はreadline ftp://ftp.gnu.org/gnu/readline/をコンパイルし、次にrlwrap http://utopia.knoware.nl/~hlub/rlwrap/#rlwrapをコンパイルする必要がありました。

その後、次のショートカットを使用してエディタを起動できます。マックOSX上Leiningenをで使用する場合

Ctrl + ^

rlwrap -m -- java -cp clojure-1.3.0.jar clojure.main

私は次のように変更しなければならなかった:

lein 1.6.2 
*** 226,233 **** 
       rlwrap -m -q '"' echo "hi" > /dev/null 2>&1 
       if [ $? -eq 0 ]; then 
        RLWRAP="$RLWRAP -r -m -q '\"'" 
-    else 
-     RLWRAP="$RLWRAP -m --" 
       fi 
      fi 
     fi 
--- 226,231 ---- 

と輸出RLWRAP_EDITOR

export RLWRAP_EDITOR="vim +%L"

答えて

8

rlwrap

はあなたが望むものを達成するために、いくつかの方法がありますが、rlwrapバイナリは、何が必要ありません。私はMac OS X上で過去にjlineにいくつかのバージョニングの問題があったので、それを使用しなくなった。

私は私の端末で「CLJ」を入力すると、それは本当に/usr/local/bin/cljで、次のbashスクリプトを経由してrlwrapを有効にした状態包まREPLを実行します。

#!/bin/sh 
# Runs clojure. 
# With no arguments, runs Clojure's REPL. 

CLOJURE=$CLASSPATH:/usr/local/clojure/1.3.0/clojure-1.3.0.jar 

rlwrap java -cp $CLOJURE clojure.main "[email protected]" 

が使用することを、どこでも、あなたのパスにスクリプトを入れてください。

最後に、スクリプトは必要ありません。便宜のために用意しています。 rlwrapは、お使いのシステム上にあり、CLJがパスに含まれている場合は、簡単に入力できます。

rlwrap clj

さらにClojureのウィキ帳から読み:質問に私の答えを参照してくださいEnhancing Clojure REPL with rlwrap

+0

rlwrapのチップをありがとう、それはトリックを行います。 –

6

One REPL to bind them all?How to install Clojure on Ubuntu 10.04 from Github repo with no clojure.jar 。主なポイント:

  • クロージャを「インストール」しないでください。 Leiningenをインストールして、あなたが持っているclojureのバージョンを管理できるようにします。また、クラスパスをreplやその他の使用のために得ることができます。
  • clojureを手動で起動する必要がある場合は、rlwrapまたは他のreadlineプログラムを使用してください。
+0

ヒントをありがとう、leiningenで機能を取得する私の第二歩だったでしょう。それなしで簡単になると思った。 しかし、私が見る限り、leiningenはrlwrapを自動的に使います。 –

関連する問題