X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/0f98c4c21185ffc9136044022bac4dcd8d81d6cb..8030369ccb5c871d3ce11b96c220f318bc741ed8:/src/termhooks.h diff --git a/src/termhooks.h b/src/termhooks.h index 48d66d390e..a479b5bdc1 100644 --- a/src/termhooks.h +++ b/src/termhooks.h @@ -44,9 +44,6 @@ extern void (*clear_end_of_line_hook) P_ ((int)); extern void (*ins_del_lines_hook) P_ ((int, int)); -extern void (*change_line_highlight_hook) P_ ((int, int, int, int)); -extern void (*reassert_line_highlight_hook) P_ ((int, int)); - extern void (*insert_glyphs_hook) P_ ((struct glyph *s, int n)); extern void (*write_glyphs_hook) P_ ((struct glyph *s, int n)); extern void (*delete_glyphs_hook) P_ ((int)); @@ -204,10 +201,10 @@ extern void (*judge_scroll_bars_hook) P_ ((struct frame *FRAME)); enum event_kind { - no_event, /* nothing happened. This should never + NO_EVENT, /* nothing happened. This should never actually appear in the event queue. */ - ascii_keystroke, /* The ASCII code is in .code, perhaps + ASCII_KEYSTROKE_EVENT, /* The ASCII code is in .code, perhaps with modifiers applied. .modifiers holds the state of the modifier keys. @@ -215,7 +212,13 @@ enum event_kind which the key was typed. .timestamp gives a timestamp (in milliseconds) for the keystroke. */ - non_ascii_keystroke, /* .code is a number identifying the + MULTIBYTE_CHAR_KEYSTROKE_EVENT, /* The multibyte char code is in .code, + perhaps with modifiers applied. + The others are the same as + ASCII_KEYSTROKE_EVENT. This type of event + is generated only when we are using + XIM on X window. */ + NON_ASCII_KEYSTROKE_EVENT, /* .code is a number identifying the function key. A code N represents a key whose name is function_key_names[N]; function_key_names @@ -227,8 +230,8 @@ enum event_kind which the key was typed. .timestamp gives a timestamp (in milliseconds) for the keystroke. */ - timer_event, /* A timer fired. */ - mouse_click, /* The button number is in .code; it must + TIMER_EVENT, /* A timer fired. */ + MOUSE_CLICK_EVENT, /* The button number is in .code; it must be >= 0 and < NUM_MOUSE_BUTTONS, defined below. .modifiers holds the state of the @@ -239,9 +242,9 @@ enum event_kind the mouse click occurred in. .timestamp gives a timestamp (in milliseconds) for the click. */ -#ifdef WINDOWSNT - mouse_wheel, /* A mouse-wheel event is generated - on WINDOWSNT by a +#if defined(WINDOWSNT) || defined(MAC_OSX) + MOUSE_WHEEL_EVENT, /* A mouse-wheel event is generated + on WINDOWSNT or MAC_OSX by a wheel on a mouse (e.g., MS Intellimouse). The event contains a delta that corresponds to the amount and direction that the wheel @@ -256,12 +259,14 @@ enum event_kind the wheel event occurred in. .timestamp gives a timestamp (in milliseconds) for the wheel event. */ - language_change_event, /* A language_change event is generated +#endif +#ifdef WINDOWSNT + LANGUAGE_CHANGE_EVENT, /* A LANGUAGE_CHANGE_EVENT is generated on WINDOWSNT when the keyboard layout or input language is changed by the user. */ #endif - scroll_bar_click, /* .code gives the number of the mouse button + SCROLL_BAR_CLICK_EVENT, /* .code gives the number of the mouse button that was clicked. .modifiers holds the state of the modifier keys. @@ -275,23 +280,23 @@ enum event_kind .timestamp gives a timestamp (in milliseconds) for the click. */ #ifdef WINDOWSNT - w32_scroll_bar_click, /* as for scroll_bar_click, but only generated + W32_SCROLL_BAR_CLICK_EVENT, /* as for SCROLL_BAR_CLICK, but only generated by MS-Windows scroll bar controls. */ #endif - selection_request_event, /* Another X client wants a selection from us. + SELECTION_REQUEST_EVENT, /* Another X client wants a selection from us. See `struct selection_event'. */ - selection_clear_event, /* Another X client cleared our selection. */ - buffer_switch_event, /* A process filter has switched buffers. */ - delete_window_event, /* An X client said "delete this window". */ - menu_bar_event, /* An event generated by the menu bar. + SELECTION_CLEAR_EVENT, /* Another X client cleared our selection. */ + BUFFER_SWITCH_EVENT, /* A process filter has switched buffers. */ + DELETE_WINDOW_EVENT, /* An X client said "delete this window". */ + MENU_BAR_EVENT, /* An event generated by the menu bar. The frame_or_window field's cdr holds the Lisp-level event value. (Only the toolkit version uses these.) */ - iconify_event, /* An X client iconified this window. */ - deiconify_event, /* An X client deiconified this window. */ - menu_bar_activate_event, /* A button press in the menu bar + ICONIFY_EVENT, /* An X client iconified this window. */ + DEICONIFY_EVENT, /* An X client deiconified this window. */ + MENU_BAR_ACTIVATE_EVENT, /* A button press in the menu bar (toolkit version only). */ - drag_n_drop, /* A drag-n-drop event is generated when + DRAG_N_DROP_EVENT, /* A drag-n-drop event is generated when files selected outside of Emacs are dropped onto an Emacs window. Currently used only on Windows NT. @@ -304,25 +309,34 @@ enum event_kind the filenames of the dropped files. .timestamp gives a timestamp (in milliseconds) for the click. */ - user_signal, /* A user signal. - .code is a number identifying it, + USER_SIGNAL_EVENT, /* A user signal. + code is a number identifying it, index into lispy_user_signals. */ - /* Currently only returned when the mouse enters a tool-bar item that - has a help string. Member frame_or_window of the input_event is - a cons cell whose car is the tool-bar's frame and whose cdr is the - help string. */ + /* Help events. Member `frame_or_window' of the input_event is the + frame on which the event occurred, and member `arg' contains + the help to show. */ HELP_EVENT, + /* An event from a tool-bar. Member `arg' of the input event + contains the tool-bar item selected. If `frame_or_window' + and `arg' are equal, this is a prefix event. */ TOOL_BAR_EVENT, /* Queued from XTread_socket on FocusIn events. Translated into `switch-frame' events in kbd_buffer_get_event, if necessary. */ - FOCUS_IN_EVENT + FOCUS_IN_EVENT, + + /* Generated when mouse moves over window not currently selected. */ + SELECT_WINDOW_EVENT, + + /* Queued from XTread_socket when session manager sends + save yourself before shutdown. */ + SAVE_SESSION_EVENT }; -/* If a struct input_event has a kind which is selection_request_event - or selection_clear_event, then its contents are really described +/* If a struct input_event has a kind which is SELECTION_REQUEST_EVENT + or SELECTION_CLEAR_EVENT, then its contents are really described by `struct selection_event'; see xterm.h. */ /* The keyboard input buffer is an array of these structures. Each one @@ -332,12 +346,12 @@ enum event_kind struct input_event { - /* What kind of event was this? */ - int kind; + enum event_kind kind; - /* For an ascii_keystroke, this is the character. - For a non_ascii_keystroke, this is the keysym code. + /* For an ASCII_KEYSTROKE_EVENT and MULTIBYTE_CHAR_KEYSTROKE_EVENT, + this is the character. + For a NON_ASCII_KEYSTROKE_EVENT, this is the keysym code. For a mouse event, this is the button number. */ /* In WindowsNT, for a mouse wheel event, this is the delta. */ int code; @@ -359,6 +373,10 @@ struct input_event /* This field is last so that struct selection_input_event does not overlap with it. */ Lisp_Object frame_or_window; + + /* Additional event argument. This is used for TOOL_BAR_EVENTs and + HELP_EVENTs and avoids calling Fcons during signal handling. */ + Lisp_Object arg; }; /* Called to read input events. */