men-debug beberapa bagian - "akhir file selama kesalahan parsing" di init.el

9

Setelah lama debugging file init.el saya, sepertinya baris pertama dari kode-elisp berikut, yaitu (custom-set-variablesmemprovokasi kesalahan 'Akhir file selama parsing') yang saya benar-benar tidak mengerti. Jika saya berkomentar di baris ini, semuanya baik-baik saja. Saya bahkan tidak memasukkan kode ini sendiri, karena telah secara otomatis ditambahkan di init.el dari customizemenu.

(custom-set-variables
'(global-hl-line-mode t)
'(ido-mode (quote buffer) nil (ido))
'(menu-bar-mode nil)
 (when (display-graphic-p)
 (tool-bar-mode -1)
 (scroll-bar-mode -1))

Ini pesan kesalahan lengkapnya:

Peringatan (inisialisasi): Terjadi kesalahan saat memuat `/ Pengguna /me/.emacs.d/init.el ':

Akhir file saat parsing: /Users/me/.emacs.d/init.el

Bantuan apa pun akan dihargai! Terima kasih

loukios
sumber
Jika file tersebut besar, Anda dapat menggunakan M-x check-parensuntuk melompat ke bagian yang menyinggung. Jika file pendek, atau Anda melihat bagian pendek kode, maka ada metode untuk menyorot tanda kurung yang cocok untuk melihat secara visual di mana tanda kurung salah tempat atau hilang. Berikut ini tautan ke variasi saya sendiri highlight-parentheses-mode: stackoverflow.com/a/23998965/2112489
lawlist
Tolong jangan gunakan custom-set-variablesdalam kode Elisp Anda sendiri. Ini dimaksudkan hanya dibuat secara otomatis . Jangan salin & tempel. Cari kode yang setara menggunakan setqatau sesuatu seperti itu.
Stefan

Jawaban:

20

Kesalahan "akhir file selama parsing" berarti bahwa Anda belum menutup paren.

Untuk debug ini, Anda harus

  1. Lakukan M-x check-parens RETuntuk menentukan lokasi kesalahan saat ini.
  2. Aktifkan show-paren-modeuntuk melihat paren mana yang cocok dengan paren Anda saat ini - ini akan membantu Anda dengan pemeliharaan kode yang sedang berlangsung.
  3. Gunakan C-M-f/C-M-b untuk menavigasi dengan parens seimbang; jika Anda mendapatkan kesalahan, ini adalah tempat orang tua terbuka Anda yang tidak ditutup.
  4. Gunakan TABuntuk membuat indentasi setiap baris dan melihat apakah indentasi baru sesuai dengan harapan Anda.

Jawaban lain dengan benar menjelaskan apa kesalahan sebenarnya dalam kasus Anda.

sds
sumber
5

Tanda kurung penutup tidak ada dalam contoh di atas. The whenpernyataan ini bukan bagian dari custom-set-variables. Kode yang diperbaiki adalah sebagai berikut:

(custom-set-variables
  '(global-hl-line-mode t)
  '(ido-mode (quote buffer) nil (ido))
  '(menu-bar-mode nil))

(when (display-graphic-p)
  (tool-bar-mode -1)
  (scroll-bar-mode -1))
daftar hukum
sumber