Как стать автором
Обновить

Настройка Emacs для разработки на Erlang в Windows

Настройка Emacs + Erlang Mode + Distel(debug, code assist ) + Flymake(компиляция на лету с выводом ошибок) + Wrangler(рефакторинг) + ECB(code browser) + TABBAR(табы для быстрого переключения между буферами в Emacs).

Настройка Emacs
1. Скачайте и установите Emacs для Windows http://ftp.gnu.org/gnu/emacs/windows/emacs-23.3-bin-i386.zip. Я выбрал директорию для установки — D:\Dev\emacs-23.3
2. Создайте/Установите переменную окружения (environment variable) HOME в директорию установки Emacs. В моем случае это D:\Dev\emacs-23.3
3. В директории, на которую указывает переменная HOME, создайте папку “.emac.d” (без кавычек) Из Проводника этого сделать не получится, но из cmd делается простой командой mkdir .emacs.d
4. В папке .emacs.d создайте файл init.el –файл настройки Emacs.


Настройка Erlang Mode
1. Скачайте и установите Erlang для Windows (хотя я уверен, что Вы это уже сделали). На всякий случай ссылка www.erlang.org/download.html. Я установил Erlang в D:\Dev\erl5.8.2
2. Создайте/Установите переменную окружения (environment variable) ERLANG_HOME в директорию установки Erlang
3. Добавьте следующие строчки в init.el
(add-to-list 'auto-mode-alist '("\\.erl?$" . erlang-mode))
(add-to-list 'auto-mode-alist '("\\.hrl?$" . erlang-mode))

(setq erlang-root-dir "D:/Dev/erl5.8.2")
(setq erlang-man-root-dir "D:/Dev/erl5.8.2/erts-5.8.2/man")
(setq load-path (cons "D:/Dev/erl5.8.2/lib/tools-2.6.6.2/emacs" load-path))
(setq exec-path (cons "D:/Dev/erl5.8.2/bin" exec-path))
(require 'erlang-start)

4. Для проверки запустите Emacs и откройте любой .erl файл. У Вас в Main Menu должен появиться пункт “Erlang”.

Настройка Distel
1. Скачайте Distel как zip архив github.com/massemanet/distel и распакуйте в .emacs.d
2. Скачайте и установите GNU Make for Windows http://gnuwin32.sourceforge.net/packages/make.htm
3. Запустите cmd и перейдите в .emacs.d/distel директорию и запустите команду make.
4. Добавьте следующие строчки в init.el

(add-to-list 'load-path "D:/Dev/emacs-23.3/.emacs.d/distel/elisp")
(require 'distel)
(distel-setup)

(defvar inferior-erlang-prompt-timeout t)
(defvar inferior-erlang-prompt-timeout t)
(setq inferior-erlang-machine-options '("-sname" "emacs"))
(setq erl-nodename-cache
(make-symbol
(concat
"emacs@"
(car (split-string (shell-command-to-string "hostname"))))))


5. В директории HOME создайте файл .erlang (в cmd напишите echo. 2> .erlang)и поместите в него следующие строчки
code:add_pathsz(["D:/Dev/emacs-23.3/.emacs.d/distel/ebin"]).
(точка в конце обязательна)

6. В директории HOME создайте файл .erlang.cookie и поместите туда строчку emacs. Делается это командой echo emacs>.erlang.cookie.
7. Запустите Emacs и откройте .erl файл в меню Erlang должно появиться выпадающее меню Distel.

Настройка Flymake
1. Создайте директорию flymake в .emacs.d
2. Добавьте в нее файл eflymake
#!/usr/bin/env escript
-export([main/1]).
main([File_Name]) ->
compile:file(File_Name, [warn_obsolete_guard, warn_unused_import, warn_shadow_vars, warn_export_vars, strong_validation, report, {i, "../include"}]).

3. Добавьте в init.el
(require 'flymake)
(setq flymake-log-level 3)
(setq erlang-flymake-location "D:/Dev/emacs-23.3/.emacs.d/flymake/eflymake")

(defun flymake-erlang-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name temp-file
(file-name-directory buffer-file-name)))
(escript-exe (concat (getenv "ERLANG_HOME") "\\bin\\escript.exe"))
(eflymake-loc (expand-file-name erlang-flymake-location)))
(if (not (file-exists-p eflymake-loc))
(error "Please set erlang-flymake-location to an actual location.")
(list escript-exe(list eflymake-loc local-file)))))

(add-to-list 'flymake-allowed-file-name-masks '("\\.erl\\'" flymake-erlang-init))
(defun my-erlang-mode-hook ()
(flymake-mode 1))
(add-hook 'erlang-mode-hook 'my-erlang-mode-hook)


Настройка Wrangler
1. Скачайте и установите в .emacs.d\wrangler http://www.cs.kent.ac.uk/projects/forse/wrangler/wrangler-1.0/Wrangler_Setup.exe
По непонятным причинам после установки в директории ebin не хватало половины файлов, которые Wrangler потребовал для работы. Пришлось скачать сорцы и скомпилировать их из cygwin и заменить файлы в директории ebin на скомпилированные. Детальное описание этого шага я пропущу. В конце статьи будет ссылка на архив моей директории .emacs.d где уже будет скомпилированный wrangler.
2. В файл .erlang (напомню что он находится в директории куда указывает переменная HOME ) добавьте строчку code:add_path("D:/Dev/emacs-23.3/.emacs.d/wrangler/ebin").
(и снова точка обязательна).
3. В init.el добавьте
(add-to-list 'load-path "D:/Dev/Wrangler/elisp")
(setq exec-path (cons "D:/Dev/Wrangler/bin" exec-path))
(require 'wrangler)

4. Запустите Emacs откройте .erl файл и нажмите Ctrl-C + Ctrl-R. В Main Menu должно появиться меню Wrangler.

Настройка ECB (CEDET который нужен для ECB уже включен в Emacs версии 23.2+ )
1. Скачайте последний cvs-snapshot ECB (релиз 2.40 не работает со встроенным CEDET) http://ecb.sourceforge.net/cvs_snapshots/ecb.tar.gz и распакуйте в .emacs.d/ecb-snap
2. Добавьте в init.el
(add-to-list 'load-path "D:/Dev/emacs-23.3/.emacs.d/ecb-snap")
(require 'ecb)

3. Запустите Emacs и нажмите Meta-x (для Windows это Shift-Ecs – x или Левый Alt-x) в появившейся строке ввода введите ecb-activate и нажмите Enter.

Настройка Tabbar
1. Загрузите tabbar.el http://emhacks.cvs.sourceforge.net/viewvc/emhacks/emhacks/tabbar.el в директорию .emacs.d
2. Добавьте (require ‘tabbar) in init.el
3. Запустите Emacs и нажмите Meta-x в появившейся строке ввода введите tabbar-mode и нажмите Enter.

Теперь Ваш Emacs превратился в IDE для разработки на Erlang. Рекомендации по тонкой настройке ECB, Distel и Wragler можно найти на сайтах разработчиков. При желании для flymake можно прикрутить модули flymake-cursor и rfringe.

Ссылки на мою .emacs.d директорию
Depositfile
2shared
Предупреждение: при установке Wrangler прописывает пути в файлах .el. Так что копирование содержимого папки не сработает, если Вы вдруг решили поставить Wrangler в директорию отличную от D:\Dev\emacs-23.3\.emacs.d\wrangler
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.