Jak ustawić inną lokalizację pliku .emacs dot emacs w systemie Windows 7?


16

Używam komputera z systemem Windows 7 i nie mam dostępu administratora. Dlatego nie mogę umieścić pliku emacs kropki w katalogu głównym. Czy istnieje sposób, aby określić inną lokalizację pliku emacs?


Jeśli możesz kontrolować własną lokalizację instalacji Emacsa (np. Umieszczając ją gdziekolwiek chcesz lub przynajmniej masz dostęp do zapisu w instalacji), możesz przejąć pełną kontrolę, używając czegoś takiego jak site-start.elładowanie własnej init.eli nie potrzebujesz już .emacs. W tym przykładzie nie musisz majstrować przy katalogu domowym (chyba że ktoś inny na komputerze umieści tam rzeczy, które wpłyną na to, co robisz). Innymi słowy, może być pusty i nigdy nie trzeba go dotykać.
prawnik

Odpowiedzi:


4

Emacs ma kilka miejsc, w których szuka plików inicjujących, jak udokumentowano w instrukcji . Jeśli chcesz dostosować Emacsa, musisz zacząć od jednego z tych plików.

Powszechnym podejściem jest użycie pliku init.elw swoim user-emacs-directory, zamiast posiadania go .emacsw katalogu HOME.

W user-emacs-directorydomyślnie ~/.emacs.d, więc jest jeszcze w stosunku do swojego domu, ale zaletą tego podejścia jest to, można zachować wszystko, co związane z konfiguracją Emacs w jednym miejscu. Ten katalog może podlegać kontroli wersji, tworzeniu kopii zapasowych, współużytkowaniu na wielu komputerach itp. Możesz użyć dowiązania symbolicznego ( mklinkw systemie Windows), aby zachować pliki w innej lokalizacji.

Na przykład ludzie często utrzymują konfigurację Emacsa na Github. Można znaleźć wiele przykładów tego poprzez poszukiwanie GitHub dla Elisp projektów z plikami init.el .


Podoba mi się to rozwiązanie i chciałbym go użyć, jednak nadal nie mówi mi, jak zmienić mojeuser-emacs-directory
Startec

Moją propozycją było naprawdę użycie dowiązań symbolicznych. Jak pokazują inne odpowiedzi, musisz umieścić coś w jednej ze standardowych lokalizacji, które Emacs czyta podczas init, nawet jeśli wszystko, co robi, to załaduj konfigurację z innego miejsca.
glucas

Link ręczny jest zepsuty.
corvus_192

17

Przy każdej instalacji systemu Windows, w której używam Emacsa, mam następujący kod w .emacspliku w wymienionej lokalizacji:

;; 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)

W ten sposób mogę umieścić swoje .emacsi .emacs.d/gdziekolwiek chcę.


Dziękuję, prawie tylko to, czego potrzebowałem. Opuściłem domyślny katalog i sentenv HOME, ale poza tym tego właśnie potrzebowałem do setq!
Grant Bowman,

Próbowałem odpowiedzi Ryana. Ale teraz nie jestem w stanie otworzyć tego pliku w emacs z folderu AppData \ Roaming. Uprzejmie przepraszam, ponieważ nie mogłem dodać komentarza, ponieważ nie mam jeszcze 50 punktów.
Sreekumar R

@SreekumarR Powinieneś zadać nowe pytanie, łącząc się z tym, zamiast zamieszczać „Odpowiedź”
Andrew Swann,

@SreekumarR Jeśli masz nowe pytanie, zadaj je, klikając przycisk Zadaj pytanie . Dołącz link do tego pytania, jeśli pomaga to w zapewnieniu kontekstu. - Z recenzji
Stefan

5

Twój plik .emacs trafia do twojego HOMEkatalogu. Z instrukcji Emacsa:

Odpowiednikiem HOME dla systemu Windows jest katalog danych aplikacji specyficzny dla użytkownika. Rzeczywista lokalizacja zależy od wersji systemu Windows ...

Możesz zastąpić tę domyślną wartość HOME, jawnie ustawiając zmienną środowiskową HOME tak, aby wskazywała na dowolny katalog w twoim systemie. Program HOME można ustawić w wierszu polecenia lub w oknie dialogowym „Właściwości” w „Mój komputer”. Program HOME można również ustawić w rejestrze systemu, patrz Rejestr MS-Windows.


1
Tak, wiem jak ustawić katalog domowy, jednak ze względu na kontrolę wersji chcę mieć możliwość ustawienia emacsa do odczytu z innego katalogu (tak, że mogę mieć katalog specyficzny dla emacsa)
Startec

3
Zauważ, że ten hack zmusza Emacsa do rozważenia czegoś innego jako katalogu domowego.
wasamasa

@wasamasa - nie nazwałbym tego „hack”. W mojej kompilacji Emacsa 25, jeśli nie ustawisz „HOME” za pomocą zmiennej środowiskowej, domyślnie będzie to katalog instalacyjny Emacsa, co jest całkiem błędne. „HOME” powinno być ustawione na to, co użytkownik uważa za swój katalog domowy, a ustawienie zmiennej środowiskowej jest zamierzonym standardowym sposobem na to. W systemach Unix jest to zwykle wykonywane przez użytkownika podczas procesu logowania, ale w systemie Windows musisz to zrobić ręcznie.
TED,

Chodzi o to, aby zmienić to, co normalnie uważasz za swój HOMEkatalog, na coś zupełnie innego. Dlatego nazywam tę zmianę hackem. Ustawienie odpowiedniej wartości jest oczywiście w porządku.
wasamasa,

2

Mówisz:

Wiem, jak ustawić katalog domowy, jednak ze względu na kontrolę wersji chcę mieć możliwość ustawienia emacsa do odczytu z innego katalogu (tak, że mogę mieć katalog specyficzny dla emacsa) .

Twój plik init znajduje się w katalogu domowym, który możesz umieścić w dowolnym miejscu. Najwyraźniej chcesz mieć inny katalog dla rzeczy ładowanych przez Emacsa. To nie jest problem. Umieść swój plik inicjujący w katalogu domowym i pozwól temu plikowi dodać kolejny katalog do wartości zmiennej, load-patha następnie wymagać innych bibliotek Emacsa, których chcesz użyć. Umieść te biblioteki w innym katalogu.

IOW, twój plik inicjujący nie musi zawierać niczego poza konfiguracją katalogu, w którym przechowujesz biblioteki Emacsa, które chcesz załadować.



0

Pomyśl, że możesz umieścić (setq user-init-file "C:/path/to/.emacs")i inne wiersze zaproponowane przez @ryan w site-start.el

Twoja witryna może mieć również plik startowy witryny; nazywa się to site-start.el, jeśli istnieje. Podobnie jak default.el, Emacs znajduje ten plik za pomocą standardowej ścieżki wyszukiwania bibliotek Lisp. Emacs ładuje tę bibliotekę przed załadowaniem pliku init.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.