Es ist klar, dass nicht alle lokalen / benutzerdefinierten / persönlichen Pakete offiziell freigegeben werden sollten, und es wäre dumm, dies nur zu tun, um von der integrierten Unterstützung für die Paketverwaltung zu profitieren. Ich frage mich, wie Autoloads für lokale Pakete generiert und aktiviert werden können. Das ist ähnlich wie package.el
bei den installierten Paketen von ELPA. Gibt es eine Möglichkeit, das Rad "vorzutäuschen", um zu vermeiden, dass ein lokales Verzeichnis (mit Unterverzeichnissen, von denen jedes ein lokales / benutzerdefiniertes / persönliches Paket ist) ELPA ist, um eine Neuerfindung des Rads zu vermeiden? Ich bin auch offen dafür, el-get
ob ein solches Szenario beispielsweise über benutzerdefinierte Rezepte unterstützt werden kann.
Ich bin mir sicher, dass die Aufgabe ziemlich häufig ist und jeder, der Emacs auf fortgeschrittenem Niveau verwendet, früher oder später an diesen Punkt kommt. Könnte jemand seine Erfahrungen auf diesem Gebiet teilen?
quelle
update-directory-autoloads
kann unabhängig von jedem Paketmanager verwendet werden.update-directory-autoloads
, um es tatsächlich rekursiv zu machen. 2. Sie könnenupdate-file-autoloads
für jede Datei verwenden, die Sie interessiert, unabhängig davon, in welchem Verzeichnis sie sich befindet.package.el
ist auch nicht rekursiv (dh es werden keine Pakete mit Quellen in Unterverzeichnissen unterstützt).Antworten:
Die richtige Lösung (IMO) besteht darin, einen Paketmanager zu verwenden, der diesen Anwendungsfall explizit unterstützt. Dies wäre
straight.el
, was ich zu diesem Zweck geschrieben habe.Sie können die ausführliche Dokumentation, einschließlich Vergleiche mit anderen Paketmanagern, in der README-Datei lesen. Ich werde mich also daran halten, wie Sie
straight.el
Ihr spezifisches Problem lösen können.~/.emacs.d/straight/repos/<my-repo>
.Laden Sie es mit
Du bist fertig. Wenn Sie Änderungen am Quellcode vornehmen, werden die automatische Ladegenerierung und die Bytekompilierung erneut ausgeführt (beim nächsten Emacs-Start). Sie erhalten auch Dinge wie Abhängigkeitsmanagement, optionale Versionskontrollautomatisierung usw. kostenlos.
straight.el
mit ,use-package
wenn Sie (es ist nur Syntax Zucker zum größten Teil) bevorzugen.quelle
Ich mache folgendes unter Linux:
Ich habe ein lokales Melpa-Repository eingerichtet, indem ich Melpa geklont habe.
Ich ändere die Rezepte, auf die ich auf meine lokalen Pakete verweisen möchte. Das Folgende ist
local-melpa/recipies/ace-window
Geben Sie dann von local-mepla ein
make all
odermake recipies/ace-window
bauen Sie die Pakete einlocal-melpa/packages
Dann
make packages/archive-contents
wird die Liste der Pakete ausgefüllt.Dann in Gebrauch zu folgen, um Emacs zu sagen, meine lokale Melpa zu verwenden
Ich habe nicht herausgefunden, wie man
make
unter Windows läuft . Aber ich kann die Paketelocal-melpa
unter Linux einbauen und in Windows kopieren, und Emacs versteht und installiert die Pakete ordnungsgemäß.Dies hat den Vorteil, dass ich jederzeit zurücksetzen kann, indem ich mein
~/.emacs.d/elpa/*
Verzeichnis lösche und benutzerdefinierte Updates für jedes Paket installiere.quelle
Wenn Sie ein bereits installiertes Paket durch eine andere Version ersetzt haben und nur die Autoloads-Datei fehlt, können Sie sie mit package-generate-autoloads generieren:
Ich fand es einfacher als die Verwendung von Update-Verzeichnis-Autotools, wenn ich ein Paket auf eine frühere Version herunterstufen muss.
Eigentlich glaube ich, dass ich Ihre Frage nicht wirklich beantwortet habe. Ich werde diese Antwort vorerst hier lassen, aber meine Antwort ist hier relevanter: /programming/26348561/how-to-generate-autoloads-for-elpa-packages/50100170
quelle