2014-11-25 1 views
4

Я хотел бы вставить результат оцененного выражения Clojure непосредственно в буфер Emacs в довольно печатной форме.Получите довольно напечатанный результат в выражении, оцененном Сидром в 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 в настоящее время вставленные ES пелериной; Я хочу, чтобы они были вставлены без сохранения. Другими словами, я хочу, чтобы напечатанный результат был вставлен непосредственно, не избегая кавычек или строк новой строки. Это использовалось для работы в более ранних версиях Cider и cider-nrepl.

ответ

2

Упаковка:

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

в read должны решить эту проблему.

+0

Это сделал это ... спасибо, ошибка !!! – JohnJ

1

Я только что добавили эту функцию lispy (это Paredit стиле пакет, который использует сидр для Clojure Eval): 2E воля к довольно отпечатанной Eval-и-вставки, в то время как E будет делать простой.

Вот пример (| представляет точку):

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

После Е:

|(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)) 
Смежные вопросы