Czy są jakieś zalety używania ~ / .emacs.d / init.el zamiast ~ / .emacs?

108

Zwykle używałem ~/.emacsmojego pliku konfiguracyjnego, ale zauważyłem, że inni go używają ~/.emacs.d/init.el. Czy lokalizacja ma zalety init.el? Jakieś wady?

Larry Coleman
źródło
4
Emacs (lub przynajmniej niektóre wersje emacsa) automatycznie zapisują pliki na .emacs.
Vivi
4
@Vivi Jeśli nie mówisz o bardzo starych wersjach, Emacs zapisuje w nich różne rzeczy user-init-file. Będzie tak, .emacsjeśli już miałeś .emacs, i init.eljeśli użyłeś tego zamiast.
Radon Rosborough
Ludzie koncentrowali się na zaletach ~/.emacs.d/init.elzaniedbywania wad. Odpowiem na to pytanie: nie ma żadnych wad!
Omar
Stycznie, począwszy od wersji release 27.1 Emacs wolą ścieżkę config XDG ~/.config/emacs/powyżej ~/.emacs.d/. IIUC, jeśli ten pierwszy istnieje , nie będzie on rozpatrywany.
phils

Odpowiedzi:

103

Tak, są. Cytując lunaryorn na Reddit :

  • Utrzymuje $HOMEkatalog w porządku, ponieważ wszystkie pliki Emacsa są starannie zawarte w jednym katalogu. Z tego samego powodu wszystkie współczesne pakiety Emacsa zapisują swoje pamięci podręczne, historie itp ~/.emacs.d/.

  • Ułatwia kontrolę wersji, zwłaszcza jeśli podzielisz plik init.el na różne pliki ~/.emacs.d. Możesz po prostu zatwierdzić init.eljak każdy inny plik, a git clone /my/emacs/config.git ~/.emacs.dna nowym systemie otrzymasz całą konfigurację Emacsa, bez konieczności łączenia pliku $HOME.

Nicość
źródło
3
Jak to ułatwia kontrolę wersji? Możesz podzielić plik init bez użycia .emacs.d.
Gilles
3
Nie ułatwia kontroli wersji, jeśli masz tylko plik .emacs, ale jeśli masz inne pliki emacs w .emacs.d, robi to. Na przykład customzapisuje pliki w .emacs.d, a jeśli trzymasz init.el w swoich plikach emacs z kontrolą wersji, to one znajdują się w jednym katalogu.
Ted Roden
4
Całkowicie wersjonując swój katalog .emacs.d /, możesz również kontrolować wersje, które instalujesz za pośrednictwem packages.el (ELPA, MELPA…). Ułatwia to udostępnianie konfiguracji między wieloma komputerami i znajdowanie regresji w konfiguracji (śledzenie zależności). Złą stroną jest to, że tworzy dość ciężkie repozytorium.
tuxella,
11
Systemy kontroli wersji nie wersjonują tylko jednego pliku - chcą wersjonować folder. Więc wersja ~/i dodaj tylko swoją .emacs. Ale teraz musisz się upewnić, że nie zatwierdzasz żadnych innych plików, więc .hgignore lub .gitignore każdy inny plik w ~/. Ale teraz nie możesz śledzić żadnych innych plików ~/, takich jak ~/.bashrclub ~/.bash_aliases.
zck
Powiązane: github.com/RichiH/vcsh
wchargin
37

Dodatkowa zaleta: jeśli wszystko jest w .emacs.dśrodku, możesz zachować konfigurację Emacsa na Dropbox (lub alternatywnie) i dowiązać całą konfigurację do katalogu domowego. To sprawia, że ​​synchronizacja między komputerami jest banalna.

shosti
źródło
25

Jeśli wszystko, czego potrzebujesz, aby skonfigurować Emacsa tak, jak lubisz, to plik inicjujący, nie ma znaczenia, czy to ~/.emacsczy ~/.emacs.d/init.el. Ale sensowne jest utworzenie katalogu w momencie, gdy zaczniesz dzielić plik init lub dodasz konfiguracje związane z Emacsem, na przykład plik Cask. Ponadto jest to miejsce, w którym zapiszesz plik z definicjami skrótów, plik z opcjami niestandardowymi ( M-x customize) itp.

Trzymaj wszystko starannie schowane ~/.emacs.d.

Daniel Szmulewicz
źródło
6

Emacs 27 wprowadzi nowy plik inicjalizacji early-init-filepod user-emacs-directory, a mianowicie o ~/.emacs.d/early-init.el. Kolejną korzyścią z używania ~/.emacs.d/init.elzamiast ~/.emacsdla user-init-filejest to, że ta pierwsza umieści oba pliki inicjujące pod tym samym dachem, dla zachowania spójności.

Do czasu wydania Emacsa 27 dokumentację tej nowej funkcji można znaleźć w następujących plikach drzewa źródeł Emacsa:

Bazylia
źródło
2

Nie jestem pewien, czy to naprawdę wpływa na szybkość, ale możesz łatwiej kompilować bajty, jeśli konfiguracja jest w .emacs.d/init.el(tj. Utwórz .emacs.d/init.elc)

armando.sano
źródło
1
Zauważ, że ~/.emacs.eljest to również poprawna nazwa pliku inicjującego.
phils
1

Używasz ~/.emacs.d/init.eli po prostu symbolizujesz ten plik ~/.emacs, na wypadek, gdyby inne programy / wtyczki spodziewały się znaleźć .emacs.

W systemie macOS lub GNU / Linux komenda wyglądałaby następująco:

ln -s ~/.emacs.d/init.el ~/.emacs

W ten sposób zyskujesz wszystkie zalety VC w ~/emacs.dstrukturze katalogów i będziesz mógł użyć krótszej nazwy, gdy będziesz musiał edytować plik init.el ~/.emacszamiast pisać ~/emacs.d/init.el👍

cseder
źródło
Co to za tajemnicze „inne programy / wtyczki”, które „spodziewają się znaleźć .emacs”? Nie sądzę, żeby to była prawdziwa troska.
phils
1
Jednym z przykładów może być Quicklisp, jeśli zrobisz (ql: add-to-init-file) domyślnie ~ / .emacs
cseder
Jakie ciekawe. Powiedziałbym, że takie przypadki uzasadniają zgłoszenia błędów - Emacs obsługuje bardzo wiele różnych nazw plików init od bardzo długiego czasu, a sekwencja priorytetów jest jasno udokumentowana, więc nie ma żadnego powodu, aby inne programy nie robiły tego poprawnie . Jednak wcale nie spodziewałem się prawdziwego przykładu :) Pozdrawiam.
phils