2015-01-26 60 views
1

我使用emacs的蘋果酒cljsbuild,並奧斯汀slimerjs在Windows機器上的ClojureScript新手。我注意到,有時當我輸入clojurescript repl時,額外的^M字符和nil被追加到輸出(但返回值不是零,如下面所示的repl的輸出所示)。 ^M之前的輸出爲紅色,而nil輸出爲黑色。有什麼可能導致這種情況,我該如何解決這個問題? (我是否應該向項目的其中一個跟蹤器報告此問題?)ClojureScript REPL在Emacs打印出額外的^女士和尼爾斯

cljs.user> 1 
1 
cljs.user> true 
true 
cljs.user> (reduce + [1 2 3]) 
6 
cljs.user> (list [1 2 3]) 
([1 2 3]) 
cljs.user> reduce 
#<function (a,e,f){switch(arguments.length){case 2:return b.call(this, 
a,e);case 3:return c.call(this,a,e,f)}throw Error("Invalid arity: "+arguments.length);}>^M 
nil 
cljs.user> js/document 
#<[object HTMLDocument]>^M 
nil 
cljs.user> (def d js/document) 
#<[object HTMLDocument]>^M 
nil 
cljs.user> (nil? d) 
false 

回答

2

^M是windows行結束。回答如何將它隱藏在Emacs中可以找到here

打印nil一般來說屬於正常行爲,並不特定於Clojurescript或Emacs。所有形式返回一個值(這可能是nil),也可能會產生副作用:

cljs.user> (println 1) 
1 ; Side effect - printed value 
nil ; Result of evaluation 

但是返回niljs/document(def d js/document)和類似「不無」的形式是奧斯汀特定的行爲,可能可以治療作爲小錯誤。

+0

謝謝!我還添加了'(add-hook'cider-repl-mode-hook'remove-dos-eol)'以在我進入REPL時激活remove-dos-eol。 – Anonymous 2015-01-28 16:25:15