Вы можете отбрасывать функции и переменные, загруженные библиотекой,
чтобы освободить память для других объектов Lisp. Для этого используйте
функцию
unload-feature:
Эта команда выгружает библиотеку, предоставившую функцию
feature. Она отменяет определение всех функций, макросов и
переменных, определенных в этой библиотеке с помощью defun,
defalias, defsubst,
defmacro, defconst, defvar и
defcustom.
Затем она восстанавливает любые автозагрузки, ранее связанные с этими
символами.
(Загрузка сохраняет их в свойстве function-history символа.)
Перед восстановлением предыдущих определений 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.
Эта переменная содержит список хуков, которые будут просканированы перед выгрузкой библиотеки, чтобы удалить функции, определенные в библиотеке.