Выгрузка
Вы можете удалить функции и переменные, загруженные библиотекой, чтобы освободить память для других объектов 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