Wenn ich ein neues Paket schreibe, ist es großartig, dass ich seine Installation testen kann, indem ich es einfach ausstelle M-x package-install-from-buffer
. Dadurch wird das Paket mit installiert package.el
, so dass es untergeht
"~/.emacs.d/elpa"
. Dies funktioniert jedoch nicht bei Paketen mit mehreren Dateien.
Wie werden alle .el
Dateien im aktuellen Verzeichnis als einzelnes Multifile-Paket installiert ?
quelle
-pkg.el
Datei ist interessant. Was sind die Standardwerte in diesem Fall?package-install-file
nicht erwähnt, dass sie für Verzeichnisse funktioniert (obwohl dies, wie Sie gesagt haben, der Fall ist).package-install-from-buffer
sagt:Man kann also davon ausgehen, dass Sie das Verzeichnis archivieren können (vorausgesetzt, es erfüllt die Kriterien), die TAR-Datei in Emacs laden und
package-install-from-buffer
wie zuvor verwenden können?Edit: Oder, wie lunaryorn Punkte aus, nicht besuchen Sie das Archiv in Emacs und Verwendung
package-install-file
.quelle
M-x package-install-file
.paradox/paradox-pkg.el
Datei in der zu findentar
, und Fehler, wenn dies nicht der Fall ist. Gleiches für beideinstall-file
undinstall-from-buffer
. Ich schätze, ich muss diese-pkg
Datei als eine Art Rezept erstellen .-pkg
Datei enthalten, andernfalls ist es kein gültiges Paket. Es funktioniert also nicht, nur ein zufälliges Verzeichnis zu tarieren. Emacs muss doch einen Platz haben, um nach den Paketmetadaten zu suchen. Sie können MELPAs verwendenpackage-build
odercask
aus einem Verzeichnisbaum geeignete TAR-Pakete erstellen.C-h i g (elisp) Multi-file Packages
für Details.package.el
hat keine gute Unterstützung für diesen Anwendungsfall. Sie müssenpackage-install-from-buffer
jedes Mal neu ausführen, wenn Sie ein Update für das Paket vornehmen. AußerdemM-x find-function
springen Freunde nicht zum Quellcode, sondern zu der Kopie, die siepackage.el
einfügt~/.emacs.d/elpa
. Infolgedessen würde ich empfehlen, nichtpackage.el
für diesen Anwendungsfall zu verwenden (oder überhaupt nicht, da es eine Reihe anderer Probleme gibt).Stattdessen können Sie meinen Paketmanager ausprobieren
straight.el
, der explizit für diesen Anwendungsfall entwickelt wurde. Mitstraight.el
gibt es keine "lokale Installation". Sie legen einfach Ihr Repository ab~/.emacs.d/straight/repos/<my-package-repo>
und laden das Paket in Ihre Init-Datei:Jedes Mal, wenn Sie eine Änderung am Quellcode vornehmen, wird die automatische Ladegenerierung und Bytekompilierung wiederholt (sobald Sie Emacs neu starten). Außerdem werden Sie direkt aus dem Git-Repository ausgeführt, sodass
M-x find-function
Freunde wie erwartet arbeiten.Schließlich sind lokale und vorgelagerte Versionen vollständig austauschbar.
straight.el
Mit dieser Option können Sie lokale Änderungen vornehmen, die Sie möchten, und sie werden genauso heilig behandelt wie Upstream-Änderungen (obwohlstraight.el
Sie Ihre Repositorys auf Wunsch automatisch [und interaktiv] auf ihre Upstream-Versionen zurücksetzen können). Daher müssen Sie keine Änderungen an Ihrer Konfiguration vornehmen, wenn Sie eine lokale Entwicklung durchführen möchten: Führen Sie einfach eine lokale Entwicklung durch. Und wenn Sie ein privates Paket haben, das Sie veröffentlichen, ist es trivial: Schieben Sie dieses Paket einfach irgendwohin (und aktualisieren Sie wahrscheinlich das Rezept in Ihrer Init-Datei, um auf dieses Git-Repository zu verweisen, damitstraight.el
es von einem anderen Computer neu geklont werden kann).Anders als bei
package.el
gibt es keinen Unterschied bei der Behandlung von Paketen mit mehreren Dateien und einzelnen Dateien.Eine ausführliche Dokumentation zu
straight.el
, einschließlich Vergleiche mit anderen Paketmanagern, finden Sie in der README-Datei .quelle