Y at-il des avantages à utiliser ~ / .emacs.d / init.el au lieu de ~ / .emacs?

108

J'ai normalement utilisé ~/.emacspour mon fichier de configuration, mais j'ai remarqué que d'autres en utilisaient ~/.emacs.d/init.el. Y a-t-il des avantages à l' init.elemplacement? Des inconvénients?

Larry Coleman
la source
4
Emacs (ou au moins certaines versions d’emacs) écrivent automatiquement des éléments sur .emacs.
Vivi
4
@Vivi À moins que vous ne parliez de très anciennes versions, Emacs écrit des choses dans user-init-file. Ce sera .emacssi vous avez déjà eu un .emacs, et init.elsi vous avez utilisé cela à la place.
Radon Rosborough
Les gens se sont concentrés sur les avantages de ~/.emacs.d/init.elnégliger les inconvénients. Je vais répondre à cette partie: il n'a aucun inconvénient!
Omar
Tangentiellement, à partir de la version de version 27,1 Emacs préférera le chemin de configuration XDG ~/.config/emacs/plus ~/.emacs.d/. IIUC, si le premier existe , le dernier ne sera pas examiné.
phils

Réponses:

103

Oui il y en a. Citant lunaryorn sur Reddit :

  • Cela permet de garder le $HOMErépertoire dégagé, car tous les fichiers Emacs sont soigneusement contenus dans un seul répertoire. Pour la même raison, tous les paquets Emacs modernes écrivent leurs caches, histoires, etc. dans ~/.emacs.d/.

  • Cela facilite le contrôle de version, surtout si vous divisez votre init.el en différents fichiers dans ~/.emacs.d. Vous pouvez simplement valider init.elcomme tous les autres fichiers et, git clone /my/emacs/config.git ~/.emacs.dsur un nouveau système, vous donne l’ensemble de votre configuration Emacs, sans avoir à lier un fichier $HOME.

nicael
la source
3
Comment facilite-t-il le contrôle de version? Vous pouvez diviser votre fichier init sans utiliser .emacs.d.
Gilles
3
Cela ne facilite pas le contrôle de version si vous n’avez que le fichier .emacs, mais si vous avez d’autres fichiers emacs dans .emacs.d, c’est le cas. Par exemple, customenregistre les fichiers dans le fichier .emacs.d et, si vous conservez init.el dans leurs fichiers, tous vos fichiers emacs sous contrôle de version se trouvent dans un répertoire.
Ted Roden
4
En effectuant une version complète de votre répertoire .emacs.d /, vous pouvez également garder sous contrôle de version les packages que vous installez via packages.el (ELPA, MELPA…). Cela facilite le partage de votre configuration entre plusieurs ordinateurs et la localisation d'une régression introduite dans votre configuration (vous suivez vos dépendances). Le mauvais côté est qu’il fait un dépôt assez lourd.
tuxella
11
Les systèmes de contrôle de version ne font pas que la version d'un fichier - ils veulent la version d'un dossier. Donc, vous version ~/, et ajoutez simplement votre .emacs. Mais maintenant, vous devez vous assurer que vous ne commettez aucun autre fichier, de sorte que vous .hgignore ou .gitignore tous les autres fichiers de ~/. Mais maintenant, vous ne pouvez pas suivre d'autres fichiers ~/, comme ~/.bashrcou ~/.bash_aliases.
mardi
Connexes: github.com/RichiH/vcsh
wchargin le
37

Un avantage supplémentaire: si tout est dedans .emacs.d, vous pouvez garder votre configuration Emacs sur Dropbox (ou une alternative) et faire un lien symbolique de la configuration entière vers votre répertoire personnel. Cela rend la synchronisation entre ordinateurs triviale.

Shosti
la source
25

Si tout ce dont vous avez besoin pour configurer Emacs à votre guise est un fichier init, cela ne fait aucune différence, que ce soit ~/.emacsou ~/.emacs.d/init.el. Mais il est judicieux de créer un répertoire dès que vous commencez à fractionner votre fichier init ou à ajouter des configs relatives à Emacs, un fichier Cask par exemple. En outre, c'est l'endroit où vous enregistrez le fichier avec les définitions abrégées, le fichier pour les options personnalisées ( M-x customize), etc.

Gardez tout soigneusement caché dans ~/.emacs.d.

Daniel Szmulewicz
la source
6

Emacs 27 introduira un nouveau fichier d’initialisation early-init-filesous user-emacs-directory, à savoir ~/.emacs.d/early-init.el. Ainsi, un avantage supplémentaire à utiliser ~/.emacs.d/init.elau lieu de ~/.emacspour, user-init-filec’est que le premier place les deux fichiers d’initialisation sous le même toit, par souci de cohérence.

Jusqu'à la publication d'Emacs 27, vous pouvez trouver la documentation de cette nouvelle fonctionnalité dans les fichiers suivants de l'arbre source Emacs:

Basilic
la source
2

Vous ne savez pas vraiment si cela fait une différence en termes de vitesse, mais vous pouvez compiler plus facilement votre configuration si votre configuration est en mode .emacs.d/init.el(c'est- à -dire créer .emacs.d/init.elc)

armando.sano
la source
1
Notez que ~/.emacs.elc'est aussi un nom de fichier init valide.
phils
1

Vous utilisez ~/.emacs.d/init.elet faites simplement un lien symbolique vers ce fichier ~/.emacs, au cas où d’autres programmes / plugins s’attendent à trouver .emacs.

Sur un système macOS ou GNU / Linux, la commande serait la suivante:

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

De cette façon , vous obtenez tous les avantages de la VC de votre ~/emacs.dstructure de répertoire et vous serez en mesure d'utiliser un nom plus court lorsque vous devez éditer le fichier init.el par ~/.emacslieu de taper ~/emacs.d/init.el👍

cseder
la source
Quels sont ces mystérieux "autres programmes / plugins" qui "s'attendent à trouver des .emacs"? Je ne pense pas que ce soit une préoccupation réelle.
phils
1
Un exemple pourrait être Quicklisp, si vous faites un (ql: add-to-init-file) sa valeur par défaut est ~ / .emacs
cseder
Comme c'est curieux. Je dirais que de tels cas justifieraient des rapports de bugs - Emacs supporte une variété de noms de fichiers init depuis très longtemps et la séquence de priorité est clairement documentée, il n'y a donc aucune bonne raison pour que d'autres programmes ne donnent pas ce résultat. . Je ne m'attendais pas du tout à un exemple concret, cependant :)
Phils