Слизь - как компенсировать возможные недавние изменения
Вероятно, есть некоторые незначительные / серьезные изменения в том, как работает слизь, но с тех пор мне было трудно это исправить.
Я привык к слизи, где, когда началось, есть ответ как
CL-USER>
*scratch*
буфер и тесное взаимодействие между всеми открытыми буферами и REPL.
Поняв, что система пакетов Ubuntu больше меня никуда не приведёт, я сам установил emacs24.2 и новейшую слизь (cvs checkout), используя данные руководства.
Мой файл ~/.emacs теперь выглядит так:
;;slime-setup
(load (expand-file-name "~/quicklisp/slime-helper.el"))
(setq inferior-lisp-program "sbcl")
(add-to-list 'load-path "/home/simkoc/emacs/slime/")
(require 'slime-autoloads)
(slime-setup '(slime-fancy slime-asdf))
(slime-setup '(slime-fancy slime-asdf))
разрешил инициализацию буфера REPL слизи.(load (expand-file-name "~/quicklisp/slime-helper.el"))
включены все ярлыки, к которым я привык, я скачал пакет через(ql:quickload "quicklisp-slime-helper)
эти шаги, по-видимому, исправили все, кроме тесного взаимодействия между открытыми буферами и REPL, который все еще не работает.
Например
Я привык к взаимодействию, где печатать
(FORMAT t "foobar~%")
в буфер *scratch*
а затем использование CMx приведет к печати "foobar". Вместо этого я получаю ошибку:
Debugger entered--Lisp error: (void-function FORMAT)
(FORMAT t "foobar~%")
eval-region(291 312 t (lambda (ignore) (goto-char 312) (quote (FORMAT t "foobar~%")))) ; Reading at buffer position 310
apply(eval-region (291 312 t (lambda (ignore) (goto-char 312) (quote (FORMAT t "foobar~%")))))
eval-defun-2()
eval-defun(nil)
call-interactively(eval-defun nil nil)
recursive-edit()
что смущает меня двумя способами:
- в REPL нет вывода, как ожидалось
- учитывая (сомнительное) предположение, что в строке содержалась ошибка: это не экран ошибок / отладки, который я использую слизью, которая должна выглядеть как правое верхнее окно на этом рисунке.
Другой симптом, который я получил, заключается в том, что cx cm, который должен расширять данное макро-выражение, работает в буфере sbcl slime-repl, но в любом другом буфере появляется сообщение "Cc RET не определен".
Кто-нибудь еще сталкивался с подобными проблемами и разобрался, как это исправить?
1 ответ
Похоже, вы использовали для запуска Mxslime-scratch
как часть режима SLIME. Чтобы вернуть эту функциональность обратно, вы можете сделать это в вашем файле.emacs:
(add-hook 'slime-mode-hook 'slime-scratch)
(add-hook 'slime-repl-mode-hook 'slime-scratch)
Я не уверен в slime-repl-mode-hook
Посмотрите, действительно ли вам это нужно. Вероятно, вам нужен только первый, чтобы автоматически создать *slime-scratch*
буфер, когда начинается SLIME.