У меня были проблемы с настройкой SLIME для работы с Clojure и Common Lisp. Большинство разработчиков Clojure, как правило, используют сокращенный SLIME, доступный через ELPA, который заморожен для совместимости с Clojure. Я, однако, также занимаюсь хакерством Common Lisp и обычно использую версию SLIME CVS (полученную через QuickLisp).
Есть некоторые хорошо известные проблемы с реализацией swank для Clojure - он не работает с autodoc (если он включен, SLIME зависает), он не поддерживает некоторые вещи, такие как нечеткое завершение и т. Д. Этот вопрос обсуждает ту же тему в ответе на вопрос, что мне некуда идти.
(add-hook 'slime-connected-hook
(lambda ()
(if (string= (slime-lisp-implementation-type) "Clojure")
(setq slime-use-autodoc-mode nil)
(setq slime-use-autodoc-mode t))
))
(add-hook 'slime-mode-hook
(lambda ()
(if (eq major-mode 'clojure-mode)
(slime-autodoc-mode 0)
(slime-autodoc-mode 1))))
(add-hook 'slime-repl-mode-hook
(lambda ()
(if (string= (slime-lisp-implementation-type) "Clojure")
(progn (setq slime-use-autodoc-mode nil)
(slime-autodoc-mode 0))
(progn (setq slime-use-autodoc-mode t)
(slime-autodoc-mode 1)))))
Решение отлично выглядит на бумаге, но для меня slime-lisp-реализация-type всегда равно nil. (то же самое для slime-lisp-реализация-type: connlocal с локальными соединениями).
Что мне в основном нужно, так это способ узнать, что я использую SLIME с набором Clojure, чтобы иметь возможность изменять проблемные настройки.