Mercurial > emacs
changeset 74751:28393f8e75f1
(Misc Events): User signals now result in sigusr1
and sigusr2 events which are handled through special-event-map.
(Special Events): User signals and drag-n-drop are special.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Tue, 19 Dec 2006 15:38:08 +0000 |
parents | 8079b89022bf |
children | 259471a9b617 |
files | lispref/commands.texi |
diffstat | 1 files changed, 27 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/lispref/commands.texi Tue Dec 19 15:37:45 2006 +0000 +++ b/lispref/commands.texi Tue Dec 19 15:38:08 2006 +0000 @@ -1586,14 +1586,33 @@ parameters are used to display the help-echo text are described in @ref{Text help-echo}. -@cindex @code{signal usr1} event -@cindex @code{signal usr2} event +@cindex @code{sigusr1} event +@cindex @code{sigusr2} event @cindex user signals -@item signal usr1 -@itemx signal usr2 -These event sequences are generated when the Emacs process receives +@item sigusr1 +@itemx sigusr2 +These events are generated when the Emacs process receives the signals @code{SIGUSR1} and @code{SIGUSR2}. They contain no additional data because signals do not carry additional information. + +To catch a user signal, bind the corresponding event to an interactive +command in the @code{special-event-map} (@pxref{Active Keymaps}). +The command is called with no arguments, and the specific signal event is +available in @code{last-input-event}. For example: + +@example +(defun sigusr-handler () + (interactive) + (message "Caught signal %S" last-input-event)) + +(define-key special-event-map [sigusr1] 'sigusr-handler) +@end example + +To test the signal handler, you can make Emacs send a signal to itself: + +@example +(signal-process (emacs-pid) 'sigusr1) +@end example @end table If one of these events arrives in the middle of a key sequence---that @@ -2634,8 +2653,9 @@ after they are read, and this is the way for the event's definition to find the actual event. -The events types @code{iconify-frame}, @code{make-frame-visible} and -@code{delete-frame} are normally handled in this way. The keymap which +The events types @code{iconify-frame}, @code{make-frame-visible}, +@code{delete-frame}, @code{drag-n-drop}, and user signals like +@code{sigusr1} are normally handled in this way. The keymap which defines how to handle special events---and which events are special---is in the variable @code{special-event-map} (@pxref{Active Keymaps}).