Dalam situasi di mana Emacs tidak berperilaku seperti yang saya inginkan, apa yang dapat saya lakukan untuk memecahkan masalah? Langkah apa yang dapat saya ambil untuk menemukan dan memperbaiki masalah sendiri?
Atau, jika gagal, bagaimana saya bisa mengumpulkan informasi yang berguna sehingga orang-orang di sini (atau di milis atau forum lain) dapat membantu saya dengan masalah saya?
Emacs saya mencakup banyak paket, koleksi salinan snipets & paste (atau terbunuh & ditarik) dari seluruh internet, dan elisp kustom saya sendiri, beberapa di antaranya saya tidak ingat menulis, atau tidak lagi mengerti. Adakah cara untuk memahami semua komplikasi ini?
emacs -Q
sebagai langkah pertama. Saya menulis ini sebagai sesuatu untuk menghubungkan pertanyaan-pertanyaan itu sebagai bantuan umum untuk pengguna baru.Jawaban:
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, yaituemacs -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:Ganti
package1
dengan nama paket yang ingin Anda muat. Jika Anda perlu memuat beberapa paket, ubah skrip yang sesuai:Untuk memuat kode ini, Anda dapat menempelkannya ke
*scratch*
buffer, dan memanggilM-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
emacs
,, tanpa-Q
opsi.~/.emacs
atau.emacs.d/init.el
, jika Anda tidak dapat menemukannya, cobalahC-h v user-init-file
)C-space
untuk menetapkan tanda, gulir ke bawah setengah jalan untuk memperluas wilayahM-;
dan simpan fileemacs
( emacs pengujian Anda ), biarkan emacs pertama berjalan. test emacs akan membaca versi yang dikurangi dari konfigurasi Anda.undo
komentar denganC-/
, dan komentar setengah dari kode yang tersisa. Buka emacs pengujian baru dan coba lagi.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:
M-x emacs-version
Misalnya, saya dapat memposting pertanyaan seperti ini:
1 Paket Bug Hunter dapat membantu Anda dengan ini, (semi-) secara otomatis membagi dua file init Anda.
sumber