Слизь - как компенсировать возможные недавние изменения

Вероятно, есть некоторые незначительные / серьезные изменения в том, как работает слизь, но с тех пор мне было трудно это исправить.

Я привык к слизи, где, когда началось, есть ответ как

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()

что смущает меня двумя способами:

  1. в REPL нет вывода, как ожидалось
  2. учитывая (сомнительное) предположение, что в строке содержалась ошибка: это не экран ошибок / отладки, который я использую слизью, которая должна выглядеть как правое верхнее окно на этом рисунке.

Другой симптом, который я получил, заключается в том, что 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.

Другие вопросы по тегам