package – ¿Qué significa (require 'paquete) para emacs y en qué se diferencia de load-file?

Pregunta:

Comencé a usar emacs hace unos días y leí en alguna parte que (require 'package-name) no es necesario cuando dicho paquete se instala usando package-install. Pero, ¿por qué, qué hace realmente (require 'package-name) y en qué se diferencia de los procedimientos de load o load-file load ?

Respuesta:

Si load una biblioteca repetidamente, ese archivo se leerá y su código se evaluará repetidamente (todas y cada una de las veces que lo cargue).

Si require una biblioteca repetidamente, load la biblioteca una vez (como máximo, y no en absoluto si la biblioteca ya se había cargado).

require proporciona esta eficiencia incluso si require no se usó para cargar la biblioteca inicialmente, porque (la gran mayoría de) las bibliotecas contienen el código (provide 'FEATURE) para su nombre de FEATURE particular. Ese código se evalúa cuando se carga la biblioteca, independientemente de cómo se cargó, y en ese momento actualiza los datos que require verificaciones al decidir si necesita hacer algo.

Principalmente , desea utilizar require en su propio código, si necesita asegurarse de que se haya cargado una biblioteca determinada.

La razón por la que a menudo no necesita hacer esto con los paquetes ELPA es que el administrador de paquetes procesa automáticamente las cookies de carga automática en el paquete y genera un archivo de cargas automáticas para ese paquete. Cuando se inicializa el sistema de paquetes al iniciar Emacs, se evalúa el archivo de carga automática para cada paquete, que identifica todas las funciones de carga automática. Cuando se llama a una función de carga automática, la biblioteca que contiene la definición real de la función se carga automáticamente.

Los autores de paquetes pueden agregar una cookie de carga automática a cada función que se espera que el usuario llame directamente y, por lo tanto, siempre que sus expectativas sean correctas, no necesitará llamar a require o cargar explícitamente el paquete para usarlo.

Tenga en cuenta que también puede definir sus propias cargas automáticas personalizadas. Ver Ch g i (elisp) Autoload RET y también (elisp) Hooks for Loading si desea utilizar la costumbre perezosa de carga diferida y la configuración de las bibliotecas en su propia configuración. (El último para decir "no evalúe este código hasta que se haya cargado esta biblioteca", lo que se relaciona muy bien con el mecanismo de carga automática "no cargue esta biblioteca hasta que sea necesario").

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım