2012-07-05 3 views
2

Я понимаю, что SLIME - это режим взаимодействия с расширенным Lisp, но мне интересно, существует ли буфер Lisp Interaction, который работает с Common Lisp, как буфер * scratch *, работает с Emacs Lisp. И.Е. нажатие C-j в конце формы вставляет результат этой формы в текущий буфер.* scratch * buffer using SLIME

Я спрашиваю, потому что я нахожу, что редактирование вывода по мере необходимости проще, чем с помощью repl.

ответ

1

Binding эту функцию Cj делает поведение, что я ищу:

(defun slime-eval-print-last-sexp() 
    (interactive) 
    (newline) 
    (insert (cadr (slime-eval `(swank:eval-and-grab-output ,(slime-last-expression))))) 
    (newline)) 
+0

'шламовых Eval-последней expression' уже существует в' SLIME' и его поведение такое же, как 'Eval-последний-sexp'. – Daimrod

+0

slime-eval-last-expression не возвращает его вывод и только печатает его на минибуфере. Я должен был охотиться за тем, как получить фактический результат оценки и придумал выше. –

+0

Похоже, что это уже существует с slime-eval-print-last-expression, но я не нашел его, и он не печатает окончательную новую строку, но он довольно близок. –

4

Существует Mxslime-scratchRET, хотя я не знаю, что делает Cj по умолчанию, потому что Я использую Paredit.

Однако C-уC-хC-е делает то, что вы хотите в как *scratch* и *slime-scratch*.

It is bound to C-x C-e. 

(eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL) 

Evaluate sexp before point; print value in minibuffer. 
Interactively, with prefix argument, print output into current buffer. 
Truncates long output according to the value of the variables 
`eval-expression-print-length' and `eval-expression-print-level'. 

(и это slime-eval-last-expression в *slime-scratch* буфере)

+0

Я посмотрел через документы слизи, пытаясь найти что-то вроде слизистой, но не смог. Довольно очевидно и спасибо. –