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 spotifylapisan untuk bekerja, tetapi mastercabang saat ini dalam helm-spotifypaket 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-spotifyuntuk memuat.
Apa yang saya coba adalah beralih ke developcabang 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-spotifyrepositori 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.elada:
(require 'multi)
Jadi dugaan saya adalah, bahwa ketika menginstal helm-spotifydari melpadependensi multiakan diselesaikan sebelum memuat helm-spotifytetapi 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 multike dotspacemacs-additional-packagesdan 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 multike dotspacemacs-additional-packages.
recipebukan local. misalnya(helm-spotify :location (recipe <recipe specs>))
multiuntuk dotspacemacs-additional-packagestanpa keberhasilan. Kesalahannya sama. Saya memperbarui pertanyaan saya untuk mencerminkan packages.elsaya menggunakan. Terima kasih atas usaha Anda!
recipedaripada local(itu harus mengurus multi-dependensi untuk Anda), atau memindahkan multikonfigurasi ke lapisan yang terpisah dan memastikan lapisan itu terdaftar sebelumnya spotifydalam dotspacemacs-configuration-layers(daftar lapisan)
package.el(modul Emacs bawaan) tidak benar-benar melihatlocal/helm-spotifysebagai 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-packagesdanspotify-packagespada saat yang sama, atau mencobanya secara terpisah. Memilikimultidispotify-packagesdanspotify/init-multifungsi dalampackages.el(tanpa menggunakanadditional-packages) harus cukup