Удаление фреймов
Активный фрейм — это фрейм, который еще не был удален. При удалении фрейма он удаляется с его терминального дисплея, хотя может продолжать существовать как объект Lisp, пока на него не перестанут ссылаться.
- Команда: delete-frame &optional frame force
-
Эта функция удаляет фрейм frame. Аргумент frame должен указывать на активный фрейм (см. ниже) и по умолчанию равен выбранному фрейму.
Сначала она удаляет все дочерние фреймы frame (см. Дочерние фреймы) и любые фреймы, у которых параметр
delete-beforeфрейма (см. Параметры взаимодействия фреймов) указывает на frame. Все такие удаления выполняются рекурсивно; таким образом, этот шаг гарантирует, что не будет существовать других фреймов с frame в качестве предка. Затем, если frame не определяет всплывающую подсказку, эта функция запускает хукdelete-frame-functions(каждая функция получает один аргумент, frame) перед фактическим удалением фрейма. После фактического удаления фрейма и удаления фрейма из списка фреймов,delete-frameзапускаетafter-delete-frame-functions.Обратите внимание, что фрейм нельзя удалить, пока его минибуфер служит суррогатным минибуфером для другого фрейма (см. Минибуферы и фреймы). Обычно вы не можете удалить фрейм, если все остальные фреймы невидимы, но если force не равно
nil, то это разрешено.
- Функция: frame-live-p frame
Эта функция возвращает не-
nil, если фрейм frame не был удален. Возможные значения, отличные отnil, такие же, как уframep. См. Фреймы.
Некоторые менеджеры окон предоставляют команду для удаления окна. Они работают, отправляя специальное сообщение программе, которая управляет окном. Когда Emacs получает одну из этих команд, он генерирует событие delete-frame, чье стандартное определение — команда, вызывающая функцию delete-frame. См. Разные события.
- Команда: delete-other-frames &optional frame iconify
-
Эта команда удаляет все фреймы на терминале frame, за исключением frame. Если frame использует минибуфер другого фрейма, этот минибуфер фрейма остается нетронутым. Аргумент frame должен указывать на активный фрейм и по умолчанию равен выбранному фрейму. Внутренне эта команда работает, вызывая
delete-frameс forcenilдля всех фреймов, которые должны быть удалены.Эта функция не удаляет дочерние фреймы frame (см. Дочерние фреймы). Если frame является дочерним фреймом, она удаляет только братьев frame.
С префиксом-аргументом iconify фреймы сворачиваются, а не удаляются.
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/Deleting-Frames.html