Вот что я сделал, чтобы заставить Common Lisp и Clojure работать в одной установке Emacs, вместе с отличным стартовым комплектом emacs. Это не позволит вам использовать оба одновременно (вам нужно перезапустить 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:[email protected]:/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
person
michiakig
schedule
29.12.2010