Запуск Clojure и других Lisp одновременно на Emacs - PullRequest
6 голосов
/ 27 июля 2010

Я использую Aquamacs , и Aquamacs предварительно оснащен SLIME .

(setq inferior-lisp-program "/usr/local/bin/sbcl") #####!!!
(add-to-list 'load-path "/Library/Application Support/Aquamacs Emacs/SLIME/contrib")
(add-to-list 'load-path "/Library/Application Support/Aquamacs Emacs/SLIME")
(require 'slime)
(slime-setup)

Как где-то спрашивается, я пытаюсь использовать Clojure, добавив этот код.

(add-to-list 'load-path "~/clojure/clojure-mode")
(setq inferior-lisp-program "/Users/smcho/bin/clj") ################
(require 'clojure-mode)
(setq auto-mode-alist
  (cons '("\\.clj$ . clojure-mode")
     auto-mode-alist))
(add-hook 'clojure-mode-hook
  '(lambda ()
     (define-key clojure-mode-map "\C-c\C-e" 'lisp-eval-last-sexp)))
)

Я не смог запустить Clojure с SLIME, но меня устраивают текущие настройки, единственная проблема в том, что из-за кода (setq inferior-lisp-program ...) я должен изменить код .emacs в зависимости от того, что использую Clojure или SBCL .

Есть ли способ решить эту проблему? Можно ли выбрать между несколькими (низшими) Лиспами?

Добавлена ​​

Я мог бы заставить Clojure бегать на Aquamacs. Пожалуйста, обратитесь к Запуск Clojure с «lein swank» по проблеме Aquamacs . Забудьте о настройках, написанных выше, если вы хотите запустить Aquamacs / Clojure. Вам нужна только одна строка, (slime-setup '(slime-repl)) и lein swank.

1 Ответ

5 голосов
/ 27 июля 2010

Конечно, вы можете использовать Cu Mx slime вместо просто Mx slime , чтобы SLIME запрашивал у вас имя исполняемого файла Lisp для запуска, с тем, что уже используется по умолчаниюзаполнено.

Также есть переменная slime-lisp-implementations, которую я настроил так:

(setq slime-lisp-implementations
      `((clojure ,(swank-clojure-cmd) :init swank-clojure-init)
        (sbcl ("sbcl") :coding-system utf-8-unix)))

Я должен сказать, что просто не могу вспомнить, что это делает для меня больше (если он действительно что-то делает) ... Наберите C-h v slime-lisp-implementations, чтобы примерно узнать, что он должен делать.Кажется, мне нужно набрать sbcl, если я хочу начать это, что мне подходит из-за высокого отношения Clojure к SBCL в моем SLIME'ing.

Обновление:

Я только что открыл заново M-- Mx slime (этот первый ключ - мета-минус для отрицательного аргумента), который запрашивает одно из имен реализаций Lisp в slime-lisp-implementations(с завершением табуляции) и затем запускает требуемый Лисп.В приведенном выше примере конфигурации M-- Mx slime sbcl запускает SBCL.

(я нахожу это полезным в основном из-за того, как он позволяет настраивать более сложные команды для запуска Lisp - например,(sbcl-options ("sbcl" "--an-option" "--another-option") ...), (sbcl-clbuild ("/path/to/clbuild" "lisp") ...) - и называть их по имени.)

...