Come posso impostare una posizione diversa per il file dot emacs .emacs su Windows 7?


16

Sto usando un computer Windows 7 e non ho accesso come amministratore. Pertanto non riesco a posizionare un file emacs punto nella directory principale. Esiste un modo per specificare una posizione diversa per il file dot emacs?


Se riesci a controllare la tua posizione dell'installazione di Emacs (ad esempio, posizionandola dove vuoi, o almeno hai accesso in scrittura all'installazione), puoi prendere il controllo completo usando qualcosa come site-start.elcaricare la tua init.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.
elenco delle leggi

Risposte:


4

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 .


Mi piace questa soluzione e vorrei usarla ma non mi dice ancora come cambiare il miouser-emacs-directory
Startec

Il mio suggerimento era di usare i symlink, davvero. Come mostrato dalle altre risposte, devi mettere qualcosa in una delle posizioni standard che Emacs legge durante init, anche se tutto ciò che fa è caricare la tua configurazione da qualche altra parte.
Glucas,

Il collegamento manuale è interrotto.
corvus_192,

17

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.


Grazie, quasi proprio quello di cui avevo bisogno. Ho lasciato fuori la directory di default e sentenv HOME, ma per il resto è ciò di cui avevo bisogno per impostareq!
Grant Bowman,

Ho provato la risposta di Ryan. Ma ora non riesco ad aprire questo file all'interno di emacs dalla cartella AppData \ Roaming. Mi scusi gentilmente, poiché non ho potuto aggiungere commenti perché, non ho ancora 50 punti.
Sreekumar R,

@SreekumarR Dovresti porre una nuova domanda, collegandoti a questa, invece di pubblicare una "Risposta"
Andrew Swann,

@SreekumarR Se hai una nuova domanda, chiedila facendo clic sul pulsante Poni domanda . Includere un collegamento a questa domanda se aiuta a fornire un contesto. - Dalla recensione
Stefan,

5

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.


1
Sì, 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)
Startec

3
Nota che questo hack fa considerare Emacs qualcos'altro come home directory.
wasamasa,

@wasamasa - Non lo definirei un "hack". Nella mia build di Emacs 25, se non imposti "HOME" con una variabile di ambiente, il valore predefinito è la directory di installazione di Emacs, che è chiaramente errata. "HOME" dovrebbe essere impostato su ciò che l'utente considera la propria directory home e l'impostazione della variabile di ambiente è il modo standard previsto per farlo. Sui sistemi Unix questo di solito è già fatto per l'utente durante il processo di accesso, ma su Windows devi farlo manualmente.
TED

Il punto è cambiare ciò che normalmente considereresti la tua HOMEdirectory in qualcosa di completamente diverso. Da qui il motivo per cui chiamo quel cambiamento un hack. Impostarlo sul valore appropriato va ovviamente bene.
wasamasa,

2

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.



0

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.