Depois de aprender recentemente, use-package
decidi portar minha configuração, mas me senti relutante em desistir da conveniência de usar package.el
para instalar pacotes e mantê-los atualizados. Eu achei um pouco complicado de combinar use-package
e package.el
.
Geralmente, estou interessado em aprender como as pessoas se combinam use-package
com o package.el
sistema, mas para uma pergunta mais específica, continue lendo.
Aqui está o que eu quero:
- Ter pacotes instalados pelo gerenciador de pacotes para que eu possa navegar facilmente por pacotes e mantê-los atualizados
list-packages
. - Para configurar e carregar pacotes exclusivamente
use-package
, para que eu possa ver facilmente no meu arquivo init exatamente o que estou carregando e como está configurado. - Opcionalmente, eu também gostaria de poder instalar pacotes através
use-package
da:ensure
palavra-chave.
Se estou entendendo corretamente, quero muito pouco do que package-initialize
faz, basicamente apenas da maneira como configura o load-path
. Atualmente eu tenho isso na minha configuração:
;(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)
A primeira linha comentada é para que o Emacs 25 não adicione uma útil (package-initialize)
ao meu arquivo de inicialização. A parte com normal-top-level-add-subdirs-to-load-path
é uma aproximação do que package-initialize
faria a load-path
, uma aproximação que parece boa o suficiente.
Isso parece alcançar meus desejos 1 e 2, mas não 3. Se eu tentar usar :ensure
, recebo uma mensagem de erro dizendo que package.el
não foi inicializado. A chamada package-initialize
resolveria isso, mas desejo evitar isso, já que a) não quero que todas as inúmeras cargas automáticas sejam carregadas (prefiro usar use-package
para criar com precisão as cargas automáticas necessárias) eb) desejo poder facilmente evite carregar certos pacotes instalados sempre que eu quiser (o que é fácil de fazer use-package
).
Alguém tem uma recomendação de como fazer isso?
package-initialize
que torna minha pergunta discutível.