Spec-Zone.ru › Elisp

Завершение работы Emacs

Завершение работы Emacs означает прекращение выполнения процесса Emacs. Если вы запустили Emacs из терминала, родительский процесс обычно возобновляет контроль. Низкоуровневая процедура завершения работы Emacs — kill-emacs.

Команда: kill-emacs &optional exit-data

Эта команда вызывает хук kill-emacs-hook, затем завершает процесс Emacs и убивает его.

Если exit-data — целое число, оно используется в качестве кода завершения процесса Emacs. (Это полезно в основном при пакетной работе; см. Пакетный режим.)

Если exit-data — строка, её содержимое помещается в буфер ввода терминала, чтобы оболочка (или любая программа, которая затем читает ввод) могла его прочитать.

Если exit-data не является целым числом или строкой, или опущен, используется (зависимый от системы) код завершения, который указывает на успешное завершение программы.

Функция kill-emacs обычно вызывается через команду высокого уровня C-x C-c (save-buffers-kill-terminal). См. Выход в Руководство пользователя GNU Emacs. Она также вызывается автоматически, если Emacs получает сигнал операционной системы SIGTERM или SIGHUP (например, при отключении управляющего терминала), или если он получает сигнал SIGINT во время работы в пакетном режиме (см. Пакетный режим).

Переменная: kill-emacs-hook

Этот обычный хук вызывается функцией kill-emacs, прежде чем она завершит Emacs.

Поскольку kill-emacs может вызываться в ситуациях, когда взаимодействие с пользователем невозможно (например, при отключении терминала), функции в этом хуке не должны пытаться взаимодействовать с пользователем. Если вы хотите взаимодействовать с пользователем при завершении работы Emacs, используйте kill-emacs-query-functions, описанную ниже.

При завершении работы Emacs вся информация в процессе Emacs, кроме сохранённых файлов, теряется. Поскольку случайное завершение работы Emacs может привести к потере работы, команда save-buffers-kill-terminal запрашивает подтверждение, если у вас есть буферы, требующие сохранения, или запущенные дочерние процессы. Она также выполняет ненормальный хук kill-emacs-query-functions:

Настройка пользователя: kill-emacs-query-functions

Когда save-buffers-kill-terminal завершает работу Emacs, она вызывает функции в этом хуке после запроса стандартных вопросов и перед вызовом kill-emacs. Функции вызываются в порядке их появления без аргументов. Каждая функция может запросить дополнительное подтверждение у пользователя. Если какая-либо из них возвращает nil, save-buffers-kill-emacs не завершает Emacs и не выполняет оставшиеся функции в этом хуке. Прямой вызов kill-emacs не вызывает этот хук.

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/Killing-Emacs.html

Spec-Zone.ru

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