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?
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é.
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.
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.
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.
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.
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:
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)
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👍
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 :)
user-init-file
. Ce sera.emacs
si vous avez déjà eu un.emacs
, etinit.el
si vous avez utilisé cela à la place.~/.emacs.d/init.el
négliger les inconvénients. Je vais répondre à cette partie: il n'a aucun inconvénient!~/.config/emacs/
plus~/.emacs.d/
. IIUC, si le premier existe , le dernier ne sera pas examiné.Réponses:
Oui il y en a. Citant lunaryorn sur Reddit :
la source
.emacs.d
.custom
enregistre 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.~/
, 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~/.bashrc
ou~/.bash_aliases
.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.la source
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
~/.emacs
ou~/.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
.la source
Emacs 27 introduira un nouveau fichier d’initialisation
early-init-file
soususer-emacs-directory
, à savoir~/.emacs.d/early-init.el
. Ainsi, un avantage supplémentaire à utiliser~/.emacs.d/init.el
au lieu de~/.emacs
pour,user-init-file
c’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:
etc/NEWS
doc/emacs/custom.texi
, noeud(emacs) Early Init File
la source
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
)la source
~/.emacs.el
c'est aussi un nom de fichier init valide.Vous utilisez
~/.emacs.d/init.el
et 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:
De cette façon , vous obtenez tous les avantages de la VC de votre
~/emacs.d
structure de répertoire et vous serez en mesure d'utiliser un nom plus court lorsque vous devez éditer le fichier init.el par~/.emacs
lieu de taper~/emacs.d/init.el
👍la source