Risposte:
Emacs ha diversi punti in cui cerca i file init, come documentato nel manuale . Se vuoi personalizzare Emacs devi iniziare con uno di quei file.
Un approccio comune è usare il file init.elnel tuo user-emacs-directory, invece di avere un .emacsnella tua directory HOME.
L' user-emacs-directoryimpostazione predefinita è ~/.emacs.d, quindi è ancora relativa alla tua HOME, ma il vantaggio di questo approccio è che puoi tenere tutto in relazione alla tua configurazione Emacs in un unico posto. Tale directory potrebbe essere sotto controllo di versione, backup, condivisione su più macchine, ecc. È possibile utilizzare un collegamento simbolico ( mklinksu Windows) per conservare i file in un'altra posizione.
Ad esempio, è abbastanza comune vedere gente mantenere la propria configurazione di Emacs su Github. È possibile trovare un sacco di esempi di questo per la ricerca Github per i progetti elisp con file init.el .
user-emacs-directory
Su ogni installazione di Windows su cui utilizzo Emacs, ho il seguente codice in un .emacsfile nella posizione elencata:
;; 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)
In questo modo posso mettere il mio .emacse .emacs.d/dove voglio.
Il tuo file .emacs va nella tua HOMEdirectory. Dal manuale di Emacs:
L'equivalente Windows di HOME è la directory dei dati dell'applicazione specifica dell'utente. La posizione effettiva dipende dalla versione di Windows ...
È possibile ignorare questo valore predefinito di HOME impostando esplicitamente la variabile di ambiente HOME in modo che punti a qualsiasi directory sul proprio sistema. HOME può essere impostato dal prompt della shell dei comandi o dalla finestra di dialogo "Proprietà" di "Risorse del computer". HOME può anche essere impostato nel registro di sistema, consultare Registro MS-Windows.
HOMEdirectory in qualcosa di completamente diverso. Da qui il motivo per cui chiamo quel cambiamento un hack. Impostarlo sul valore appropriato va ovviamente bene.
Tu dici:
So come impostare la directory home, tuttavia per motivi di controllo della versione voglio essere in grado di impostare emacs per leggere da una directory diversa (in modo da poter avere una directory specifica per emacs) .
Il tuo file init va nella tua home directory, che puoi mettere ovunque. Apparentemente vuoi avere una directory diversa per le cose caricate da Emacs. Non è un problema. Metti il tuo file init nella tua home directory, e fai in modo che quel file aggiunga un'altra directory al valore della variabile load-pathe quindi richieda qualunque altra libreria Emacs che vuoi usare. Metti quelle librerie in quell'altra directory.
IOW, il tuo file init non deve contenere altro oltre all'impostazione della directory in cui conservi le librerie Emacs che desideri caricare.
Per motivi di completezza, fornisco un link a:
https://www.gnu.org/software/emacs/manual/html_node/efaq-w32/Location-of-init-file.html
Il che dice che è possibile impostare un HOMEvalore nel percorso del registro:
HKCU\SOFTWARE\GNU\Emacs\HOME
Ma questo valore viene sovrascritto dalla variabile d'ambiente HOME.
Pensa di poter mettere (setq user-init-file "C:/path/to/.emacs")e altre righe proposte da @ryan in site-start.el
Il tuo sito potrebbe anche avere un file di avvio del sito; questo è chiamato site-start.el, se esiste. Come default.el, Emacs trova questo file tramite il percorso di ricerca standard per le librerie Lisp. Emacs carica questa libreria prima che carichi il tuo file init.
site-start.elcaricare la tuainit.ele non hai più bisogno a.emacs. In questo esempio, non è necessario armeggiare con la directory home (a meno che qualcun altro sul computer non stia inserendo roba che influisca su ciò che fai). In altre parole, può essere vuoto e non è mai necessario toccarlo.