Questo è simile a questa domanda, ma la risposta sembra essere deprecata.
Diciamo che sto usando un layer e voglio hackerare il codice di un determinato pacchetto che layer sta usando. Come posso procedere?
Per illustrare meglio ciò che voglio realizzare in generale, presento un esempio specifico.
Provo a far funzionare il spotify
layer, ma il master
ramo corrente nel helm-spotify
pacchetto utilizza un'API Web obsoleta. C'è una richiesta pull per risolvere questo problema e voglio provarlo e forse contribuire con qualcosa. Il mio problema è che non riesco helm-spotify
a caricare la copia locale di .
Quello che ho provato è stato di passare al develop
ramo di spacemacs
:
git branch --track develop origin/develop
git checkout develop
In ~/.emacs.d/layers/spotify/packages.el
Sono cambiato da
(setq spotify-packages '(spotify helm-spotify))
Per
(setq spotify-packages
'(
spotify
(helm-spotify :location local)
))
E ha portato il helm-spotify
repository a~/.emacs.d/layers/spotify/local/helm-spotify
Quando riavvio i spacemacs ottengo
File error: Cannot open load file, no such file or directory, multi
In quando guardo dentro helm-spotify.el
c'è:
(require 'multi)
Quindi la mia ipotesi è che quando si installa helm-spotify
dalla melpa
dipendenza su multi
viene risolto prima del caricamento, helm-spotify
ma ovviamente non più quando uso una copia locale di helm-spotify
.
Quindi le mie domande sono :
- Come risolvere le dipendenze quando si utilizza un pacchetto locale?
- O dovrei farlo in modo completamente diverso da quello che ho descritto?
Ho anche provato, senza successo, di aggiungere multi
a dotspacemacs-additional-packages
ed a 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
. Anche provato senza aggiungere multi
a dotspacemacs-additional-packages
.
recipe
invece di local
. ad es.(helm-spotify :location (recipe <recipe specs>))
multi
di dotspacemacs-additional-packages
senza successo. L'errore è lo stesso. Ho aggiornato la mia domanda per riflettere il packages.el
che sto utilizzando. Grazie per i tuoi sforzi!
recipe
invece di local
(dovrebbe occuparti della multi dipendenza per te), oppure spostare la multi
configurazione su un livello separato e assicurarti che quel livello è elencato prima spotify
in dotspacemacs-configuration-layers
(la lista dei livelli)
package.el
(il modulo Emacs integrato) non vede davverolocal/helm-spotify
come un pacchetto. Il modo per risolverlo è manualmente e sei nella giusta direzione. Puoi aggiungere maggiori dettagli come hai provato ad aggiungeremulti
? Non è chiaro se l'hai aggiunto aadditional-packages
espotify-packages
allo stesso tempo, o se li hai provati separatamente. Averemulti
inspotify-packages
e unaspotify/init-multi
funzione inpackages.el
(senza usareadditional-packages
) dovrebbe essere sufficiente