Ini mirip dengan pertanyaan ini tetapi jawaban di sana tampaknya sudah usang.
Katakanlah saya menggunakan layer dan ingin meretas kode dari paket tertentu yang digunakan layer. Bagaimana saya melakukannya?
Untuk menggambarkan dengan lebih baik apa yang ingin saya capai secara umum, saya berikan contoh spesifik.
Saya mencoba untuk mendapatkan spotify
lapisan untuk bekerja, tetapi master
cabang saat ini dalam helm-spotify
paket menggunakan API web yang sudah usang. Ada permintaan tarik untuk memperbaikinya dan saya ingin mencobanya dan mungkin berkontribusi sesuatu. Masalah saya adalah, saya tidak bisa mendapatkan salinan lokal helm-spotify
untuk memuat.
Apa yang saya coba adalah beralih ke develop
cabang spacemacs
:
git branch --track develop origin/develop
git checkout develop
Di ~/.emacs.d/layers/spotify/packages.el
Saya berubah dari
(setq spotify-packages '(spotify helm-spotify))
Untuk
(setq spotify-packages
'(
spotify
(helm-spotify :location local)
))
Dan menarik helm-spotify
repositori ke~/.emacs.d/layers/spotify/local/helm-spotify
Ketika saya me-restart spacemacs saya dapatkan
File error: Cannot open load file, no such file or directory, multi
Ketika saya melihat helm-spotify.el
ada:
(require 'multi)
Jadi dugaan saya adalah, bahwa ketika menginstal helm-spotify
dari melpa
dependensi multi
akan diselesaikan sebelum memuat helm-spotify
tetapi tentu saja tidak lagi ketika saya menggunakan salinan lokal helm-spotify
.
Jadi pertanyaan saya adalah :
- Bagaimana mengatasi dependensi saat menggunakan paket lokal?
- Atau haruskah saya melakukan ini sama sekali berbeda dari apa yang saya jelaskan?
Saya juga mencoba, tidak berhasil, untuk menambahkan multi
ke dotspacemacs-additional-packages
dan 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))))
di packages.el
. Juga mencoba tanpa menambahkan multi
ke dotspacemacs-additional-packages
.
recipe
bukan local
. misalnya(helm-spotify :location (recipe <recipe specs>))
multi
untuk dotspacemacs-additional-packages
tanpa keberhasilan. Kesalahannya sama. Saya memperbarui pertanyaan saya untuk mencerminkan packages.el
saya menggunakan. Terima kasih atas usaha Anda!
recipe
daripada local
(itu harus mengurus multi-dependensi untuk Anda), atau memindahkan multi
konfigurasi ke lapisan yang terpisah dan memastikan lapisan itu terdaftar sebelumnya spotify
dalam dotspacemacs-configuration-layers
(daftar lapisan)
package.el
(modul Emacs bawaan) tidak benar-benar melihatlocal/helm-spotify
sebagai sebuah paket. Cara mengatasinya secara manual, dan Anda berada di arah yang benar. Bisakah Anda menambahkan lebih detail bagaimana Anda mencoba menambahkanmulti
? Tidak jelas apakah Anda menambahkannya keadditional-packages
danspotify-packages
pada saat yang sama, atau mencobanya secara terpisah. Memilikimulti
dispotify-packages
danspotify/init-multi
fungsi dalampackages.el
(tanpa menggunakanadditional-packages
) harus cukup