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

Mic*_*are 5 clojure read-eval-print-loop

我正在使用rlwrap,但我没有tab-completion,带有重音的字符会被破坏.这是在Terminal.app的OSX 10.6上.

Bri*_*per 2

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

\n\n

无论如何,这是生成用于制表符补全的符号列表的一种方法。您必须不时重新生成此文件,因为每个版本中的 Clojure 核心都会添加新符号。(此代码适用于前沿的 clojure-contrib;在早期版本中clojure.contrib.io被调用。)duck-streams

\n\n
user> (use \'clojure.contrib.io)\nnil\nuser> (with-out-writer "/home/user/.clj-tabcompletion"\n        (doseq [[sym _] (ns-publics \'clojure.core)]\n          (println sym)))\nnil\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后:

\n\n
$ rlwrap -f ~/.clj-tabcompletion java -jar clojure.jar\nClojure 1.2.0-master-SNAPSHOT\nuser=> def<TAB>\ndefinline    defmacro     defmethod    defmulti     defn         defonce      defprotocol  defstruct    deftype\nuser=> def\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您的终端使用重音符号来破坏字符,则可能存在编码或区域设置问题。这对我来说可以。我不使用 OS X,也不知道你使用什么终端,所以我无法提供帮助。在 Linux 的 Konsole 中,rlwrap 内部:

\n\n
user=> (println "\xc3\xa0\xc3\xa8\xc3\xac\xc3\xb2\xc3\xb9\xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba\xc3\xa4\xc3\xab\xc3\xaf\xc3\xb6\xc3\xbc\xc3\xa2\xc3\xaa\xc3\xae\xc3\xb4\xc3\xbb\xc3\xa3\xc3\xb5\xc3\xb1")\n\xc3\xa0\xc3\xa8\xc3\xac\xc3\xb2\xc3\xb9\xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba\xc3\xa4\xc3\xab\xc3\xaf\xc3\xb6\xc3\xbc\xc3\xa2\xc3\xaa\xc3\xae\xc3\xb4\xc3\xbb\xc3\xa3\xc3\xb5\xc3\xb1\nnil\nuser=> (println "\xe7\x89\x9b\xe3\x81\x8c\xe7\x89\xa7\xe5\xa0\xb4\xe3\x81\xa7\xe8\x8d\x89\xe3\x82\x92\xe9\xa3\x9f\xe3\x81\xb9\xe3\x81\xa6\xe3\x81\x84\xe3\x82\x8b\xe3\x80\x82")\n\xe7\x89\x9b\xe3\x81\x8c\xe7\x89\xa7\xe5\xa0\xb4\xe3\x81\xa7\xe8\x8d\x89\xe3\x82\x92\xe9\xa3\x9f\xe3\x81\xb9\xe3\x81\xa6\xe3\x81\x84\xe3\x82\x8b\xe3\x80\x82\nnil\n
Run Code Online (Sandbox Code Playgroud)\n