Odpowiedzi:
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.el
w swoim user-emacs-directory
, zamiast posiadania go .emacs
w katalogu HOME.
W user-emacs-directory
domyś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 ( mklink
w 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 .
user-emacs-directory
Przy każdej instalacji systemu Windows, w której używam Emacsa, mam następujący kod w .emacs
pliku 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 .emacs
i .emacs.d/
gdziekolwiek chcę.
Twój plik .emacs trafia do twojego HOME
katalogu. 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.
HOME
katalog, na coś zupełnie innego. Dlatego nazywam tę zmianę hackem. Ustawienie odpowiedniej wartości jest oczywiście w porządku.
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-path
a 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ć.
Dla zachowania kompletności zamieszczam link do:
https://www.gnu.org/software/emacs/manual/html_node/efaq-w32/Location-of-init-file.html
Co oznacza, że możesz ustawić HOME
wartość w ścieżce rejestru:
HKCU\SOFTWARE\GNU\Emacs\HOME
Ale ta wartość jest zastępowana przez zmienną środowiskową HOME
.
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.
site-start.el
ładowanie własnejinit.el
i 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ć.