После недавнего изучения use-package
я решил портировать свою конфигурацию на него, но обнаружил, что не хочу отказываться от удобства использования package.el
для установки пакетов и их обновления. Я нашел это немного сложным для объединения use-package
и package.el
.
Мне, как правило, интересно узнать, как люди объединяются use-package
с package.el
системой, но для более конкретного вопроса продолжайте читать.
Вот что я хочу:
- Чтобы пакеты были установлены менеджером пакетов, чтобы я мог легко просматривать пакеты и постоянно обновлять их
list-packages
. - Настраивать и загружать пакеты исключительно через
use-package
, чтобы я мог легко видеть в моем файле инициализации, что именно я загружаю и как он настроен. - По желанию, я хотел бы также иметь возможность установить пакеты через
use-package
«s:ensure
ключевое слово.
Если я правильно понимаю, я хочу очень мало того, что package-initialize
делает, в основном только то, как это настраивает load-path
. В настоящее время у меня есть это в моей конфигурации:
;(package-initialize)
(setq package-enable-at-startup nil)
(let ((default-directory "~/.emacs.d/elpa"))
(normal-top-level-add-subdirs-to-load-path))
(require 'use-package)
Первая закомментированная строка такова, что Emacs 25 не добавляет (package-initialize)
в мой файл инициализации. Бит с normal-top-level-add-subdirs-to-load-path
является приближением к тому, package-initialize
что сделало бы load-path
, приближение, которое кажется достаточно хорошим.
Это, кажется, достигает моих желаний 1 и 2, но не 3. Если я пытаюсь использовать :ensure
, я получаю сообщение об ошибке, говорящее, что package.el
это не инициализировано. Вызов исправил package-initialize
бы это, но я хотел бы избежать этого, так как а) я не хочу, чтобы загружались все бесчисленные автозагрузки (я предпочитаю использовать use-package
для создания именно тех автозагрузок, которые мне нужны), и б) я хочу иметь возможность легко Старайтесь не загружать определенные установленные пакеты в любое время (это легко сделать use-package
).
У кого-нибудь есть рекомендации как это сделать?
package-initialize
которое делает мой вопрос спорным.