Какова цель разгрузки определений с автозагрузкой в emacs? Почему не автозагрузка идет медленно?

В ELisp вы можете пропустить оценку определения с помощью файла автозагрузки. Определение оценивается только после его использования.

;; File foo.el

;;;###autoload
(defun foo ()
  "Doc"
  42)

(defun bar ()
  "Doc"
  43)

Так,if I understand correctly функция автозагрузки - это способ быстрее загрузить файл. Но когда я загружаюfoo.el, чтобы пропустить определение foo, интерпретатору еще нужно прочитать всю форму. Я не понимаю, почему это быстрее.

Ответы на вопрос(3)

Решение Вопроса

Самый простой способ загрузить содержимое файлаfoo.el это сделатьload. However, this is costly because you have to read the whole file.

Сautoload вам разрешено сообщать emacs: & quot; функцияfoo определяется в файлеfoo.el& Quot ;. Таким образом, Emacs не читает файл, и вы не платите за загрузку. Когда вы используете функциюfoo Emacs впервые найдет для вас определение, прочитавfoo.el.

;;;###autoload комментарий в вашем файле сам по себе ничего не делает для автозагрузки. Вам нужно использовать программу, которая соберет все эти определения и поместит их в файл.foo-autoloads.el (или любое другое имя). Для каждой функции она поместит строку, сообщающую emacs, какой файл содержит ее. Тогда в вашем.emacs ты сможешьload foo-autoloads.el вместоfoo.el. foo.el будет прочитан emacs при первом использовании функцииfoo.

Замечания:require также можно использовать вместоload в объяснении выше.

рованы из файлов автозагрузки, но вы также можете написать их вручную. Например, в вашем .emacs вы можете поместить формы автозагрузки для функций, которые вы используете только изредка, поэтому они загружаются только по требованию.

Например:

(autoload 'ahk-mode "ahk-mode")
 14 июн. 2012 г., 18:25
knarf: обратите внимание также, что, хотя это самый простой способ использовать автозагрузку в вашем собственном коде, целесообразно включить соответствующие файлы автозагрузки в любые библиотеки, которые вы можете сделать доступными для стороннего использования, так как менеджеры пакетов, такие как el-get, могут использовать их автоматически.

руководство.

Файлы cookie автозагрузки используются для извлечения определений скелетных функций / переменных в отдельный файл автозагрузки. Обычно это делается во время компиляции.

Не пройдя этот этап компиляции, файлы cookie автозагрузки не действуют.

 14 июн. 2012 г., 18:07
Автозагрузка, безусловно, ускоряет запуск, однако предоставляет файл автозагрузкиis not the same thing as autoloading, Печенье являетсяhint внешнему процессу, инициированному вручную, который должен включать следующую форму, когдаgenerating a file автозагрузки выражений. Этот файл неизменно называется «loaddefs.el». Вы можете изучить основной сM-x find-library RET loaddefs RET, «Точка этого отдельного файла автозагрузки» в этом случае Emacs не должен читать библиотеки, содержащие файлы автозагрузкиat all пока одна из этих функций не будет вызвана.
 14 июн. 2012 г., 18:09
Потому что, если автозагрузки находятся в одном и том же файле, вы ничего не получите, потому что файл все равно загружается. Вот о чем ваш вопрос. Автозагрузочные формы должны находиться в отдельном файле, поэтому только они загружаются (быстро), а весь файл, содержащий фактические определения, загружается только при вызове одной из функций автозагрузки.
 knarf14 июн. 2012 г., 17:32
Какой смысл в этом отдельном файле автозагрузки?This email говорит, что автозагрузка может ускорить запуск emacs. Зачем?

Ваш ответ на вопрос