Existem vantagens em usar ~ / .emacs.d / init.el em vez de ~ / .emacs?


108

Eu normalmente usei ~/.emacspara o meu arquivo de configuração, mas já notei outros usuários ~/.emacs.d/init.el. Existem vantagens para a init.ellocalização? Alguma desvantagem?


4
O Emacs (ou pelo menos algumas versões do emacs) escrevem coisas no .emacs automaticamente.
Vivi

4
@Vivi A menos que você esteja falando de versões muito antigas, o Emacs escreve as coisas user-init-file. Isso acontecerá .emacsse você já tiver um .emacse, init.else você o tiver usado.
Radon Rosborough

As pessoas se concentraram nas vantagens de ~/.emacs.d/init.elnegligenciar as desvantagens. Vou responder essa parte: não tem nenhuma desvantagem!
Omar

Tangencialmente, a partir de versão 27.1 Emacs vai preferir o caminho de configuração XDG ~/.config/emacs/mais ~/.emacs.d/. IIUC, se o primeiro existir , o último não será analisado.
phils 16/09

Respostas:


103

Sim, existem. Citando lunaryorn no Reddit :

  • Ele mantém o $HOMEdiretório organizado, porque todos os arquivos do Emacs estão ordenadamente contidos em um único diretório. Pela mesma razão, todos os pacotes do Emacs modernos escrever seus caches, histórias, etc. em ~/.emacs.d/.

  • Isso facilita o controle de versão, especialmente se você dividir o init.el em arquivos diferentes ~/.emacs.d. Você pode apenas confirmar init.elcomo qualquer outro arquivo, e git clone /my/emacs/config.git ~/.emacs.dem um novo sistema fornece toda a sua configuração do Emacs, sem precisar vincular um arquivo $HOME.


3
Como facilita o controle de versão? Você pode dividir seu arquivo init sem usar .emacs.d.
Gilles

3
Não facilita o controle de versão se você tiver apenas o arquivo .emacs, mas se você tiver outros arquivos emacs em .emacs.d, ele possui. Por exemplo, customsalva arquivos em .emacs.d e se você mantiver o init.el em todos os seus arquivos emacs controlados por versão, estão em um diretório.
Ted Roden 23/09

4
Ao fazer a versão completa do seu diretório .emacs.d /, você também pode manter sob controle de versão os pacotes que você instala via packages.el (ELPA, MELPA ...). Isso facilita o compartilhamento de sua configuração entre vários computadores e a localização de uma regressão na sua configuração (você controla suas dependências). O lado ruim é que ele faz um repositório bastante pesado.
tuxella 23/09

11
Os sistemas de controle de versão não versão apenas um arquivo - eles querem versão de uma pasta. Então você versão ~/e adicione apenas o seu .emacs. Mas agora, você deve certificar-se de não confirmar nenhum outro arquivo, para que você .hgignore ou .gitignore todos os outros arquivos do ~/. Mas agora você não pode rastrear nenhum outro arquivo em ~/, como ~/.bashrcou ~/.bash_aliases.
zck 23/09


37

Uma vantagem adicional: se tudo estiver dentro .emacs.d, você pode manter a configuração do Emacs no Dropbox (ou uma alternativa) e vincular toda a configuração ao diretório inicial. Isso torna a sincronização entre computadores trivial.


25

Se tudo o que você precisa para configurar o Emacs do jeito que você gosta é um arquivo init, não faz diferença se é ~/.emacsou não ~/.emacs.d/init.el. Mas faz sentido criar um diretório no momento em que você começar a dividir seu arquivo init ou adicionar configurações relacionadas ao Emacs, um arquivo Cask, por exemplo. Além disso, é o local onde você salvará o arquivo com as definições da abreviação, o arquivo para opções personalizadas ( M-x customize), etc.

Mantenha tudo bem guardado ~/.emacs.d.


6

O Emacs 27 apresentará um novo arquivo de inicialização early-init-fileem user-emacs-directory, nomeadamente em ~/.emacs.d/early-init.el. Portanto, um benefício adicional de usar em ~/.emacs.d/init.elvez de ~/.emacsfor user-init-fileé que o primeiro colocará os dois arquivos de inicialização no mesmo teto, para maior consistência.

Até o lançamento do Emacs 27, você pode encontrar a documentação para esse novo recurso nos seguintes arquivos da árvore de origem do Emacs:


2

Não tenho certeza se isso realmente faz diferença em termos de velocidade, mas você pode compilar sua configuração com mais facilidade se sua configuração estiver dentro .emacs.d/init.el(por exemplo, create .emacs.d/init.elc)


1
Observe que ~/.emacs.eltambém é um nome de arquivo init válido.
phils

1

Você usa ~/.emacs.d/init.ele apenas simboliza esse arquivo para o ~/.emacscaso de outros programas / plugins esperarem encontrar o .emacs.

Em um sistema macOS ou GNU / Linux, o comando seria:

ln -s ~/.emacs.d/init.el ~/.emacs

Dessa forma, você obtém todos os benefícios do VC da sua ~/emacs.destrutura de diretórios e poderá usar um nome mais curto quando precisar editar o arquivo init.el em ~/.emacsvez de digitar ~/emacs.d/init.el👍


Quais são esses misteriosos "outros programas / plugins" que "esperam encontrar .emacs"? Não acho que seja uma preocupação real.
phils

1
Um exemplo pode ser o Quicklisp, se você fizer um (ql: add-to-init-file), o padrão será ~ / .emacs
cseder

Que curioso. Eu diria que qualquer desses casos justificaria relatórios de erros - o Emacs oferece suporte a vários nomes de arquivos init por um tempo extremamente longo, e a sequência de prioridades é claramente documentada, portanto não há uma boa razão para outros programas não estarem acertando corretamente. . Mas eu não estava antecipando um exemplo real :) Felicidades.
phils
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.