【问题标题】:Get pretty-printed result in Cider-evaluated expression in Emacs在 Emacs 中的 Cider 评估表达式中获得漂亮的打印结果
【发布时间】:2015-01-22 22:55:09
【问题描述】:

我想以漂亮的打印形式将计算后的 Clojure 表达式的结果直接插入我的 Emacs 缓冲区中。

例如,像这样的:

    ;; [emacs lisp]
    (insert (nrepl-dict-get (nrepl-sync-request:eval "(range 30)") "value"))

我得到,在感兴趣的缓冲区中,

    ;;=>
    (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29)

过去,我让 Clojure 为我打印漂亮的东西,如下所示:

(nrepl-dict-get
  (nrepl-sync-request:eval
    (format "(clojure.core/let [x %s] (with-out-str (clojure.pprint/pprint x)))"
            "(range 30)"))
  "value")
;;=>
"(0\n 1\n 2\n 3\n 4\n 5\n 6\n 7\n 8\n 9\n 10\n 11\n 12\n 13\n 14\n 15\n 16\n 17\n 18\n 19\n 20\n 21\n 22\n 23\n 24\n 25\n 26\n 27\n 28\n 29)\n"

但是,"\n 被转义插入;我希望它们不转义地插入。换句话说,我希望直接插入漂亮打印的结果而不转义引号或换行符。这曾经在早期版本的 Cider 和 cider-nrepl 中工作。

【问题讨论】:

    标签: emacs clojure cider


    【解决方案1】:

    包装:

    (nrepl-dict-get
      (nrepl-sync-request:eval
        (format "(clojure.core/let [x %s] (with-out-str (clojure.pprint/pprint x)))"
                "(range 30)"))
      "value")
    

    read 应该可以解决这个问题。

    【讨论】:

      【解决方案2】:

      我刚刚将此功能添加到 lispy(它是 Paredit 样式 使用 Cider 进行 Clojure eval 的软件包): 2E 将打印漂亮的 eval-and-insert,而 E 将继续做一个简单的。

      这是一个例子(| 代表点):

      |(for [x (range 8)] (range x))
      

      E 之后:

      |(for [x (range 8)] (range x))
      (() (0) (0 1) (0 1 2) (0 1 2 3) (0 1 2 3 4) (0 1 2 3 4 5) (0 1 2 3 4 5 6))
      

      2E之后:

      |(for [x (range 8)] (range x))
      (()
       (0)
       (0 1)
       (0 1 2)
       (0 1 2 3)
       (0 1 2 3 4)
       (0 1 2 3 4 5)
       (0 1 2 3 4 5 6))
      

      当然你仍然可以使用 EjM 来完成同样的事情:

      (for [x (range 8)] (range x))
      |(()
       (0)
       (0 1)
       (0 1 2)
       (0 1 2 3)
       (0 1 2 3 4)
       (0 1 2 3 4 5)
       (0 1 2 3 4 5 6))
      

      【讨论】:

        猜你喜欢
        • 2014-05-10
        • 1970-01-01
        • 2017-02-11
        • 1970-01-01
        • 2016-11-11
        • 1970-01-01
        • 1970-01-01
        • 2011-09-10
        • 1970-01-01
        相关资源
        最近更新 更多