rlwrap を使用していますが、タブ補完がなく、アクセントのある文字が壊れてしまいます。これは、Terminal.app の OSX 10.6 にあります。
2 に答える
ClojureXは、OS X ユーザーにとってまさにあなたが望むものになろうとします。私自身は経験がありません (私は Linux ユーザーです) が、ClojureX の関係者は、奇妙な問題 (文字のマングリング?つまり、rlwrap の有無にかかわらず...)。
更新: Clojure グループに関するアナウンスへのリンクは次のとおりです: ClojureX の最近の変更点...
JVM ベースのコンソール アプリには、readline に似た機能の 2 番目のオプション、jline があります。次のようなものを使用します
java -cp $CLASSPATH jline.ConsoleRunner clojure.main
(もちろん、jline.jar は に含まれてい$CLASSPATH
ます) 試してみたい場合は、.
また、スタンドアロンの Clojure REPL でタブ補完について聞いたことがないと思います。ほとんどの人は、Emacs / Aquamacs + SLIME、Vimclojure、またはそのようなものに Clojure プラグインを備えた Java IDE を使用しています。まあ、他の何人かの人々はそれについて大丈夫だと聞いています(ブライアンの答えを見てください)。そして、jlineでタブ補完を設定する方法のこの説明を見つけました。それ以来、ClojureX のソースを確認しました。タブ補完が設定されています。そのため、私の元の回答のこの部分は少し失敗していると思います...しかし、ClojureXは非常に安全な賭けであり、自分で構成する手間を省くことができるという事実は残っています.
-f
タブ補完を有効にするには、フラグを rlwrap に使用します。ただし、指定したファイル内のシンボルの静的リストに基づいて、静的補完になります。動的補完 (実行中の REPL で現在定義されているシンボルに基づく) が必要な場合は、Emacs + SLIME または同等のものを試す必要があります。
いずれにしても、タブ補完するシンボルのリストを生成する 1 つの方法を次に示します。バージョンごとに新しいシンボルが Clojure のコアに追加されるため、このファイルを時々再生成する必要があります。(このコードは最先端の clojure-contrib で動作します。以前のバージョンでclojure.contrib.io
は呼び出されていました。)duck-streams
user> (use 'clojure.contrib.io)
nil
user> (with-out-writer "/home/user/.clj-tabcompletion"
(doseq [[sym _] (ns-publics 'clojure.core)]
(println sym)))
nil
それで:
$ rlwrap -f ~/.clj-tabcompletion java -jar clojure.jar
Clojure 1.2.0-master-SNAPSHOT
user=> def<TAB>
definline defmacro defmethod defmulti defn defonce defprotocol defstruct deftype
user=> def
端末がアクセント付きの文字をマングリングしている場合は、エンコーディングまたはロケールに問題がある可能性があります。それは私にとってはうまくいきます。私はOS Xを使っていませんし、あなたがどの端末を使っているかもわからないので、どうしようもありません。Linux の Konsole の rlwrap 内:
user=> (println "àèìòùáéíóúäëïöüâêîôûãõñ")
àèìòùáéíóúäëïöüâêîôûãõñ
nil
user=> (println "牛が牧場で草を食べている。")
牛が牧場で草を食べている。
nil