Entiendo lo que hace la carga automática para las funciones (registrar el archivo para cargar cuando se llama a dicha función o se recupera su cadena de documentación). Sin embargo, no está claro cómo usar la función de carga automática junto con variables y macros.
Tengo dos preguntas:
¿Qué sucede cuando el paquete tiene un parámetro, implementado como una variable que el usuario puede establecer, pero no se carga automáticamente? ¿Deberían esas variables cargarse automáticamente? De lo contrario, resulta que tales variables no existen, el entorno Lisp no sabe nada de ellas, incluidos sus valores predeterminados, hasta que se utiliza alguna función de carga automática del paquete (generalmente después de cargar los archivos de configuración), entonces si el usuario las configura en su / su archivo de configuración, es como establecer una variable no existente. Si el valor de la variable es una lista no vacía y el usuario usa
push
oadd-to-list
para cambiar su valor, ¿qué sucede exactamente? ¿Se pierden los valores predeterminados?¿Qué sucede cuando una macro se carga automáticamente? ¿Cuándo deberíamos cargar automáticamente una macro?
fuente
setq
editar (es decir, no importa qué valores tengan antes) pueden tener un valor predeterminado especificado endefvar
o endefcustom
forma, pero en el caso de una lista que el usuario pueda extender, es mejor usarla,eval-after-load
¿verdad? Además, a veces los valores predeterminados buenos son buenos, incluso si toman la forma de una lista ;-)eval-after-load
, es un error en la implementación del paquete. Por lo general,eval-after-load
debe usarse para corregir errores o personalizaciones muy inusuales. Por cierto, puede ser mejor usar un gancho si el paquete lo tiene disponible.eval-after-load
, los usuarios aún no podrán eliminar elementos de la lista! Esto me hace preguntarme si debería abandonar los valores predeterminados.eval-after-load
sea necesario solo para situaciones inusuales. Es una de las herramientas estándar en el kit de herramientas de carga diferida. Si las personas no quieren usar tales herramientas, pueden usarrequire
la biblioteca desde el principio (que es lo que siempre se recomienda hacer a los recién llegados) cuando lleguen a pensar "Me gustaría que Emacs comenzara un poco más rápido", " probablemente ha aprendido lo suficiente como para no se asuste con la nueva sintaxis :)customize-set-variable
lugar de usarsetq
puede ser bueno. Pero no tengo el tiempo ahora para el estudio cuidadoso requerido para mejorar mi respuesta a este respecto. Si crees que esto es importante, ¿por qué no escribes tu propia respuesta? Será más visible que este largo hilo de comentarios.