Comments 7
У use-package
кстати хороший конкурент в лице leaf.el
Как мне кажется leaf
более чистый чем use-package
, а ещё есть много интересных встроенных keywords
Ещё он лучше справляется с проблемой, которая описана в этой статье. Я лично его использую
Интересные штуки - но хороши, когда только входишь в Emacs, а вот если конфиг вырос за долгие годы и последние лет десять к нему особо не притрагивался, то как то лениво пробовать ) У меня ещё со времён 19.34 per-package (хотя тогда это были просто сторонние el файлы) конфигурация вынесена в отдельные файлики, в .emacs цикл, загружающий их при наличии пакета.
У меня аналогичная ситауция, с годами конфиг емакса как-то устаканился и всё более-менее устраивает, устраивать big bang очень не хочется.
Но с другой стороны видимо придётся поразбираться и обновить/отрефакторить то что есть.
Так что автору большое спасибо!
Напомню правила админа:
1. Работает - не трогай.
(use-package anzu :init (global-anzu-mode 1))
Такой код будет работать. А вот с :config - ещё вопрос. Но вообще система инициализации в emacs настолько сложна, что, перерыв все ихсодники, прочитав package.el, cus-* и т.п. всё равно не понимаешь как инициализировать его правильно. setq vs setopt и т.п. большниство конфигов даже с use-package неправильны... тут целая статья нужна. но что-то я отвлёкся.
Почему будет работать: в пакетах есть autoloads. функция в 99% будет объявлена как autoload (если пакет написан нормально) и require отработает ДО вызова функции.
Почему с :config может не заработать: этот код по-сути эквивалент `(with-eval-after-load 'anzu (global-anzu-mode 1)). Т.е. пока кто-нибудь не дёрнет autoload функцию из пакета или не вызовет сам пакет global anzu mode не будет.
Но, иногда пакеты умеют делать трюк с progn+autoload (как magit), чтобы автоматом включить глобальный режим. ну или через custom vars (там ещё интереснее).
А ещё в use-package есть ключевое слово :mode
Вы неправильно настраиваете Emacs: use-package