我正在尝试使用inferior lisp mode
与Clojure合作。我的设置:
(setq inferior-lisp-program "lein repl")
(run-lisp) ;; Clojure REPL appears then...
当我使用lisp-eval-region
评估短格式时,没有任何错误。但是,当我尝试评估一个长区域甚至整个缓冲区时,我面临以下奇怪的行为:
发送到REPL缓冲区的输入文本充满了垃圾符号:
(doseq [addr addresses][53G[38G[54G
由于未知原因,某些符号被剪切,因此无法找到:
(u/validat (:entity_id obj)[61G[46G[62G
我在代码中(u/validate-access!
。
更全面的转储is here。
ps:我已经和苹果酒合作了很长时间,只是想知道有没有其他选择。答案 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一起使用。