Zarządzanie pakietami nowej generacji za pomocą straight.el
Po długiej i frustrującej walce o użycie package.el+ Quelpa do zarządzania moimi pakietami, ugryzłem kulę i napisałem własnego menedżera pakietów . Jest on przeznaczony do całkowitego zastąpienia package.elzapewniając doświadczenie zarządzania pakietami, który jest lepszy w prawie każdym względem.
Możesz przeczytać bardzo obszerną dokumentację, aby dowiedzieć się o wszystkich jej funkcjach, ale najbardziej odpowiednia dla tego pytania jest straight.elkoncentracja na doskonałej odtwarzalności . Oznacza to, że nie powinno mieć znaczenia, czy uruchamiasz Emacsa normalnie, czy uruchamiasz go na nowej maszynie, a wszelkie lokalne zmiany są kontrolowane przez wersję i można je przywrócić do stanu kanonicznego. W praktyce osiąga się to poprzez (1) klonowanie pakietów jako repozytoria Git oraz zapewnienie automatycznych narzędzi do zarządzania ich stanem; (2) wykorzystanie pliku init jako jedynego źródła prawdy dla stanu zarządzania pakietami, bez żadnych zmiennych danych przechowywanych gdzie indziej; oraz (3) użycie opcjonalnych plików blokujących wersji w celu określenia dokładnych wersji Git każdego pakietu, a także repozytoriów receptur istraight.el samo.
Aby rozpocząć, włóż fragment kodu ładującego , który zostanie zainstalowany i aktywowany straight.el. Następnie, aby upewnić się, że pakiet jest zainstalowany, po prostu umieść wywołanie straight-use-packagew pliku init:
(straight-use-package 'projectile)
Tak, to takie proste. Żadnego zajmowania się package-refresh-contentsżadnym z tych śmieci. Jeśli usuniesz ten formularz ze swojego pliku inicjującego i zrestartujesz Emacsa, pocisk nie będzie już ładowany (w przeciwieństwie do in package.el). Oznacza to, że nie musisz się martwić, że Twoja konfiguracja w jakiś sposób nie działa na nowym komputerze, ponieważ przypadkowo polegałeś na niezadeklarowanych pakietach.
Możesz instalować pakiety gdziekolwiek i kiedykolwiek chcesz, w całym pliku init (nie musisz deklarować ich listy w jednym punkcie). Oczywiście, że możesz po prostu zrobić
(dolist (package '(ace-jump-mode ... zzz-to-char)) (straight-use-package package))
jeśli wolisz listę. Polecam jednak użyć use-packagedo zarządzania konfiguracją pakietu. Najpierw musisz go zainstalować:
(straight-use-package 'use-package)
Następnie, ponieważ straight.elma wbudowaną integrację z use-package, następujące „po prostu działa”:
(use-package projectile
:straight t
:init (projectile-mode 1))
Po napisaniu pliku init do zainstalowania potrzebnych pakietów, uruchom, M-x straight-freeze-versionsaby zapisać plik blokady wersji ~/.emacs.d/straight/versions/default.el. Powinieneś zachować ten plik pod kontrolą wersji, ponieważ pozwoli straight.elon sprawdzić poprawne wersje wszystkich twoich pakietów, kiedy po raz pierwszy uruchomisz Emacsa na nowej maszynie. (Można ręcznie przywrócić wersje określone w pliku blokującym za pomocą M-x straight-thaw-versions.)
Aby wesprzeć ideę lokalnych plików dotfile, o których wspomniałem w mojej innej odpowiedzi , straight.eloferuje system profili . Nadal zalecam używanie dowiązań symbolicznych do plików dot (w tym przypadku, init.ellokalnego pliku init, jeśli dotyczy, i pliku blokady wersji, jeśli chcesz go użyć).
Jeśli zastanawiasz się, jak straight.elwypada w porównaniu z innymi menedżerami pakietów, sprawdź obszerną sekcję porównań . Ale jest też o wiele więcej dokumentacji na wszystko inne .
init.el(używając na przykład git), to podejście działa również (w oparciu ouse-package): lunaryorn.com/posts/…