Различные системные события
Несколько других типов событий представляют собой события, происходящие в системе.
(delete-frame (frame))-
Этот тип события указывает, что менеджер окон получил команду на удаление определенного окна, которое является фреймом Emacs.
Стандартное определение события
delete-frameзаключается в удалении фрейма. (iconify-frame (frame))-
Этот тип события указывает, что пользователь свёрнул фрейм с помощью менеджера окон. Его стандартное определение —
ignore; так как фрейм уже свёрнут, Emacs не выполняет никаких действий. Этот тип события предназначен для отслеживания таких событий, если это необходимо. (make-frame-visible (frame))-
Этот тип события указывает, что пользователь развернул фрейм с помощью менеджера окон. Его стандартное определение —
ignore; так как фрейм уже виден, Emacs не выполняет никаких действий. (wheel-up position)(wheel-down position)-
Эти типы событий генерируются при перемещении колесика мыши. Элемент position — это список позиций мыши (см. События щелчков мыши), указывающий положение курсора мыши в момент возникновения события.
Этот тип события генерируется только на некоторых системах. На некоторых системах используются
mouse-4иmouse-5вместо него. Для портативного кода используйте переменныеmouse-wheel-up-eventиmouse-wheel-down-event, определённые в mwheel.el, чтобы определить ожидаемые типы событий для колесика мыши. (drag-n-drop position files)-
Этот тип события генерируется, когда группа файлов выбирается в приложении за пределами Emacs, а затем перетаскивается и опускается на фрейм Emacs.
Элемент position — это список, описывающий положение события, в том же формате, что и в событии щелчка мыши (см. События щелчков мыши), а files — список имён файлов, которые были перетащены и опущены. Обычно это событие обрабатывается посредством посещения этих файлов.
Этот тип события в настоящее время генерируется только на некоторых системах.
help-echo-
Этот тип события генерируется, когда указатель мыши перемещается на часть текста буфера, у которого есть свойство текста
help-echo. Сгенерированное событие имеет следующий вид:(help-echo frame help window object pos)
Точное значение параметров события и способ использования этих параметров для отображения текста справки подробно описаны в Текстовая справка.
sigusr1sigusr2-
Эти события генерируются, когда процесс Emacs получает сигналы
SIGUSR1иSIGUSR2. Они не содержат дополнительных данных, так как сигналы не переносят дополнительной информации. Они могут быть полезны для отладки (см. Отладка ошибок).Чтобы перехватить пользовательский сигнал, привяжите соответствующее событие к интерактивной команде в
special-event-map(см. Управление активными картами). Команда вызывается без аргументов, и конкретное событие сигнала доступно вlast-input-event(см. Дополнительные сведения о событиях и вводе). Например:(defun sigusr-handler () (interactive) (message "Caught signal %S" last-input-event)) (define-key special-event-map [sigusr1] 'sigusr-handler)
Чтобы проверить обработчик сигнала, можно заставить Emacs послать сигнал самому себе:
(signal-process (emacs-pid) 'sigusr1)
language-change-
Этот тип события генерируется в MS-Windows, когда язык ввода был изменён. Как правило, это означает, что клавиши клавиатуры будут отправлять Emacs символы с другого языка. Сгенерированное событие имеет следующий вид:
(language-change frame codepage language-id)
Здесь фрейм — это фрейм, который был текущим, когда язык ввода изменился; codepage — новый номер кодовой страницы; а language-id — числовой идентификатор нового языка ввода. Кодировочная система (см. Кодировочные системы), которая соответствует codepage, это
cpcodepageилиwindows-codepage. Чтобы преобразовать language-id в строку (например, для использования в различных языковых функциях, таких какset-language-environment), используйте функциюw32-get-locale-info, как показано ниже:;; Get the abbreviated language name, such as "ENU" for English (w32-get-locale-info language-id) ;; Get the full English name of the language, ;; such as "English (United States)" (w32-get-locale-info language-id 4097) ;; Get the full localized name of the language (w32-get-locale-info language-id t)
Если одно из этих событий поступает в середине последовательности нажатий клавиш — то есть после нажатия клавиши-префикса — то Emacs переупорядочивает события таким образом, чтобы это событие появилось либо до, либо после многособытийной последовательности нажатий клавиш, а не внутри неё.
Некоторые из этих специальных событий, такие как delete-frame, по умолчанию вызывают команды Emacs; другие не привязаны. Если вы хотите, чтобы специальное событие вызывало команду, вы можете сделать это с помощью special-event-map. Команда, привязанная вами к функциональной клавише в этой карте, может затем проверить полное событие, которое её вызвало, в last-input-event. См. Специальные события.
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/Misc-Events.html