Сначала пояснение: упомянутый вами буфер * Compiler Input * не имеет ничего общего с Common Lisp и Slime, он касается ошибок, с которыми Emacs сталкивался при компиляции Emacs Lisp (его внутренний lisp, сильно отличается от CL).
Что касается вашей проблемы (определение имени файла / номера строки, чтобы сузить проблему): когда я ввожу в файл сломанный фрагмент кода (скажем, test.lisp
):
(defun fact (n)
(if (= 0 n)
1
!(* n (facto (1- n)))))
,затем попробуйте отправить его в CCL через Slime, нажав C-c C-k
в буфере test.lisp
, я получаю сообщение об ошибке и список перезапусков (ниже списка перезапусков есть также обратный след, аналогичный тому, который вы получили).Выберите restart 0, нажав 0, затем 'n', чтобы не загружать сломанный скомпилированный файл в CCL.Буфер с ошибкой должен быть заменен буфером с именем * slime-compilation *, который в моем случае содержит:
cd d:/tmp/lispbox-0.7/
2 compiler notes:
test.lisp:2:5:
warning: Extra arguments in (IF (= 0 N) 1 ! (* N (FACTO (1- N)))) don't match lambda list (CCL::TEST CCL:TRUE &OPTIONAL CCL:FALSE).
style-warning: Unused lexical variable N
Compilation failed.
, который выглядит так, как вы хотели.
Моя рукадля установки Linux CL не нужно выбирать перезапуск 0, а также есть настройка слизи , чтобы избежать запроса «загрузить файл fasl в любом случае (да / нет)», так что опыт может быть улучшен с некоторой настройкой.