depuración de algunos elisp - "fin del archivo durante el error de análisis" en init.el


9

Después de una larga depuración de mi archivo init.el, parece que la primera línea del siguiente código elisp, (custom-set-variableses decir, está provocando un error 'Fin del archivo durante el análisis') que no entiendo. Si comento esta línea, todo está bien. Ni siquiera ingresé este código yo mismo, ya que se ha agregado automáticamente en init.el desde el customizemenú.

(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))

Aquí está el mensaje de error completo:

Advertencia (inicialización): se produjo un error al cargar `/Users/me/.emacs.d/init.el ':

Fin del archivo durante el análisis: /Users/me/.emacs.d/init.el

Cualquier ayuda sería apreciada ! Gracias


Si el archivo es grande, puede usar M-x check-parenspara saltar a la sección ofensiva. Si el archivo es corto, o está viendo una sección corta de código, entonces hay métodos para resaltar los paréntesis coincidentes para ver visualmente dónde falta o falta un paréntesis. Aquí hay un enlace a mi propia variación de highlight-parentheses-mode: stackoverflow.com/a/23998965/2112489
lawlist

No lo use custom-set-variablesen su propio código de Elisp. Esto está destinado a ser generado automáticamente solamente . No lo copie y pegue. Busque código equivalente usando setqo algo así.
Stefan

Respuestas:


20

El error "fin de archivo durante el análisis" significa que no ha cerrado un análisis.

Para depurar esto, deberías

  1. Haga M-x check-parens RETpara identificar la ubicación del error actual.
  2. Habilite show-paren-modepara ver qué par coincide con el actual: esto lo ayudará con el mantenimiento continuo del código.
  3. Use C-M-f/C-M-b para navegar por parens equilibrados; Si obtiene un error, aquí es donde está su padre abierto que no estaba cerrado.
  4. Use TABpara sangrar cada línea y ver si la nueva sangría se ajusta a sus expectativas.

La otra respuesta explica correctamente cuál es el error real en su caso.


5

Falta un paréntesis de cierre en el ejemplo anterior. La whendeclaración no es parte de la custom-set-variables. El código corregido es el siguiente:

(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))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.