solovyov.net

Пакетный менеджер в Emacs

· · emacs

Когда используешь Емакс достаточно долго, накапливается большое количество всяких сторонних .el-файлов, пакетов собственно. Всякие yasnippet, grep+, smex’ы и прочие ack’и. Само по себе это, конечно, клёво, но за ними приходится следить, обновлять руками, ложить их в тот же репозиторий с емаксовыми конфигами - а это уже как-то не совсем кайфово, ну и в общем нет чувства икебаны, откровенно говоря. :)

Но тут на прошлой неделе по наводке @helge9210 я пристально посмотрел на el-get и за один вечер на него перешёл. :)

Вкратце - это apt-get для Emacs’a. Пишешь в конфиг емакса декларацию о том, чего ты хочешь видеть, как это скачать, что нужно выполнить после того, как пакет будет на месте - и всё начинает работать автоматически. Всë - это значит, что при старте емакса происходит проверка, на месте ли пакет, при необходимости скачивается, байт-компилируется и добавляется в load-path.

Я себе написал небольшой макрос для облегчения жизни, и теперь большая часть пакетов у меня загружается простой инструкцией:

(el-get-add (:name ack))

Тут конечно есть небольшая хитрость - ack.el есть в списке рецептов el-get’a, но если чего нет, то дело это сильно не осложняет:

(el-get-add (:name project-root :type hg :url “http://hg.piranha.org.ua/project-root/" :features project-root :after (lambda () “…код инициализации project-root…”)))

Я думаю, что большая часть параметров тут сама собой понятна, а :features project-root всего лишь значит, что нужно вызвать (require 'project-root).

Инсталляция el-get предельно проста и описана в README, после чего он оказывается установленным в ~/.emacs.d/el-get/el-get/ (~/.emacs.d/el-get/ - общее место для инсталляции пакетов). В общем, клёвая штука, рекомендую. :)