Langkah 1: berlari emacs -Q
Hal pertama yang perlu Anda lakukan adalah menjalankan emacs tanpa penyesuaian apa pun. Jika Anda dapat mereproduksi masalah di vanilla Emacs, itu mungkin sebenarnya adalah bug di Emacs sendiri. Itu jarang, tapi kami mengesampingkannya sebagai langkah pertama.
Jika Anda memulai Emacs dari baris perintah dengan -Q
bendera, yaitu emacs -Q
, Anda akan mendapatkan emacs telanjang atau 'vanilla', tanpa ada kustomisasi lokal Anda yang dimuat. Apakah masalah Anda masih terjadi? Jika demikian, lewati untuk "Menyediakan Resep Bug".
Langkah 1b: bagaimana jika masalahnya ada pada paket?
Jika masalah Anda khusus untuk paket tertentu, maka jelas Anda tidak dapat mereproduksinya tanpa memuat paket itu. Tetapi Anda hanya ingin memuat paket yang bersangkutan, tidak semua konfigurasi Anda. Untuk melakukannya, jalankan emacs -Q
lagi, dan siapkan skrip pendek seperti berikut:
(require 'package)
(setq package-load-list
'((package1 t)))
(package-initialize)
Ganti package1
dengan nama paket yang ingin Anda muat. Jika Anda perlu memuat beberapa paket, ubah skrip yang sesuai:
(require 'package)
(setq package-load-list
'((package1 t)
(package2 t)
(package3 t)))
(package-initialize)
Untuk memuat kode ini, Anda dapat menempelkannya ke *scratch*
buffer, dan memanggil M-x eval-buffer
. (atau buffer apa pun, asalkan tidak memiliki kode lain di dalamnya!).
Pada titik ini, Anda telah memuat paket, dan hanya paket yang sedang Anda uji. Jika Anda dapat mereproduksi masalah sekarang, lewati untuk "Menyediakan Resep Bug".
Langkah 2: Menemukan Bug di blog Anda .emacs
Anda sekarang telah mengkonfirmasi bahwa masalahnya berasal dari sesuatu di konfigurasi Anda ("panggilan berasal dari dalam rumah!"). Konfigurasi Anda mungkin ribuan baris, dan mungkin memuat banyak file berbeda. Untuk menemukan masalah, Anda akan melakukan pencarian biner, mengomentari setengah kode sekaligus untuk mempersempit. 1
- Buka emacs reguler Anda
emacs
,, tanpa -Q
opsi.
- Buka file konfigurasi Anda (biasanya
~/.emacs
atau .emacs.d/init.el
, jika Anda tidak dapat menemukannya, cobalah C-h v user-init-file
)
- Pilih bagian pertama file:
C-space
untuk menetapkan tanda, gulir ke bawah setengah jalan untuk memperluas wilayah
- Komentari wilayah yang dipilih:
M-;
dan simpan file
- Buka yang baru
emacs
( emacs pengujian Anda ), biarkan emacs pertama berjalan. test emacs akan membaca versi yang dikurangi dari konfigurasi Anda.
- Cobalah untuk mereproduksi masalah dalam uji emacs
- Jika Anda tidak dapat mereproduksi itu, dekat emacs tes , dan dalam emacs asli Anda
undo
komentar dengan C-/
, dan komentar setengah dari kode yang tersisa. Buka emacs pengujian baru dan coba lagi.
- Jika Anda dapat mereproduksi masalah, komentar setengah dari kode yang tersisa dan lihat apakah masalahnya masih ada.
- Ulangi proses ini sampai Anda menemukan sedikit dari konfigurasi Anda yang diperlukan untuk mereproduksi masalah.
Jika masalah Anda dengan paket tertentu, Anda harus meninggalkan kode yang memuat paket itu tanpa komentar, tentu saja.
Jika file konfigurasi Anda memuat file-file lain, Anda mungkin akhirnya memperluas pencarian Anda ke file-file itu juga.
Pada titik ini, Anda mungkin telah menemukan bahwa masalahnya disebabkan hanya satu atau dua baris kode. Anda bahkan dapat memperbaikinya sendiri. Jika demikian, selamat, Anda telah mempelajari sesuatu! Jika tidak, lanjutkan ke langkah ketiga.
Langkah 3: Menyediakan Resep Bug
Pada titik ini, Anda harus dapat memberikan resep bug terperinci untuk dikirim di sini. Ini harus mencakup:
- Versi Emacs Anda (Anda bisa mendapatkannya dari Emacs bersama
M-x emacs-version
- Sistem operasi Anda (distribusi Windows #, Mac, Linux)
- Versi paket yang Anda perjuangkan, jika ada
- Langkah-langkah spesifik yang diperlukan untuk menunjukkan masalah, termasuk apa yang Anda harapkan akan terjadi , dan apa yang sebenarnya terjadi .
Misalnya, saya dapat memposting pertanyaan seperti ini:
Saya mengalami masalah dengan mode super. Ketika saya menggunakan M-x sm-compile-code
, itu membuat penarikan dari akun PayPal saya.
Langkah-langkah untuk mereproduksi:
Memuat mode super:
(require 'package)
(setq package-load-list
'((super-mode t)))
(package-initialize)
- buka file baru dengan
C-x C-f my-code
- masukkan satu baris kode:
10 goto 10
- panggilan
M-x sm-compile-code
Saya berharap ini memanggil super-kompiler dan mengkompilasi program saya. Sebagai gantinya, saya melihat pesan di minibuffer "$ 100 ditransfer dari paypal ke penulis super-mode"
GNU Emacs 25.1.50.3
Debian Linux
versi Super-mode 3.1415
1 Paket Bug Hunter dapat membantu Anda dengan ini, (semi-) secara otomatis membagi dua file init Anda.
emacs -Q
sebagai langkah pertama. Saya menulis ini sebagai sesuatu untuk menghubungkan pertanyaan-pertanyaan itu sebagai bantuan umum untuk pengguna baru.