Comment définir un emplacement différent pour le fichier dot emacs .emacs sous Windows 7?

16

J'utilise un ordinateur Windows 7 et je n'ai pas d'accès administrateur. Par conséquent, je ne peux pas placer un fichier dot emacs dans le répertoire racine. Existe-t-il un moyen pour moi de spécifier un emplacement différent pour le fichier dot emacs?

Startec
la source
Si vous pouvez contrôler votre propre emplacement de l'installation Emacs (par exemple, le placer où vous le souhaitez, ou au moins avoir un accès en écriture à l'installation), vous pouvez prendre le contrôle complet en utilisant quelque chose comme site-start.elpour charger le vôtre init.elet 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.
lawlist

Réponses:

4

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.eldans votre user-emacs-directory, au lieu d'en avoir un .emacsdans votre répertoire HOME.

La valeur par user-emacs-directorydéfaut ~/.emacs.dest 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 ( mklinksous 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 .

glucas
la source
J'aime cette solution et j'aimerais l'utiliser mais elle ne me dit toujours pas comment changer mauser-emacs-directory
Startec
Ma suggestion était vraiment d'utiliser des liens symboliques. Comme le montrent les autres réponses, vous devez placer quelque chose dans l'un des emplacements standard qu'Emacs lit pendant l'initialisation, même si tout ce qu'il fait est de charger votre configuration ailleurs.
glucas
Le lien manuel est rompu.
corvus_192
17

Sur chaque installation de Windows sur laquelle j'utilise Emacs, j'ai le code suivant dans un .emacsfichier à 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 .emacset .emacs.d/n'importe où je veux.

Ryan
la source
Merci, presque juste ce dont j'avais besoin. J'ai laissé le répertoire par défaut et sentenv HOME mais sinon c'est ce dont j'avais besoin pour setq!
Grant Bowman
J'ai essayé la réponse de Ryan. Mais, maintenant, je ne peux pas ouvrir ce fichier dans emacs à partir du dossier AppData \ Roaming. Veuillez m'excuser, car je n'ai pas pu ajouter de commentaire car je n'ai pas encore 50 points.
Sreekumar R
@SreekumarR Vous devriez poser une nouvelle question, liée à celle-ci, au lieu de poster une "réponse"
Andrew Swann
@SreekumarR Si vous avez une nouvelle question, veuillez la poser en cliquant sur le bouton Poser une question . Incluez un lien vers cette question si cela permet de fournir un contexte. - De l'avis
Stefan
5

Votre fichier .emacs va dans votre HOMEré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.

Tyler
la source
1
Oui, 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)
Startec
3
Notez que ce hack fait qu'Emacs considère autre chose comme le répertoire personnel.
wasamasa
@wasamasa - Je n'appellerais pas cela un "hack". Sur ma version d'Emacs 25, si vous ne définissez pas "HOME" avec une variable d'environnement, il s'agit par défaut du répertoire d'installation d'Emacs, ce qui est clairement faux. "HOME" doit être défini sur ce que l'utilisateur considère comme son répertoire personnel, et la définition de la variable d'environnement est le moyen standard prévu de le faire. Sur les systèmes Unix, cela est généralement déjà fait pour l'utilisateur pendant le processus de connexion, mais sous Windows, vous devez le faire manuellement.
TED
Le but de cela est de changer ce que vous considéreriez normalement comme votre HOMEré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.
wasamasa
2

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.

A dessiné
la source
0

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.

Dima Fomin
la source