Вот что я сделал, чтобы Common Lisp и Clojure работали в одной и той же установке Emacs вместе с отличным emacs-starter-kit.Это не позволит вам использовать оба одновременно (вам нужно перезапустить Emacs для переключения с CL на Clojure или наоборот)
Я считаю, что версия SLIME в ELPA старая, но работает на Clojure,Более новая версия SLIME не будет работать для Clojure.Кроме того, эта версия SLIME, кажется, урезана (без swank-loader.el?) И не будет работать с Common Lisp.
Это шаги, которые я сделал, чтобы заставить это работать, простоработал на меня.Все биты находятся в стадии активной разработки, поэтому я думаю, что поломка в этой области весьма вероятна.
Со свежим Emacs (никакой конфигурации вообще, поэтому переместите что-нибудь .emacs
куда-нибудь еще на данный момент), установите ELPA:
http://tromey.com/elpa/install.html
В Emacs установите пакеты "slime" и "slime-repl".(M-x package-list-packages
, затем C-s slime
, затем i
для выбора и x
для установки)
Переместите файлы в ~/.emacs.d/elpa/slime-20100404
и ~/.emacs.d/elpa/slime-repl-20100404
в новый каталог, например ~/hacking/lisp/elpa-slime
.
Выкиньте установку ELPA: $ rm -rf .emacs.d
.
Теперь клонируйте стартовый комплект emacs и переместите его в .emacs.d
.Я сделал это только с свежей копией из Github от Technomancy, поэтому попробуйте сначала, если у вас возникли проблемы.
Получите последний SLIME с CVS:
cvs -d :pserver:anonymous:anonymous@common-lisp.net:/project/slime/cvsroot co cvs-slime
Я не думаю, что OS Xпоставляется с установленным CVS, так что вам нужно будет установить его из Macports, Homebrew или чего-то еще.
Я положил cvs-slime
в ~/hacking/lisp
.
Надеюсь, очевидно, что Emacs Lisp нижеделает:
(defun slime-common-lisp ()
(interactive)
(setq inferior-lisp-program "/usr/local/bin/sbcl") ; your Common Lisp impl
(add-to-list 'load-path "~/hacking/lisp/cvs-slime/") ; your SLIME from CVS directory
(require 'slime)
(slime-setup '(slime-repl))
(slime))
(defun slime-clojure ()
(interactive)
(add-to-list 'load-path "~/hacking/lisp/elpa-slime")
(require 'slime)
(slime-setup '(slime-repl))
(slime-connect "localhost" 4005))
Для Clojure вам нужно запустить среду выполнения Clojure и swank-clojure
на порту 4005, я думаю, использование Leiningen - это одобренный метод:
Создайте новый проект:
$ lein new project
$ cd project
In project.clj
:
(defproject newclj "1.0.0-SNAPSHOT"
:description "FIXME: write"
:dependencies [[org.clojure/clojure "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]]
:dev-dependencies [[swank-clojure "1.2.1"]])
Затем:
$ lein deps
$ lein swank
Отредактировано, чтобы добавить:
Если вы обнаружите, что Paredit вSLIME REPL не работает во время использования этой настройки, проверьте это: http://www.emacswiki.org/emacs/ParEdit#toc3
По крайней мере, еще одна потенциальная проблема с этим заключается в том, что, AFAICT, если вы откроете исходный файл Common Lisp и затем запустите SLIME, выне сможет отправлять формы из первого буфера в буфер SLIME.Поэтому откройте буфер SLIME перед открытием любых исходных файлов Common Lisp, и он должен работать.Похоже, это не относится к Clojure.
Ссылки:
Настройка emacs для clojure и общего списка с slime-fancy (slime-autodoc)
https://github.com/technomancy/swank-clojure/issues/closed#issue/31/comment/544166