Очень часто наблюдаю в своём окружение определённые проблемы с тем, как заставить работать совместно clojure и emacs. Собственно, оно и не мудрено, так как большая часть tutorial-ов на эту тему обязательным образом используют систему пакетов elpa (где все пакеты устарели уже очень давно), и рекомендуют использовать clojure-swank для запуска clojure (которая не хочет очевидным способом решать эту задачу, и заставляет плясать с бубном).
Установка leiningen
Ниже будет описан способ относительно просто получить желаемое, используя leinigen как систему управления проектом и как пускалку clojure. Какие-нибудь элементы дополнительной настройки появятся позже, когда опуюликую свои конфиги.
Перед началом работы вы имеете какой-нибудь линукс, с установленным emacs-ом и openjdk. Они устанавливаются для fedora:
Перед началом работы вы имеете какой-нибудь линукс, с установленным emacs-ом и openjdk. Они устанавливаются для fedora:
sudo yum install emacs javaесли у вас ubuntu, то запустите synaptics и просто найдите эти пакеты в списке (на сколько я помню пакеты имеют другие имена).
Установка leiningen
- Загружаете установочный скрипт по этой ссылке: https://raw.github.com/technomancy/leiningen/stable/bin/lein
- Далее вам необходимо открыть терминал и скопировать скачанный файл в одну из директорий, предназначенных для запуска приложений.
sudo cp <загруженный файл> /usr/bin/
- Затем необходимо дать эту файлу права на запуск.
sudo chmod +x /usr/bin/lein
- Готово.
Установка slime и clojure-mode
Есть как минимум три способа установить эти расширения emacs.
- elpa (очень всё устаревшее)
- руками (очень не удобно обновлять и переносить)
- el-get
Последний вариант представляет из себя инструмент, который содержит множество рецептов, позволяющих загружать исходные коды расширений автоматически. Это позволяет не только легко обновляться, но и иметь свой конфиг чистым, от огромного количества чужих кодов. Так как большинство расширений лежат просто в репозиториях, то вам нужно установить git (часто нужный вам пакет называется git-core). Так же для сборки slime необходимо, что бы был установлен пакет texlive.
Для установки el-get сделайте следующее:
- Запустите emacs и откройте ваш .emacs файл (находится в домашней директории, открыть файл: C-x C-f).
- Вставте в него следующий код:
(add-to-list 'load-path "~/.emacs.d/el-get/el-get") (unless (require 'el-get nil t) (url-retrieve "https://github.com/dimitri/el-get/raw/master/el-get-install.el" (lambda (s) (end-of-buffer) (eval-print-last-sexp)))) (setq el-get-verbose) (el-get 'sync '(slime clojure-mode))
(require 'slime) (require 'clojure-mode)
- Перезапустите emacs два раза, в первый запуск будет установлен el-get и будет написано об ошибках. Во второй остальные пакеты.
Первый проект
- Создайте пустой проект.
lein new
- Добавьте в файл проекта зависимость от clojure-swank. Для этого приведите содержимое файла project.clj в созданном проекте к следующему виду:
(defproject test "1.0.0-SNAPSHOT" :description "FIXME: write description" :dependencies [[org.clojure/clojure "1.2.1"]] :dev-dependencies [[swank-clojure "1.2.1"]])
- Установите зависимости.
lein deps
- Запустите сервер с вашим проектом.
lein swank
- Запустите emacs.
- Выполните команду slime-connect (для этого надо нажать M-x (альт + x) и ввести команду).
- Согласитесь со стандартным адресом и портом. Если вас предупредят о несовпадение версий, всё в порядке.
- Откройте любой исходник на clojure и используйте.
No comments:
Post a Comment