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.el
zapewniają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.el
koncentracja 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-package
w 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-package
do zarządzania konfiguracją pakietu. Najpierw musisz go zainstalować:
(straight-use-package 'use-package)
Następnie, ponieważ straight.el
ma 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-versions
aby zapisać plik blokady wersji ~/.emacs.d/straight/versions/default.el
. Powinieneś zachować ten plik pod kontrolą wersji, ponieważ pozwoli straight.el
on 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.el
oferuje system profili . Nadal zalecam używanie dowiązań symbolicznych do plików dot (w tym przypadku, init.el
lokalnego pliku init, jeśli dotyczy, i pliku blokady wersji, jeśli chcesz go użyć).
Jeśli zastanawiasz się, jak straight.el
wypada 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/…