什么';运行独立clojure REPL的推荐方法是什么?

什么';运行独立clojure REPL的推荐方法是什么?,clojure,read-eval-print-loop,Clojure,Read Eval Print Loop,我使用的是rlwrap,但我没有制表符完成,带有重音的字符会被弄乱。这是在终端应用程序中的OSX 10.6上。试图成为您想要的OSX用户。我自己没有这方面的经验(我是Linux用户),但我的印象是,如果你遇到奇怪的问题(角色扭曲?我不明白,有没有rlwrap…),ClojureX的人会愿意帮助你 更新:这里是关于ClojureX最近的一些变化的链接 在基于JVM的控制台应用程序中,还有第二个类似readline的功能选项--。使用类似 java -cp $CLASSPATH jline.Cons

我使用的是rlwrap,但我没有制表符完成,带有重音的字符会被弄乱。这是在终端应用程序中的OSX 10.6上。

试图成为您想要的OSX用户。我自己没有这方面的经验(我是Linux用户),但我的印象是,如果你遇到奇怪的问题(角色扭曲?我不明白,有没有rlwrap…),ClojureX的人会愿意帮助你

更新:这里是关于ClojureX最近的一些变化的链接

在基于JVM的控制台应用程序中,还有第二个类似readline的功能选项--。使用类似

java -cp $CLASSPATH jline.ConsoleRunner clojure.main
(当然,jline.jar包含在
$CLASSPATH
中)如果您想尝试一下的话


另外,我想我从来没有听说过独立Clojure REPLs中的制表符完成。大多数人使用Emacs/Aquamacs+SLIME、Vimclojure或一些带有Clojure插件的javaide来实现类似的功能。好吧,其他一些人也听说过(见布赖恩的答案)。此后,我发现了如何使用jline设置选项卡完成。我已经检查了ClojureX的来源,它确实为您设置了制表符完成。这使得我最初的答案中的这一部分有点错误,我想。。。但事实是ClojureX是一个非常安全的赌注,它可以省去您自己配置东西的麻烦。

使用
-f
标志来rlwrap以启用制表符完成。不过,这将是静态完成,基于您指定的某个文件中的静态符号列表。如果您想要动态完成(基于当前在运行的REPL中定义的任何符号),您应该尝试Emacs+SLIME或等效工具

在任何情况下,这里有一种方法可以生成要完成的符号列表。您必须不时地重新生成此文件,因为在每个版本中,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
user=> (println "àèìòùáéíóúäëïöüâêîôûãõñ")
àèìòùáéíóúäëïöüâêîôûãõñ
nil
user=> (println "牛が牧場で草を食べている。")
牛が牧場で草を食べている。
nil