Dies ähnelt dieser Frage, aber die Antwort dort scheint veraltet zu sein.
Angenommen, ich verwende eine Ebene und möchte den Code eines bestimmten Pakets hacken, das diese Ebene verwendet. Wie gehe ich vor?
Um besser zu veranschaulichen, was ich im Allgemeinen erreichen möchte, präsentiere ich ein konkretes Beispiel.
Ich versuche, die spotifyEbene zum Laufen zu bringen , aber der aktuelle masterZweig im helm-spotifyPaket verwendet eine veraltete Web-API. Es gibt eine Pull-Anfrage , um dies zu beheben, und ich möchte es versuchen und vielleicht etwas beitragen. Mein Problem ist, dass ich die lokale Kopie nicht helm-spotifyzum Laden bekommen kann.
Ich habe versucht, in den developZweig von spacemacs:
git branch --track develop origin/develop
git checkout develop
Im ~/.emacs.d/layers/spotify/packages.el
Ich habe mich verändert von
(setq spotify-packages '(spotify helm-spotify))
Zu
(setq spotify-packages
'(
spotify
(helm-spotify :location local)
))
Und zog das helm-spotifyRepository zu~/.emacs.d/layers/spotify/local/helm-spotify
Wenn ich Spacemacs neu starte, bekomme ich
File error: Cannot open load file, no such file or directory, multi
Wenn ich hineinschaue, helm-spotify.elgibt es:
(require 'multi)
Meine Vermutung ist also, dass bei der Installation helm-spotifyaus melpader Abhängigkeit von multivor dem Laden aufgelöst wird, helm-spotifyaber natürlich nicht mehr, wenn ich eine lokale Kopie von verwende helm-spotify.
Meine Fragen sind also :
- Wie können Abhängigkeiten bei Verwendung eines lokalen Pakets aufgelöst werden?
- Oder sollte ich das ganz anders machen als ich es beschrieben habe?
Ich habe auch versucht, ohne Erfolg, hinzufügen multizu dotspacemacs-additional-packagesund zu spotify-packages:
(setq spotify-packages '(
multi ;; I added this
spotify
(helm-spotify :location local) ;; I modified here
))
;; I added this
(defun spotify/init-multi ()
(use-package multi))
;; the rest is as it was
(defun spotify/init-spotify ()
(use-package spotify
:config (spacemacs/set-leader-keys
"amsp" 'spotify-playpause
"amsn" 'spotify-next
"amsN" 'spotify-previous
"amsQ" 'spotify-quit)))
(when (configuration-layer/layer-usedp 'spacemacs-helm)
(defun spotify/init-helm-spotify ()
(use-package helm-spotify
:config (spacemacs/set-leader-keys
"amsg" 'helm-spotify))))
in packages.el. Auch versucht ohne Zugabe multizu dotspacemacs-additional-packages.
recipestattdessen anstelle von verwenden local. zB(helm-spotify :location (recipe <recipe specs>))
multi, dotspacemacs-additional-packagesohne Erfolg. Der Fehler ist der gleiche. Ich habe meine Frage aktualisiert, um die von packages.elmir verwendete Frage wiederzugeben . Danke für deinen Einsatz!
recipeanstelle von zu verwenden local(es sollte die Mehrfachabhängigkeit für Sie berücksichtigen), oder die multiKonfiguration auf eine separate Ebene verschieben und diese Ebene sicherstellen ist zuvor spotifyin dotspacemacs-configuration-layers(der
package.el(das integrierte Emacs-Modul) nicht wirklichlocal/helm-spotifyals Paket angezeigt wird. Die Lösung erfolgt manuell, und Sie befinden sich in der richtigen Richtung. Können Sie näher erläutern, wie Sie versucht haben, etwas hinzuzufügenmulti? Es ist nicht klar, ob Sie es zuadditional-packagesundspotify-packagesgleichzeitig hinzugefügt oder separat ausprobiert haben. Nachdemmultiinspotify-packagesund einespotify/init-multiFunktion inpackages.el(ohne Verwendungadditional-packages) sollte ausreichen