Réponses:
Emacs a plusieurs endroits où il recherche des fichiers init, comme indiqué dans le manuel . Si vous souhaitez personnaliser Emacs, vous devez commencer par l'un de ces fichiers.
Une approche courante consiste à utiliser le fichier init.el
dans votre user-emacs-directory
, au lieu d'en avoir un .emacs
dans votre répertoire HOME.
La valeur par user-emacs-directory
défaut ~/.emacs.d
est donc toujours relative à votre HOME, mais l'avantage de cette approche est que vous pouvez garder tout ce qui concerne votre configuration Emacs en un seul endroit. Ce répertoire peut être sous contrôle de version, sauvegardé, partagé sur plusieurs machines, etc. Vous pouvez utiliser un lien symbolique ( mklink
sous Windows) pour conserver les fichiers dans un autre emplacement.
Par exemple, il est assez courant de voir des gens maintenir leur configuration Emacs sur Github. Vous pouvez trouver beaucoup d'exemples par la recherche Github pour des projets elisp avec des fichiers init.el .
user-emacs-directory
Sur chaque installation de Windows sur laquelle j'utilise Emacs, j'ai le code suivant dans un .emacs
fichier à l'emplacement indiqué:
;; Place this file in C:\Users\Username\AppData\Roaming and point to the appropriate files
(setq user-init-file "C:/path/to/.emacs")
(setq user-emacs-directory "C:/path/to/.emacs.d/")
(setq default-directory "C:/whatever/you/want/to/start/in")
(setenv "HOME" "D:/my/home/directory")
(load user-init-file)
De cette façon, je peux mettre mon .emacs
et .emacs.d/
n'importe où je veux.
Votre fichier .emacs va dans votre HOME
répertoire. Du manuel Emacs:
L'équivalent Windows de HOME est le répertoire de données d'application spécifique à l'utilisateur. L'emplacement réel dépend de la version de Windows ...
Vous pouvez remplacer cette valeur par défaut de HOME en définissant explicitement la variable d'environnement HOME pour pointer vers n'importe quel répertoire de votre système. HOME peut être défini soit à partir de l'invite de commandes, soit à partir de la boîte de dialogue "Propriétés" de "Poste de travail". HOME peut également être défini dans le registre système, voir Registre MS-Windows.
HOME
répertoire en quelque chose de très différent. C'est pourquoi j'appelle cela un changement un hack. Le régler à sa valeur appropriée est évidemment correct.
Vous dites:
Je sais comment définir le répertoire personnel, mais pour des raisons de contrôle de version, je veux pouvoir définir emacs pour lire à partir d'un répertoire différent (afin que je puisse avoir un répertoire spécifique à emacs) .
Votre fichier init va dans votre répertoire personnel, que vous pouvez placer n'importe où. Apparemment, vous voulez avoir un répertoire différent pour les choses que Emacs charge. Ce n'est pas un problème. Placez votre fichier init dans votre répertoire personnel et faites ajouter ce fichier à un autre répertoire à la valeur de variable load-path
, puis exigez les autres bibliothèques Emacs que vous souhaitez utiliser. Mettez ces bibliothèques dans cet autre répertoire.
IOW, votre fichier init n'a pas besoin de contenir quoi que ce soit au-delà de la configuration du répertoire où vous conservez les bibliothèques Emacs que vous souhaitez charger.
Par souci d'exhaustivité, je fournis un lien vers:
https://www.gnu.org/software/emacs/manual/html_node/efaq-w32/Location-of-init-file.html
Qui dit que vous pouvez définir une HOME
valeur dans le chemin du registre:
HKCU\SOFTWARE\GNU\Emacs\HOME
Mais cette valeur est remplacée par la variable d'environnement HOME
.
Pensez que vous pourriez mettre (setq user-init-file "C:/path/to/.emacs")
et d'autres lignes proposées par @ryan dans site-start.el
Votre site peut également avoir un fichier de démarrage de site; c'est nommé site-start.el, s'il existe. Comme default.el, Emacs trouve ce fichier via le chemin de recherche standard pour les bibliothèques Lisp. Emacs charge cette bibliothèque avant de charger votre fichier init.
site-start.el
pour charger le vôtreinit.el
et vous n'avez plus besoin a.emacs
. Dans cet exemple, vous n'avez pas besoin de jouer avec le répertoire personnel (sauf si quelqu'un d'autre sur l'ordinateur y met des éléments qui affecteront ce que vous faites). En d'autres termes, il peut être vierge et vous n'avez jamais besoin de le toucher.