solovyov.net

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

2 min read · 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/ - общее место для инсталляции пакетов). В общем, клёвая штука, рекомендую. :)

If you like what you read — subscribe to my Twitter, I always post links to new posts there. Or, in case you're an old school person longing for an ancient technology, put a link to my RSS feed in your feed reader (it's actually Atom feed, but who cares).

Other recent posts

Server-Sent Events, but with POST
ngrok for the wicked, or expose your ports comfortably
PostgreSQL collation
History Snapshotting in TwinSpark
Code streaming: hundred ounces of nuances