26 окт. 2010 г.

в этом посте я напишу, как я приспособил свой Vim для программирования на Clojure.
для этого существует замечательный плагин - VimClojure. он умеет, разумеется, подсвечивать синтаксис и делать правильные отступы, как и любой языковой плагин, но кроме того он обладает такими полезностями, как автодополнение (omni completion), документация по языку и, наконец, самое полезное - запуск REPL’а в буфере Vim’а!!!
к сожалению, последнюю функцию оказалось весьма непросто настроить. остальные работали из коробки.

приведу краткое руководство по включению плагина и настройке REPL’а (по сути дела, частично процитирую с переводом эти инструкции)
  1. скачиваем с сайта vim.org последнюю версию плагина.
    для меня это была версия 2.2.0. вполне возможно, что в следующей версии надо будет делать что-то другое, хотя скорее всего изменения будут в сторону упрощения.
  2. распаковываем архив в ~/.vim (или в ~\vimfiles на винде) так, чтобы соответствующие папки попали в соответствующие, если те уже существуют.
  3. прописываем (странно, если у кого-то это ещё не сделано) в ~/.vimrc (или ~\_vimrc на винде) следующие строчки:
    set nocompatible
    filetype plugin indent on
    syntax on
    желательно в таком порядке и где-нибудь вверху файла.

всё, теперь основные функции плагина будут работать. одна из них кстати - это замечательная подсветка скобочек: они подсвечиваются парами разными цветами радуги! так сразу видно вложенность и читабельность кода намного повышается. для этого надо включить соответствующую опцию:
let g:vimclojure#ParenRainbow = 1

чтобы настроить интерактивную часть плагина, нужно произвести следующие манипуляции:
  1. скачать vimclojure-nailgun-client-2.2.0-SNAPSHOT.zip.
  2. распаковать его куда следует (например туда, где установлен clojure).
  3. если у вас винда - то для вас уже сделан ng.exe, если нет - надо сделать в консоли make и получить исполняемый файл ng.
  4. прописать в .vimrc:
    let vimclojure#WantNailgun = 1
    let vimclojure#NailgunClient = “путь к этому исполняемому файлу/ng”
  5. скачать server-2.2.0-SNAPSHOT.jar.
  6. теперь надо запустить (и это придётся делать каждый раз, когда вы будете начинать работу заново) этот сервер:
    java -cp clojure-1.2.0/clojure.jar:clojure-contrib-1.2.0/:server-2.2.0-SNAPSHOT.jar vimclojure.nailgun.NGServer 127.0.0.1 &
  7. можно наслаждаться всякими крутыми штуками - как просмотр документации по текушему слову под курсором, или вычисление текущей строки/блока/файла, или просто запуск REPL’а в отдельном буфере.

но в 6м шаге кроется главный подвох. у меня с первого раза не получилось запустиь этот сервер. и со второго тоже. и я никак не мог понять, что я делаю не так. смысл в том, что надо просто делать всё аккуратно - надо правильно указать пути после параметра -cp (java classpath):
<путь к скачанному дистрибутиву clojure/clojure.jar>:<путь к библиотекам clojure-contrib>:<путь к серверу, который мы скачали на шаге 5>

надеюсь, эта инструкция кому-нибудь поможет.. в другой раз напишу, как установить режим редактирования с парными скобками paredit, который тоже очень и очень удобен и, пожалуй, даже обязателен при программировании на Lisp/Clojure.

Комментариев нет:

Отправить комментарий