h0rr0rr_drag0n 09.08.2011 15:20
Emacs — Простой и быстрый способ начать использовать SLIME и Emacs для разработки приложений на Clojure
В качестве IDE для Clojure я, в свое время, пытался использовать NetBeans и Eclipse. Но к сожалению (а может и к счастью), отношения у меня не сложились ни с той, ни с другой IDE. NetBeans, по моим меркам, слишком долго запускался. Для не столь уж и редких для меня ситуаций, когда хочется/нужно подправить лишь пару строчек в коде, он не подходил. Конечно, можно было использовать какой-нибудь Notepad++ для подобных целей, но мне хотелось работать в единой среде, а не прыгать между текстовыми редакторами и IDE. Помимо всего прочего, к этому прибавлялся еще и не слишком быстрый интерфейс, что выводило меня из себя. Кроме того в новый NetBeans не устанавливался плагин, обеспечивающий работу с Clojure, из-за несовместимости версий.У Eclipse были те же проблемы со скоростью работы, к которым еще и прибавлялся интерфейс, не блещущий минималистичностью из коробки.
Из-за вышеперечисленных недостатков я вернулся к Emacs'у - как никак у него была и минималистичность, и не тормозящий интерфейс, и новые нескучные обои и прочие радости жизни.
На настройку редактора под Clojure я затратил увы немалое количество времени, в основном из-за этапа по прикручиванию SLIME к Emacs'у - в мануалах рекомендовалось ставить кучу какого-то софта, в большинстве случаев устаревшего, поскольку авторы руководств предлагали использовать ELPA.
В конце концов, не без помощи @Ryukzak'а, у меня получилось узреть работающий SLIME для Clojure, процесс получения которого я и собираюсь описать - вдруг кому-нибудь понадобится.
Вначале, я опишу процесс установки и настройки нескольких расширений, которые облегчают редактирование исходного кода на Clojure. Если вам нужен лишь только SLIME - переходите к соответствующей части поста.
clojure-mode
Данное расширения для Emacs'а, добавляет автодополнение, подсветку синтаксиса и еще некоторые плюшки для файлов с кодом на Clojure (расширение *.clj).
Данное расширение можно скачать отсюда или забрать отсюда: git://github.com/technomancy/clojure-mode.git .
Все файлы расширения должны быть помещены в каталог ~/.emacs.d/elisp/clojure-mode или аналогичный ему, а в ~/.emacs должны быть добавлены следующие строки:
paredit
Некоторые люди ошибочно считают, что главная проблема Лиспоподобных языков это скобочки, которые приходится расставлять в неимоверном количестве и постоянно заботиться о том, чтобы каждой открывающей скобке соответствовала закрывающая.
На самом деле, просто нужно использовать правильные текстовые редакторы с правильными расширениями, которые позволяют не заботиться о скобочках. Одно из таких расширений - paredit. Оно просто вставляет на каждую открывающую скобку еще одну закрывающую скобку, а если количество открывающих и закрывающих скобок не совпадает - показывает это пользователю, выделяя лишнюю скобку.
Скачать расширение можно здесь, установка и настройка происходят так же, как и у предыдущего расширения. Нужно лишь добавить (paredit-mode 1) в my-clojure-mode-hook сверху и вот этот код в ~/.emacs:
1 |
|
Если нужно просто добавить скобку, без автодобавления закрывающей скобки или перехода на соответствующую закрывающую скобку, то следует использовать комбинацию клавиш C-q скобка. Если нужно удалить ненужную скобку - используйте комбинацию клавиш C-u DEL.
Highlight symbol
Данное расширение подсвечивает совпадающие слова в программном коде. Бывает удобно, чтобы проверить совпадает ли имя функции или переменной с уже написанным и так далее... Выглядит примерно так:
Установка и настройка расширения такие же, как и для уже описанных расширений. Скачать плагин можно тут. Пример настроек для плагина приведен на этом же сайте. Но поскольку я использую данный плагин лишь вместе с clojure, то я совместил его настройки с настройками clojure-mode. Конфиг для clojure-mode вместе с highlight-symbol выглядит так:
Перейдем теперь непосредственно к теме данного поста.
SLIME
Вначале следует установить все необходимое для работы SLIME с Clojure, а именно swank-clojure, который позволяет использовать SLIME для проектов на Clojure. К счастью, компилировать исходные и писать конфигурационные файлы на этом этапе не нужно - достаточно скачать скрипт lein отсюда:
https://github.com/technomancy/leiningen/raw/stable/bin/lein
выполнить его с параметром self-install и добавить путь к скрипту в $PATH. Теперь у нас есть система сборки для проектов на Clojure, которая умеет сама разрешать различные зависимости, в том числе она может загрузить и установить вышеупомянутый swank-clojure. Достаточно лишь оформить проектный файл project.clj так, как описано здесь (внимание! версии зависимостей несколько устарели). Теперь, для каждого нового проекта достаточно выполнить lein deps и swank-clojure будет сам загружен куда-надо.
Установка же самого SLIME проста как-никогда:
- Скачиваем последнюю версию SLIME отсюда
- Копируем все полученные файлы в ~/.emacs.d/elisp/slime
- Добавляем следующие строки в ~/.emacs:
1
2
3
4
5
6(add-to-list 'load-path "~/.emacs.d/elisp/slime/")
(require 'slime)
(slime-setup '(slime-repl))
(setq slime-net-coding-system 'utf-8-unix)
(setq slime-protocol-version 'ignore)
Теперь мы можем использовать SLIME для программ на Clojure, которые используют lein в качестве системы сборки. Всего-то нужно перейти в каталог проекта и запустить swank командой lein swank, а затем подключиться к нему при помощи M-x slime-connect. Все - у нас есть работающий REPL!
Для большего удобства можно использовать плагин elein.el, который по команде M-x elein-swank сам запускает swank, подключает к нему SLIME и открывает REPL в отдельном буфере. Что самое приятное - этот плагин умеет также делать M-x elein-reswank и M-x elein-kill-swank.
Take this REPL, brother, and may it serve you well.
По материалам из блога "Дракон-линуксоид"
> Копипаста же.
У самого себя же :-)
> Годная тема, жаль не для терминала.
Есть конфиг под urxvt.
Uploaded with ImageShack.us
У самого себя же :-)
> Годная тема, жаль не для терминала.
Есть конфиг под urxvt.
Uploaded with ImageShack.us
> У самого себя же :-)
Продублировал же, лучше краткое описание и ссылка на полную версию.
> Есть конфиг под urxvt.
imho, в эмуляторе терминала/консоли смотрится паршиво.
//Это xmonad и xmobar?
Продублировал же, лучше краткое описание и ссылка на полную версию.
> Есть конфиг под urxvt.
imho, в эмуляторе терминала/консоли смотрится паршиво.
//Это xmonad и xmobar?
Парсер запорол ссылку. Вот plain-text http://dl.dropbox.com/u/3235930/pics/ScreenShots/zenburn_urxvt_colors.png%3Cbr%20%20/%3E
Вот ты мне скажи, умеет ли Emacs, допустим, выполнять код на каком-нибудь пайтоне, чтоб отлавливать ошибки прямо там?
Не знаю, никогда подобным не пользовался. Попробуй загуглить по ключевому слову flymake.
> zenburn
Годная тема, жаль не для терминала.