Как получить символы подавления ^ M в моем REPL ClojureBox (EmacsW32), подключенном к lein swank - PullRequest
3 голосов
/ 03 января 2012

Я подключаюсь к серверу swank из моей ClojureBox установки. То есть lein swank из каталога моего проекта, а затем M-x slime-connect из EmacsW32.

Однако, когда я делаю это, я вижу окончания строки DOS везде в REPL (^M). * 1008 Т.е. *

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")

Ответы [ 2 ]

4 голосов
/ 04 января 2012

У меня есть это в моем .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, когда это необходимо. Вы можете привязать ключ или поставить его на крючок, если хотите.

Кредит вызван неизвестными лицами - я откуда-то скопировал эту функцию, но не помню где.

0 голосов
/ 03 января 2012

C-x RET f , затем введите unix-undecided или аналогичный. Затем сохраните ваш файл. По сути, вы хотите изменить соглашение о конце строки для файла.

Если это не ваш файл и вы не можете его сохранить, вы можете использовать M -% , затем набрать Cq Cm , затем RET, а затем просто RET, чтобы запрос-заменить `CM 'ничем.


Упс, поцарапайте все это. Теперь я вижу, что вы работаете не с файлом, а с выводом REPL. Не знаю, поможет ли это, но, возможно, вы все еще можете использовать C-x RET f , но введите dos, чтобы вы по крайней мере не увидели ^ Ms. Если этого недостаточно, надеюсь, у кого-то еще будет ответ.

...