Spec-Zone.ru › Elisp

Выгрузка

Вы можете удалить функции и переменные, загруженные библиотекой, чтобы освободить память для других объектов Lisp. Для этого используйте функцию unload-feature:

Команда: unload-feature feature &optional force

Эта команда выгружает библиотеку, которая предоставила функцию feature. Она аннулирует все функции, макросы и переменные, определенные в этой библиотеке с помощью defun, defalias, defsubst, defmacro, defconst, defvar, и defcustom. Затем она восстанавливает все автозагрузки, ранее связанные с этими символами. (Загрузка сохраняет их в свойстве autoload символа.)

Прежде чем восстановить предыдущие определения, unload-feature выполняет remove-hook, чтобы удалить функции, определенные библиотекой, из определенных крючков. Эти крючки включают переменные, имена которых оканчиваются на ‘-hook’ (или устаревшее окончание ‘-hooks’), а также те, что перечислены в unload-feature-special-hooks, а также auto-mode-alist. Это необходимо, чтобы предотвратить прекращение работы Emacs, поскольку важные крючки ссылаются на функции, которые больше не определены.

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

Если этих мер недостаточно для предотвращения сбоев, библиотека может определить явный выгрузчик с именем feature-unload-function. Если этот символ определен как функция, unload-feature вызывает её без аргументов перед выполнением каких-либо других действий. Она может сделать всё необходимое для выгрузки библиотеки. Если она возвращает nil, unload-feature продолжает выполнять стандартные действия по выгрузке. В противном случае она считает задачу выполненной.

Обычно unload-feature отказывается выгружать библиотеку, от которой зависят другие загруженные библиотеки. (Библиотека a зависит от библиотеки b, если a содержит require для b.) Если необязательный аргумент force имеет значение отличное от nil, зависимости игнорируются, и вы можете выгрузить любую библиотеку.

Функция unload-feature написана на языке Lisp; ее действия основаны на переменной load-history.

Переменная: unload-feature-special-hooks

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

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Unloading.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API