Gerenciamento de pacotes de última geração com straight.el
Após uma longa e frustrante luta para usar o package.el
+ Quelpa para gerenciar meus pacotes, eu mordi a bala e escrevi meu próprio gerenciador de pacotes . Ele pretende substituir completamente package.el
, fornecendo uma experiência de gerenciamento de pacotes superior em quase todos os aspectos.
Você pode ler a documentação muito extensa para aprender sobre todos os seus recursos, mas o mais relevante para essa questão é o straight.el
foco na reprodutibilidade perfeita . Isso significa que não importa se você está iniciando o Emacs normalmente ou em uma nova máquina, e que quaisquer alterações locais são controladas por versão e podem ser revertidas para um estado canônico. Na prática, isso é conseguido (1) pela clonagem de pacotes como repositórios Git e pelo fornecimento de ferramentas automatizadas para gerenciar seu estado; (2) usando o arquivo init como a única fonte de verdade para o estado de gerenciamento de pacotes, sem dados mutáveis armazenados em outro local; e (3) usando arquivos de bloqueio de versão opcionais para especificar revisões exatas do Git de cada pacote, além de repositórios de receitas estraight.el
em si.
Para começar, insira o snippet de inicialização , que será instalado e ativado straight.el
. Então, para garantir que um pacote esteja instalado, basta fazer uma chamada straight-use-package
no seu arquivo init:
(straight-use-package 'projectile)
Sim, é simples assim. Nada de lidar com package-refresh-contents
esse lixo. Se você remover este formulário do seu arquivo init e reiniciar o Emacs, o Projectile não será mais carregado (ao contrário de package.el
). Isso significa que você não precisa se preocupar com a configuração de alguma forma não funcionar em uma nova máquina, porque você acidentalmente dependeu de pacotes não declarados.
Você pode instalar pacotes onde e quando quiser, em todo o seu arquivo init (não é necessário declarar uma lista deles em um único ponto). Claro que você também pode fazer
(dolist (package '(ace-jump-mode ... zzz-to-char)) (straight-use-package package))
se você preferir a lista. No entanto, recomendo que você use use-package
para gerenciar sua configuração de pacote. Primeiro você precisa instalá-lo:
(straight-use-package 'use-package)
Então, como ele straight.el
possui integração interna use-package
, o seguinte "simplesmente funciona":
(use-package projectile
:straight t
:init (projectile-mode 1))
Depois de escrever seu arquivo init para instalar os pacotes necessários, execute M-x straight-freeze-versions
para salvar um arquivo de bloqueio da versão ~/.emacs.d/straight/versions/default.el
. Você deve manter esse arquivo sob controle de versão, pois ele permitirá straight.el
verificar as versões corretas de todos os seus pacotes quando você iniciar o Emacs em uma nova máquina. (Você pode reverter manualmente para as versões especificadas no arquivo de bloqueio usando M-x straight-thaw-versions
.)
Para apoiar a idéia de arquivos de pontos locais da máquina que mencionei na minha outra resposta , straight.el
oferece um sistema de perfil . Eu ainda recomendo usar links simbólicos para seus arquivos de ponto (nesse caso, init.el
seu arquivo init local, se aplicável, e a versão lockfile, se você quiser usar um).
Se você está se perguntando como se straight.el
compara com outros gerenciadores de pacotes, consulte a seção de comparações extensivas . Mas há muito mais documentação sobre todo o resto também.
init.el
(usando o git, por exemplo), essa abordagem também funcionará (com base emuse-package
): lunaryorn.com/posts/…