【问题标题】:ClojureScript REPL in emacs printing out extra ^Ms and nilsEmacs 中的 ClojureScript REPL 打印出额外的 ^Ms 和 nils
【发布时间】:2023-03-19 02:25:01
【问题描述】:

我是一个 ClojureScript 新手,使用 emacscidercljsbuildaustin 在 Windows 机器上带有 slimerjs。我注意到有时当我输入 clojurescript repl 时,额外的 ^M 字符和 nil 会附加到输出中(但返回值不是 nil,如下面的 repl 的输出所示)。 ^M 之前的输出为红色,而nil 输出为黑色。可能是什么原因造成的,我该如何解决? (我应该将此作为问题报告给项目的跟踪者之一吗?)

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

【问题讨论】:

    标签: emacs clojure clojurescript cider


    【解决方案1】:

    ^M 是 windows 行结束符。回答如何隐藏在 Emacs 中可以找到here

    打印nil 通常是正常行为,它并不特定于 Clojurescript 或 Emacs。所有表单都返回一个值(可能是nil),也可能产生副作用:

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

    但是,为 js/document(def d js/document) 和类似的“非零”形式返回 nil 是 Austin 特有的行为,可能会被视为小错误。

    【讨论】:

    • 谢谢!每当我在 REPL 中时,我还添加了 (add-hook 'cider-repl-mode-hook 'remove-dos-eol) 以激活 remove-dos-eol。
    猜你喜欢
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多