Revisé la documentación de ambas funciones, pero no parecen arrojar mucha información. ¿Cuál es la diferencia real entre ellos además del hecho de que load
es una función incorporada en el código fuente C, mientras que el archivo de carga es una función compilada de lista interactiva?
¿Cuál es la función recomendada para usar init.el
ya que ambos parecen estar haciendo el mismo trabajo?
M-x report-emacs-bug
. Como dice @shosti, y como lo indica claramente el documento,load-file
" no usaload-path
y no agrega sufijos ", para dos diferencias importantes.Respuestas:
Hay varias formas de cargar archivos Lisp en Emacs:
load-file
toma un nombre de archivo literal (relativo o absoluto) y carga el código. Ejemplo:(load-file "/usr/local/share/site-lisp/foo.el")
load
es comoload-file
, excepto que es más flexible: puede omitir la extensión y cargará automáticamente el archivo "elc" o "el" según corresponda.También se ve en los
load-path
directorios.Ejemplo:
(load "foo")
(si "foo.el" está en el directorio actual o en la ruta de carga ").load-library
es una interfaz interactiva paraload
.require
es similar aload
, excepto que evita que el archivo se cargue más de una vez (también requiere unaprovide
declaración correspondiente al final del archivo en cuestión). Ejemplo:(require 'foo)
fuente
require
ejemplo es unload
ejemplo. ;-)load-file
ejemplo usaload
. :)load
hace mirada hacia el load-path.load-file
yload-library
son comandos para uso interactivo (donde la diferencia principal está en el contenido inicial de la solicitud).load
es la función subyacente a usar cuando escribe Elisp (como en sus .emacs).fuente