Saya menemukan bug yang melibatkan interaksi antara beberapa paket. Untuk melaporkan bug, saya harus memberikan resep yang dapat direproduksi menggambarkan masalah. Ini membutuhkan pemuatan paket yang sesuai, tetapi tidak ada yang lain dari init saya, dan tidak ada paket lain. Apa cara terbaik untuk melakukan ini?
MEMPERBARUI
Untuk memperjelas, saya akrab dengan konsep memilah-milah .emacs saya dalam pencarian biner untuk mengidentifikasi kode yang menyebabkan masalah. Dalam situasi ini, saya sudah tahu persis paket apa yang menyebabkan masalah. Yang saya tidak tahu, adalah bagaimana menggunakan package-
sistem untuk memuat hanya beberapa paket itu.
(package-initialize)
akan memuat paket, tetapi juga segala sesuatu yang lain di .emacs.d/elpa
direktori saya . package-load-list
memungkinkan saya untuk menentukan versi paket tertentu untuk dimuat, atau paket tertentu untuk secara eksplisit mengecualikan . Saya perlu sebaliknya - bagaimana cara memasok Emacs dengan daftar paket untuk disertakan , tanpa memuat paket lain dalam sistem elpa / paket.
sumber
.emacs
file kosong - instal setiap paket satu per satu dan kemudian lihat apakah masalahnya masih ada. Anda dapat mengejutkan diri sendiri dan menemukan paket yang bertanggung jawab yang tidak cocok dengan paket lainnya. Ketika Anda sudah sejauh yang Anda bisa, tulis langkah-langkah yang Anda gunakan untuk mereproduksi masalah dan kirimkan laporan bug - misalnya, mulai dari Emacs -Q , instal paket A, lalu instal paket B, kemudian instal paket C, kemudian buka*Scratch*
buffer dan ketik ...comment-region
untuk mengomentari (atau, denganC-u
, untuk menghilangkan komentar) suatu wilayah teks.package-load-list
adalah cara untuk secara eksplisit memasukkan paket, cukup hapusall
simbol.Jawaban:
The
package-load-list
variabel dapat digunakan untuk menentukan secara tepat paket dan versi memuat:Satu-satunya hal yang harus diperhatikan adalah bahwa nilai default termasuk
all
, jika Andasetq
maka Anda akan baik-baik saja karena itu benar-benar menimpa nilai asli.sumber
Opsi yang akan bekerja dengan baik dalam konteks di mana pengembang bekerja mereproduksi bug mungkin belum memiliki (atau ingin) dependensi yang diinstal adalah menggunakan
try
paket ( https://melpa.org/#/try ). Yang lain dapat memuat paket dari manajemen paket tanpa mengubah instalasi lokal mereka.sumber
Kasing ini adalah kekurangan yang parah
package.el
, jadi jangan gunakanpackage.el
. Sebaliknya, gunakan manajer paket sukastraight.el
(Saya penulis), yang secara khusus dirancang untuk mendukung kasus penggunaan ini.Untuk dokumentasi lisan pada
straight.el
, termasuk perbandingan dengan manajer paket lain, lihat README . Di bawah, saya telah mengutip bagian yang relevan dengan pertanyaan Anda.Menggunakan
straight.el
untuk mereproduksi bugSalah satu alasan utama saya ingin menulis
straight.el
adalah bahwa manajer paket yang ada tidak baik untuk mereproduksi bug. Sebagai contoh, beberapa dari mereka akan memuat semua paket yang diinstal ketika manajer paket diinisialisasi! Jelas itu tidak dapat diterima untuk "kasus uji minimal".Sebaliknya, bootstrap
straight.el
tidak memuat apa pun kecuali untukstraight.el
dirinya sendiri (repositori resep default terdaftar, tetapi tidak dikloning sampai diperlukan). Anda seharusnya memuatstraight.el
melalui cuplikan bootstrap , tetapi ketika Anda berada diemacs -Q
sini, inilah cara Anda dapat menginisialisasistraight.el
:Anda juga dapat melakukan ini dari baris perintah, mungkin dengan membuat alias untuknya:
Katakanlah Anda membuat laporan bug untuk Proyektil. Untuk memuat hanya Proyektil dan semua dependensinya, jalankan:
Perhatikan bahwa ini akan menggunakan revisi Proyektil dan semua dependensinya yang saat ini telah dikeluarkan, jadi Anda harus mencatat semua itu untuk membuat laporan bug Anda.
sumber
Ketika Anda membutuhkannya untuk sekali saja (misalnya untuk mencoba dan menguji resep untuk mereproduksi bug), Anda sering dapat lolos dengan:
Saya mengatakan "sering" karena tidak akan memperhatikan dependensi, jadi dalam beberapa kasus Anda perlu menambahkan lebih banyak
-l ...
argumen untuk memuat paket lain yang diperlukan.sumber