Настройка SLIME для разработки на Common Lisp и Clojure - PullRequest
9 голосов
/ 13 мая 2011

У меня были проблемы с настройкой 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, чтобы иметь возможность изменять проблемные настройки.

Ответы [ 2 ]

4 голосов
/ 17 мая 2011

Кажется, что решение этой проблемы было только что создано. Это называется jack-in . В основном вам нужно сделать три вещи:

  1. Установить clojure-mode через git или Marmalade
  2. lein plugin install swank-clojure 1.3.1
  3. Вызвать M-x clojure-jack-in из проекта

Это автоматически загрузит поддерживаемый SLIME. Вам больше не нужно устанавливать его через ELPA. Я обернул свой Common Lisp init в интерактивную функцию, которую я могу вызывать, когда мне это нужно, потому что загрузка Clojure SLIME, естественно, портит несколько настроек. Это не такое идеальное решение, как поддержка Clojure в SLIME, но гораздо лучше, чем большинство альтернатив ...

Обновление:

SLIME больше не нужен для разработки Clojure. Я рекомендую вам использовать CIDER .

0 голосов
/ 25 мая 2011

Это пошаговое руководство по настройке SLIME для Clojure в Emacs (взято из http://technomancy.us/126 и других источников).Он не мешает существующим настройкам CommonLisp или Схемы:

http://languageagnostic.blogspot.com/2011/05/clojure-in-emacs.html

...