debug di alcuni elisp - "fine del file durante l'analisi dell'errore" in init.el


9

Dopo un lungo debug del mio file init.el, sembra la prima riga del seguente codice elisp, ovvero (custom-set-variablessta provocando un errore "Fine del file durante l'analisi") che non capisco assolutamente. Se commento questa riga, va tutto bene. Non ho nemmeno inserito questo codice da solo, poiché è stato aggiunto automaticamente in init.el dal 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))

Ecco il messaggio di errore completo:

Avviso (inizializzazione): si è verificato un errore durante il caricamento di `/Users/me/.emacs.d/init.el ':

Fine del file durante l'analisi: /Users/me/.emacs.d/init.el

Qualsiasi aiuto sarebbe apprezzato ! Grazie


Se il file è di grandi dimensioni, è possibile utilizzare M-x check-parensper passare alla sezione offensiva. Se il file è breve o stai osservando una breve sezione di codice, allora ci sono metodi per evidenziare le parentesi corrispondenti per vedere visivamente dove una parentesi è fuori posto o mancante. Ecco un link al mio propria variazione di highlight-parentheses-mode: stackoverflow.com/a/23998965/2112489
lawlist

Si prega di non utilizzare custom-set-variablesnel proprio codice Elisp. Questo è pensato per essere generato solo automaticamente . Non copiarlo e incollarlo. Cerca un codice equivalente usando setqo qualcosa del genere.
Stefan,

Risposte:


21

L'errore "fine del file durante l'analisi" indica che non è stata chiusa una parentesi.

Per eseguire il debug, dovresti

  1. Fare M-x check-parens RETper individuare la posizione dell'errore corrente.
  2. Abilita show-paren-modeper vedere quale paren corrisponde a quello attuale - questo ti aiuterà con la manutenzione del codice in corso.
  3. Utilizzare C-M-f/C-M-b per navigare in parentesi bilanciate; se ricevi un errore, è qui che si trova il tuo genitore aperto che non era chiuso.
  4. Usa TABper indentare ogni riga e vedere se il nuovo rientro è conforme alle tue aspettative.

L'altra risposta spiega correttamente qual è l'errore reale nel tuo caso.


5

Manca una parentesi di chiusura nell'esempio sopra. La whendichiarazione non fa parte del custom-set-variables. Il codice corretto è il seguente:

(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))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.