Завершение работы Emacs
Завершение работы Emacs означает окончание выполнения процесса Emacs. Если вы запустили Emacs из терминала, управление обычно возвращается родительскому процессу. Низкоуровневая примитивная функция для завершения работы Emacs — kill-emacs.
- Команда: kill-emacs &optional exit-data restart
-
Эта команда вызывает хук
kill-emacs-hook, затем завершает процесс Emacs и уничтожает его.Если exit-data — целое число, оно используется в качестве кода завершения процесса Emacs. (Это полезно главным образом при пакетной работе; см. Пакетный режим.)
Если exit-data — строка, её содержимое (с последующим символом новой строки) помещается в буфер ввода терминала, чтобы оболочка (или любая другая программа, которая следующей будет читать ввод) могла прочитать его. Однако помещение в буфер без предупреждения пропускается, если Emacs работает не в интерактивном режиме в терминале, если для этого требуются особые привилегии или если это не поддерживается на данной платформе.
Если exit-data не является ни целым числом, ни строкой или не задан, используется (зависящий от системы) код завершения, указывающий на успешное завершение программы.
Если restart не равен
nil, то вместо простого завершения в конце запускается новый процесс Emacs с теми же аргументами командной строки, что и у текущего процесса Emacs.
Функция 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
При завершении работы Emacs команда
save-buffers-kill-terminalвызывает функции из этого хука после стандартных запросов и перед вызовомkill-emacs. Функции вызываются в порядке появления, без аргументов. Каждая функция может запросить у пользователя дополнительное подтверждение. Если какая-либо из них возвращаетnil,save-buffers-kill-emacsне завершает работу Emacs и не запускает оставшиеся функции из этого хука. Прямой вызовkill-emacsне запускает этот хук.
- Команда: restart-emacs
Эта команда выполняет то же, что и
save-buffers-kill-emacs, но вместо простого завершения текущего процесса Emacs в конце запускает новый процесс Emacs с теми же аргументами командной строки, что и у текущего процесса Emacs.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Killing-Emacs.html