Нещодавно дізнавшись про це, use-package
я вирішив передати свою конфігурацію до неї, але виявив неохоче відмовлятися від зручності використання package.el
для встановлення пакетів та постійно оновлювати їх. Я вважаю трохи складно поєднувати use-package
і package.el
.
Мені взагалі цікаво дізнатися, як люди поєднуються use-package
з package.el
системою, але для конкретнішого питання продовжуйте читати.
Ось що я хочу:
- Щоб встановити пакунки менеджером пакунків, щоб я міг легко переглядати пакунки та постійно оновлювати їх
list-packages
. - Налаштовувати та завантажувати пакунки виключно через
use-package
, тому я можу легко бачити у своєму файлі init, що саме я завантажую та як він налаштований. - За бажанням, я хотів би також мати можливість встановити пакети через
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)
допомагає додати файл до мого файлу init. Біт з 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
що робить моє запитання суперечливим.