Spec-Zone.ru › Elisp

Различные системные события

Несколько других типов событий представляют собой события, происходящие в системе.

(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)

Точное значение параметров события и способ использования этих параметров для отображения текста справки подробно описаны в Текстовая справка.

sigusr1
sigusr2

Эти события генерируются, когда процесс 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

Spec-Zone.ru

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