Depois de aprender recentemente, use-packagedecidi portar minha configuração, mas me senti relutante em desistir da conveniência de usar package.elpara instalar pacotes e mantê-los atualizados. Eu achei um pouco complicado de combinar use-packagee package.el.
Geralmente, estou interessado em aprender como as pessoas se combinam use-packagecom o package.elsistema, 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-packageda:ensurepalavra-chave.
Se estou entendendo corretamente, quero muito pouco do que package-initializefaz, 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-initializefaria 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.elnão foi inicializado. A chamada package-initializeresolveria isso, mas desejo evitar isso, já que a) não quero que todas as inúmeras cargas automáticas sejam carregadas (prefiro usar use-packagepara 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-initializeque torna minha pergunta discutível.