Я просмотрел документацию по обеим функциям, но, похоже, они не пролили много информации. В чем же разница между ними, кроме того факта, что load
это встроенная функция в исходном коде C, тогда как load-file - это скомпилированная функция интерактивного списка.
Какова рекомендуемая функция для использования, init.el
поскольку обе они, кажется, выполняют одну и ту же работу?
M-x report-emacs-bug
. Как говорит @shosti, и как ясно указывает документ,load-file
« не используетload-path
и не добавляет суффиксы » для двух важных отличий.Ответы:
Есть несколько способов загрузить файлы Lisp в Emacs:
load-file
берет буквальное имя файла (относительное или абсолютное) и загружает код. Пример:(load-file "/usr/local/share/site-lisp/foo.el")
load
похожеload-file
, за исключением того, что он более гибкий - вы можете опустить расширение, и оно автоматически загрузит файл "elc" или "el" в зависимости от ситуации.Это также смотрит в
load-path
каталоги.Пример:
(load "foo")
(если "foo.el" находится в текущем каталоге или в пути загрузки ").load-library
это интерактивный интерфейс дляload
.require
аналогичноload
, за исключением того, что предотвращает загрузку файла более одного раза (также требуется соответствующийprovide
оператор в конце рассматриваемого файла). Пример:(require 'foo)
источник
require
пример являетсяload
примером. ;-)load-file
Пример используетload
. :)load
делает экскурс в грузоподъемного пути.load-file
иload-library
являются командами для интерактивного использования (где основное отличие заключается в начальном содержании приглашения).load
является базовой функцией, используемой при написании Elisp (например, в вашем .emacs).источник