Руководство пользователя Linux


Руководство пользователя Linux - стр. 77


Функция autoload берет имя функции(отмеченной знаком " ' ",в связи с соглашениями, принятой в Lisp'е) и сообщает Emacs'у, что данная функция описана в определенном файле. Файл является вторым аргументом, который представлен строкой (без расширений ".el" и ".elc"), являющейся именем данного файла, который следует искать по путям, указанным в переменной load-path.

Остальные аргументы являются альтернативными, необходимыми лишь в случае, когда третий аргумент - документационная строка для этой функции, так что, если вы вызываете для нее describe-function, то получаете полезную информацию. Четвертый аргумент сообщает Emacs'у, что данная автозагружаемая функция может быть вызвана в интерактивном режиме (т.е. через M-x). Это очень важно в данном случае, потому что должна быть возможность начать схемный процесс, работающий под Emacs'ом, просто набрав M-x run-scheme.

Тогда после того, как run-scheme была определена как автозагружаемая функция, что произойдет, если я наберу M-x run-scheme. Emacs смотрит на функцию run-scheme, видит, что она начинает автозагружаться, и загружает файл, проименованный автозагрузкой (в

- 102 -

данном случае "cmuscheme"). Поскольку, побайтно откомпилированный файл cmuscheme.elc существует, то Emacs будет его загружать. Данный файл ОБЯЗАН определить функцию run-scheme, иначе будет автозагрузочная ошибка. К счастью, он в самом деле определяет run-scheme, поэтому все идет гладко, и я получаю предпочитаемый схемный интерфейс. ((( 10: между прочим, cmuscheme как раз тот интерфейс, о котором я говорил ранее в разделе по работе в схемном режиме, поэтому, если вы хотите пользоваться тем, о чем там шла речь, то вам необходимо убедиться, что вы запустили cmuscheme)))

Автозагрузка - это своего рода обещание Emacs'у того, что когда наступит время, то он сможет найти означенную функцию в файле, который вы ему укажите. В свою очередь, вы получаете некоторый контроль, над тем, что загружается. Также автозагрузки помогают уменьшить объем памяти, занимаемой Emacs'ом за счет того, что определенные настройки не будут загружены до тех пор, пока они не потребуются. Многие команды в дейтвительности не определяются как функции, когда запускается Emacs. Более того, они просто автозагружаются из определенного файла. Если вы никогда не обращаетесь к команде, она никогда не загружается. Эта экономия пространства жизненно необходима для функционирования Emacs'а: если бы он загружал каждый доступный файл в Lisp библиотеке, то Emacs'у потребовалось двадцать минут для того, чтобы просто запуститься, а после этого он занял бы всю доступную память на вашей машине. Не беспокойтесь, вам не придется устанавливать все эти автозагрузки в вашем .emacs; о них позаботились при создании Emacs'а.




Начало  Назад  Вперед