Вообще, как из scratch a function definition is compiled into lisp repl and mark is send to repl too, so to speak.
У меня вот такое в .emacs
;;; SLIME support (for Common Lisp)
;; (require 'slime) ; if not done elsewhere
(require 'eval-in-repl-slime)
(add-hook 'lisp-mode-hook
'(lambda ()
(local-set-key (kbd "<C-return>") 'eir-eval-in-slime)))
правда, чтоб это заработало надо M-x lisp-mode в scratch сделать
но это не компилирует, а просто eval-in-slime и не переносит mark в repl.
Врукопашную это всё делать быстро устанешь, use-package хорош для сбора подобных ошмётков конфигурации в аккуратные кучки. А если его скрестить со straight — можно будет тащить всё нужное прямо из гита и не ждать у мелпы погоды.
Потом просто берёшь и ставишь этот свой SLIME, куришь его манул и становишься великолепен.
;; the Superior Lisp Interaction Mode for Emacs
(use-package slime
:config
(setq slime-repl-shortcut-dispatch-char ?\?)
(setq inferior-lisp-program "sbcl --noinform")
:bind (:map slime-mode-map
("C-c b" . slime-eval-buffer)
("C-c C-q" . slime-repl-quit)))