¿Cuándo debo usar with-eval-after-load en mis archivos de configuración?


15

Revisé mis archivos de configuración y quería hacer una limpieza.

Comprendí with-eval-after-loadque su cuerpo sería evaluado justo después de cargar el paquete relacionado. Mientras limpiaba mis archivos de configuración y los dividía aún más, quería incluir cada configuración de paquete with-eval-after-load. Todo salió como se esperaba hasta que adjunté la configuración para helmy helm-projectile.

Esto es lo que tenía en mente ( lisp / init-helm.el ):

(with-eval-after-load 'helm
  (setq helm-mode-line-string "")
  (add-to-list 'helm-sources-using-default-as-input 'helm-source-man-pages)
  (define-key global-map (kbd "C-c m") 'helm-imenu)
  (define-key global-map (kbd "C-x b") 'helm-buffers-list))

(with-eval-after-load 'helm-command
  (global-set-key (kbd "M-x") 'helm-M-x))

(with-eval-after-load 'helm-projectile
  (helm-projectile-on))

Después de reiniciar Emacs, aparece este problema de tamaño de ventana:

emacs-window-size-issue

Así es como cambio el tamaño de mi ventana:

(set-frame-parameter nil 'fullscreen 'fullboth)

Supongo que estoy haciendo un mal uso with-eval-after-load, ¿cómo se desinfectaría su configuración de Emacs y se aseguraría de que nada se rompa sin importar qué paquete esté instalado?


Esto es completamente extraño. (¿Posiblemente un error?)
PythonNut

¿Tienes alguna idea de con qué podría estar relacionado? Estoy usando el puerto OS X de railwaycat y no quiero agregar un problema donde esto no pertenece :).
Mathieu Marques

8
Traté de usar with-eval-after-loadpara envolver todas mis personalizaciones relacionadas con el paquete una vez. Entonces vi la luz y comencé a usar en su use-packagelugar.
itsjeyd

@itsjeyd ¡Esto se ve muy práctico y conveniente! Sin embargo, me encontré con algunos problemas: comenté (package-initialize)y lo reemplacé, (require 'use-package)pero obtendré un error de archivo: no se puede abrir el archivo de carga, no hay tal archivo o directorio, use-package al reiniciar Emacs. Y, sin embargo, una vez que Emacs ha comenzado, puedo evaluar (require 'use-package)sin problemas. Finalmente, incluso lo intenté with-eval-after-load, sigue siendo el mismo error. El archivo Léame no es muy claro sobre cómo instalar use-package cuando se usan paquetes de package.el.
Mathieu Marques

1
Muéstranos tu .emacs, preferiblemente una versión simplificada que demuestre el problema con la menor cantidad de líneas y la menor cantidad de paquetes externos posibles. Esto probablemente tiene que ver con el momento de la configuración del marco frente a la carga del paquete durante el inicio . Pero sin ver su código, no hay mucho que podamos hacer. También díganos qué versión de Emacs está usando.
Gilles 'SO- deja de ser malvado'

Respuestas:


2

Utilizo with-eval-after-loadmucho, principalmente para agregar o eliminar elementos ao de listas después de que se hayan evaluado los valores predeterminados. De esa manera no tengo que hacer un seguimiento de los cambios en los valores predeterminados.

En cuanto al problema con su helminicialización, la documentación recomienda que (require 'helm-config)esté presente en init.elsus dependencias.

Descubrí que es más fácil exigirlo helm-configdurante la inicialización en lugar de confiar en él autoload, especialmente porque, de todos modos, lo cargaría casi de inmediato la mayor parte del tiempo.


He cambiado desde entonces para usar use-package, e incluso mientras lo requiero, helm-configsigo teniendo el mismo problema. Aquí está mi configuración de configuración actualizada: bitbucket.org/angrybacon/dotemacs/src .
Mathieu Marques

1

Resulta que no tenía nada que ver con la helminicialización (o poco).

En mi búsqueda eterna para optimizar el tiempo de inicio de Emacs, he movido todas las cosas relacionadas con la interfaz al comienzo de mi configuración. Eso incluye la pseudo pantalla completa que uso.

Poner la línea correspondiente antes de que se cargara cualquiera de los pesados ​​lisp solucionó mi problema.

Aquí está mi configuración para referencia .

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.