Sou iniciante no Emacs (usei-o por cerca de duas semanas e adoro). À medida que atualizo e expiro meu ~/.emacs.d/init.el
arquivo, as coisas que escrevo nele dependem de certos pacotes que instalei do MELPA usando M-x package-install
, de .el
arquivos que eu mesmo escrevi etc.
Minha pergunta é: devo, no futuro, trocar de computador, por exemplo, qual é a melhor maneira de obter perfeitamente o mesmo ambiente Emacs exato no novo computador que eu tenho agora?
init.el
(usando o git, por exemplo), essa abordagem também funcionará (com base emuse-package
): lunaryorn.com/posts/…~/.emacs.d
diretório inteiro ; portanto, use o método que você preferir para sincronizar isso entre as máquinas. (por exemplo, um repositório do Github, uma pasta do Dropbox ou o que for melhor para você).Respostas:
A solução correta é usar
straight.el
, um gerenciador de pacotes que escrevi para resolver esse problema. Você pode encontrar mais detalhes sobre isso em outra resposta a esta pergunta .Essa resposta, que foi escrita meses antes de eu começar a trabalhar
straight.el
, descreveu anteriormente uma maneira estritamente inferior de obter uma solução parcial. Esta abordagem é descrita brevemente abaixo; Eu não recomendo mais.Mesmo se você não quiser usar
straight.el
, você deve pelo menos adotaruse-package
. (Não que os dois sejam mutuamente exclusivos - acredito que a configuração mais limpa vem do uso de ambos.)Comece definindo uma lista de pacotes no seu arquivo init:
Em seguida, instale-os automaticamente:
Se você mantiver seu
init.el
arquivo sob controle de versão, sincronizá-lo com outra máquina resultará na instalação automática dos pacotes. Obviamente, as versões instaladas serão completamente diferentes e, como resultado, não se pode esperar que sua configuração funcione imediatamente. Essa é uma falha fundamentalpackage.el
e é uma das razões pelas quais essa abordagem é ruim. Veja novamentestraight.el
. Observe também que o código descrito acima separa sua lista de pacotes da sua configuração para esses pacotes, dificultando o controle das coisas no seu arquivo init. Essa é outra grande desvantagem. Veja novamenteuse-package
.fonte
package.el
para atualizar pacotes, você terá alterações sem etapas no seu repositório e precisará fazer uma confirmação para incluir as atualizações do pacote.M-x list-packages RET U
.straight.el
apenas para instalar pacotes Emacs. Nix é uma ótima idéia, mas não é muito otimizado para o desenvolvimento de pacotes Emacs, tanto quanto eu sei (por favor, corrija-me se estiver errado) . Se você usar um gerenciador de pacotes do sistema para instalar os pacotes do Emacs, não poderá editar apenas o código-fonte e, em seguida, confirmar e enviar suas alterações pelo upstream. Da última vez que olhei para uma configuração Nix para pacotes Emacs, ela parecia excessivamente complexa e geralmente inferior àstraight.el
experiência de desenvolvimento. Mas, o que quer que flutue no seu barco.Se você usar o pacote de uso , poderá mover esse arquivo de um computador para outro e, quando o Emacs iniciar, desde que você tenha acesso à Internet, ele puxará os pacotes e os configurará.
Primeiro, configure a biblioteca de pacotes:
E então bootstrap
use-package
:Agora, em vez de configurar o Emacs e assumir que os pacotes estão instalados, use-os
use-package
para instalar e configurá-los. Por exemplo, para algumas das minhas configurações de leme:fonte
init.el
), mas há muito mais. Por exemplo, isso não irá portar os arquivos do dabbrev, seus trechos personalizados ou muitas outras coisas.:ensure t
àuse-package
declaração ou definiruse-package-always-ensure
comot
. Caso contrário, ele não seria instalado automaticamente em outro sistema quando a configuração fosse copiada.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 completamentepackage.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 chamadastraight-use-package
no seu arquivo init: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 depackage.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
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:Então, como ele
straight.el
possui integração internause-package
, o seguinte "simplesmente funciona":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 usandoM-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.fonte
Você pode usar o cask para gerenciar seus pacotes. Use o git / github para controlar a fonte e sincronizar seus arquivos de pontos do emacs.
fonte