Ceci est similaire à cette question, mais la réponse semble être obsolète.
Disons que j'utilise une couche et que je veux pirater le code d'un package particulier que cette couche utilise. Comment dois-je procéder?
Pour mieux illustrer ce que je veux accomplir en général, je présente un exemple spécifique.
J'essaie de faire fonctionner la spotify
couche, mais la master
branche actuelle du helm-spotify
package utilise une API Web obsolète. Il y a une demande de pull pour résoudre ce problème et je veux l'essayer et peut-être contribuer quelque chose. Mon problème est que je ne parviens pas helm-spotify
à charger la copie locale de .
J'ai essayé de passer à la develop
branche de spacemacs
:
git branch --track develop origin/develop
git checkout develop
Dans ~/.emacs.d/layers/spotify/packages.el
J'ai changé de
(setq spotify-packages '(spotify helm-spotify))
À
(setq spotify-packages
'(
spotify
(helm-spotify :location local)
))
Et tiré le helm-spotify
référentiel vers~/.emacs.d/layers/spotify/local/helm-spotify
Lorsque je redémarre les spacemacs, je reçois
File error: Cannot open load file, no such file or directory, multi
Quand je regarde, helm-spotify.el
il y a:
(require 'multi)
Donc, je suppose que lors de l'installation à helm-spotify
partir de melpa
la dépendance, le multi
problème est résolu avant le chargement, helm-spotify
mais bien sûr plus lorsque j'utilise une copie locale de helm-spotify
.
Mes questions sont donc :
- Comment résoudre les dépendances lors de l'utilisation d'un package local?
- Ou dois-je faire cela complètement différemment de ce que j'ai décrit?
J'ai également essayé, sans succès, d'ajouter multi
à dotspacemacs-additional-packages
et à 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))))
dans packages.el
. A également essayé sans ajouter multi
à dotspacemacs-additional-packages
.
la source
package.el
(le module Emacs intégré) n'est pas vraiment considérélocal/helm-spotify
comme un package. La façon de le résoudre est manuellement et vous êtes dans la bonne direction. Pouvez-vous ajouter plus de détails sur la façon dont vous avez essayé d'ajoutermulti
? Il n'est pas clair si vous l'avez ajoutéadditional-packages
etspotify-packages
en même temps, ou si vous les avez essayés séparément. Avoirmulti
dansspotify-packages
et unespotify/init-multi
fonctionpackages.el
(sans utiliseradditional-packages
) devrait être suffisantrecipe
place delocal
. par exemple(helm-spotify :location (recipe <recipe specs>))
multi
àdotspacemacs-additional-packages
sans succès. L'erreur est la même. J'ai mis à jour ma question pour refléter celle quepackages.el
j'utilise. Merci pour votre effort!recipe
place delocal
(cela devrait prendre en charge la multi-dépendance pour vous), soit déplacer lamulti
configuration vers un calque séparé et vous assurer que ce calque est répertorié avantspotify
dansdotspacemacs-configuration-layers
(la liste des calques)Réponses:
Tout d'abord, vous ne devez jamais modifier le code dans la branche principale, Spacemacs est conçu pour être piratable tout en gardant la branche principale en lecture seule, et non pas que des poussées forcées vers la branche principale puissent se produire!. Si vous voulez vraiment modifier le code, vous devez utiliser la branche develop et la maintenir à jour manuellement. Développer la branche n'est jamais forcé.
EDIT: en fait, vous utilisiez la branche de développement, mes excuses, je laisse le paragraphe pour référence.
Maintenant, la réponse :-) La bonne façon de faire ce que vous voulez est d'écraser l'emplacement
dotspacemacs-additional-packages
. Je viens de l'essayer en bifurquanthelm-spotify
dans mon espace de noms, puis j'ai ajouté:Ensuite, au redémarrage, Spacemacs a récupéré correctement le package de ma fourchette au lieu d'atteindre MELPA. Spacemacs utilise
quelpa
pour récupérer les référentiels de GitHub sur la base des recettes MELPA,package.el
est utilisé pour installer les packages afin que les dépendances soient correctement résolues.Notez que:
helm-spotify
dossier dans le˜/.emacs.d/elpa
répertoire et redémarrer Emacs.spotify
calque à votredotspacemacs-configuration-layers
variable.la source
:branch "my-branch"
.emacs.d/private/local
répertoire et ajouter ce répertoire à la variable de chemin de chargement en l'ajoutant(some-package :location local)
à la listedotspacemacs-additional-packages
dans ladotspacemacs/layers
fonction de votre fichier dotspacemacs. Après avoir placé votre fichier de package dans ce répertoire de package, le fichier peut être chargé, sans nécessiter le chemin complet, en plaçant un(require 'package-name)
dans le corps de ladotspacemacs/user-config
fonction de votre fichier dotspacemacs. - du document spacemacs