Різниця між файлом завантаження та завантаженням


17

Я ознайомився з документацією обох функцій, але вони, здається, не видають багато інформації. Яка фактична відмінність між ними, крім того, що loadце вбудована функція у вихідному коді С, тоді як файл load - це інтерактивний список, складений функцією.

Яку рекомендовану функцію використовувати, init.elоскільки обидва, здається, виконують ту саму роботу?


2
Яка частина документації для цього була незрозумілою в цьому плані? Розглянемо повідомлення про проблему DOC, якщо ви дійсно думаєте , є один: M-x report-emacs-bug. Як говорить @shosti, і як чітко вказує doc, load-file" не використовує load-pathта не додає суфікси " для двох важливих відмінностей.
Дрю

Дивіться також посібник Emacs, вузол бібліотек Lisp .
Дрю

Відповіді:


14

Існує кілька способів завантаження файлів Lisp в Emacs:

  1. load-fileприймає буквальне ім'я файлу (відносне або абсолютне) і завантажує код. Приклад:(load-file "/usr/local/share/site-lisp/foo.el")
  2. loadце як load-file, за винятком того, що він більш гнучкий - ви можете залишити розширення, і воно автоматично завантажить файл "elc" або "el" у відповідних випадках.
    Він також заглядає в load-pathкаталоги.
    Приклад: (load "foo")(якщо "foo.el" знаходиться в поточному каталозі або в шляху завантаження ").
  3. load-libraryце інтерактивний інтерфейс для load.
  4. requireподібний load, за винятком того, що запобігає завантаженню файлу не один раз (він також вимагає відповідного provideтвердження в кінці відповідного файлу). Приклад:(require 'foo)

3
Ваш requireприклад - loadприклад. ;-)
Дрю

load-fileПриклад використовує load. :)
itsjeyd

2
Вибачте, що 2 і 3 помилялися. :-) load робить екскурс в вантажопідйомного шляху.
Малабарба

@Malabarba На жаль, ви праві, дякую за виправлення. Це більш заплутано, ніж я думав.
шості

8

load-fileі load-libraryє командами для інтерактивного використання (де основна відмінність полягає у початковому змісті підказки).

loadє базовою функцією, яка використовується під час написання Elisp (наприклад, у ваших .emacs).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.