我正在从ClojureBox安装连接到swank服务器。即我项目目录中的lein swank,然后EmacsW32中的M-x slime-connect

但是,当我这样做时,我在REPL(^M)中到处都看到DOS线尾。即

user> (doc map)
-------------------------^M
clojure.core/map^M
([f coll] [f c1 c2] [f c1 c2 c3] [f c1 c2 c3 & colls])^M
  Returns a lazy sequence consisting of the result of applying f to the
  set of first items of each coll, followed by applying f to the set
  of second items in each coll, until any one of the colls is
  exhausted.  Any remaining items in other colls are ignored. Function
  f should accept number-of-colls arguments.^M
nil

user> (println "foo")
foo^M

我知道这与平台编码有关,但是我很难弄清楚如何抑制它们。我在EmacsW32菜单中戳了一下,并尝试了java命令行系统属性(在lein.bat中)-Dfile.encoding=ISO-8859-1无效。

我还发现了其他有关在缓冲区内进行全局查找/替换^ M的问题-但我想过滤REPL输出。

我还注意到*inferior-lisp*缓冲区中的以下内容:
(do (.. java.net.InetAddress getLocalHost getHostAddress) nil)(swank.swank/start-server "c:/Users/noahz/AppData/Local/Temp/slime.4912" :encoding "iso-latin-1-unix")

最佳答案

我的.emacs中有这个:

(defun hide-eol ()
  "Do not show ^M in files containing mixed UNIX and DOS line endings."
  (interactive)
  (setq buffer-display-table (make-display-table))
  (aset buffer-display-table ?\^M []))

我只在需要时用M-x hide-eol称呼它。您可以绑定密钥,也可以根据需要将其放入某种挂钩中。

功劳归功于未知的人-我从某个地方复制了此功能,但我不记得在哪里。

08-25 22:28