Настройка SLIME для разработки как Common Lisp, так и Clojure

У меня возникли проблемы с настройкой 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-implementation-type всегда равен нулю. (то же самое для slime-lisp-implementation-type: connlocal с локальными подключениями.)

То, что мне в основном нужно, это просто способ узнать, что я запускаю SLIME с swank Clojure, чтобы иметь возможность изменять проблемные настройки.

9
задан Cœur 17 June 2017 в 04:08
поделиться