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?
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.
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.
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.
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.
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.
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:
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)
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.
user-init-file
. Isso acontecerá.emacs
se você já tiver um.emacs
e,init.el
se você o tiver usado.~/.emacs.d/init.el
negligenciar as desvantagens. Vou responder essa parte: não tem nenhuma desvantagem!~/.config/emacs/
mais~/.emacs.d/
. IIUC, se o primeiro existir , o último não será analisado.Respostas:
Sim, existem. Citando lunaryorn no Reddit :
fonte
.emacs.d
.custom
salva 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.~/
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~/.bashrc
ou~/.bash_aliases
.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.fonte
Se tudo o que você precisa para configurar o Emacs do jeito que você gosta é um arquivo init, não faz diferença se é
~/.emacs
ou 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
.fonte
O Emacs 27 apresentará um novo arquivo de inicialização
early-init-file
emuser-emacs-directory
, nomeadamente em~/.emacs.d/early-init.el
. Portanto, um benefício adicional de usar em~/.emacs.d/init.el
vez de~/.emacs
foruser-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:
etc/NEWS
doc/emacs/custom.texi
, nó(emacs) Early Init File
fonte
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
)fonte
~/.emacs.el
também é um nome de arquivo init válido.Você usa
~/.emacs.d/init.el
e apenas simboliza esse arquivo para o~/.emacs
caso de outros programas / plugins esperarem encontrar o .emacs.Em um sistema macOS ou GNU / Linux, o comando seria:
Dessa forma, você obtém todos os benefícios do VC da sua
~/emacs.d
estrutura de diretórios e poderá usar um nome mais curto quando precisar editar o arquivo init.el em~/.emacs
vez de digitar~/emacs.d/init.el
👍fonte