不能在劣质REPL中评估Clojure缓冲区

时间:2017-05-24 09:49:56

标签: emacs clojure

我正在尝试使用inferior lisp mode与Clojure合作。我的设置:

(setq inferior-lisp-program "lein repl")
(run-lisp) ;; Clojure REPL appears then...

当我使用lisp-eval-region评估短格式时,没有任何错误。但是,当我尝试评估一个长区域甚至整个缓冲区时,我面临以下奇怪的行为:

  1. 发送到REPL缓冲区的输入文本充满了垃圾符号: (doseq [addr addresses][53G[38G[54G

  2. 由于未知原因,某些符号被剪切,因此无法找到: (u/validat (:entity_id obj)[61G[46G[62G我在代码中(u/validate-access!

  3. 更全面的转储is here

    ps:我已经和苹果酒合作了很长时间,只是想知道有没有其他选择。

1 个答案:

答案 0 :(得分:1)

"垃圾符号"是ANSI escape codes用于将光标放在某个列上。您的REPL流程正在输出这些,而Emacs的流程缓冲区并不知道如何处理它们。

请注意,在lein repl键入右括号时,光标会短暂跳回到开头的那个,这就是那些转义码的作用。

inf-lisp应该工作正确,Rich Hickey使用了很长时间,也许他仍然这样做。我会尝试使用普通的内置Clojure REPL而不是Leiningen,因为后者真的希望在另一端有一个真正的终端。

(setq inferior-lisp-program "lein run -m clojure.main")

另外考虑使用inf-clojure,它与inf-lisp非常相似,但更适合与Clojure一起使用。