diff options
author | Eli Zaretskii <eliz@gnu.org> | 2013-09-05 11:01:04 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2013-09-05 11:01:04 +0300 |
commit | 41306318777a942420bc4feadbfacf662ea179dc (patch) | |
tree | 669e5cca02f95d6064ce73c0d3fbbf91b8c8b563 /src/termhooks.h | |
parent | 141f1ff7a40cda10f0558e891dd196a943a5082e (diff) | |
parent | 257b3b03cb1cff917e0b3b7832ad3eab5b59f257 (diff) |
Merge from trunk after a lot of time.
Diffstat (limited to 'src/termhooks.h')
-rw-r--r-- | src/termhooks.h | 136 |
1 files changed, 68 insertions, 68 deletions
diff --git a/src/termhooks.h b/src/termhooks.h index a15f829288..437089ebf7 100644 --- a/src/termhooks.h +++ b/src/termhooks.h @@ -1,6 +1,7 @@ /* Parameters and display hooks for terminal devices. -Copyright (C) 1985-1986, 1993-1994, 2001-2012 Free Software Foundation, Inc. +Copyright (C) 1985-1986, 1993-1994, 2001-2013 Free Software Foundation, +Inc. This file is part of GNU Emacs. @@ -17,14 +18,17 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ - +#ifndef EMACS_TERMHOOKS_H +#define EMACS_TERMHOOKS_H + /* Miscellanea. */ #include "systime.h" /* for Time */ -struct glyph; -struct frame; - +INLINE_HEADER_BEGIN +#ifndef TERMHOOKS_INLINE +# define TERMHOOKS_INLINE INLINE +#endif enum scroll_bar_part { scroll_bar_above_handle, @@ -43,7 +47,18 @@ enum scroll_bar_part { may do something OS dependent, like extended window manager hints on X11. */ extern void (*fullscreen_hook) (struct frame *f); - +/* Output method of a terminal (and frames on this terminal, respectively). */ + +enum output_method +{ + output_initial, + output_termcap, + output_x_window, + output_msdos_raw, + output_w32, + output_ns +}; + /* Input queue declarations and hooks. */ enum event_kind @@ -102,9 +117,9 @@ enum event_kind HORIZ_WHEEL_EVENT, /* A wheel event generated by a second horizontal wheel that is present on some mice. See WHEEL_EVENT. */ -#if defined (WINDOWSNT) +#ifdef HAVE_NTGUI LANGUAGE_CHANGE_EVENT, /* A LANGUAGE_CHANGE_EVENT is - generated on WINDOWSNT or Mac OS + generated when HAVE_NTGUI or on Mac OS when the keyboard layout or input language is changed by the user. */ @@ -166,6 +181,8 @@ enum event_kind `switch-frame' events in kbd_buffer_get_event, if necessary. */ FOCUS_IN_EVENT, + FOCUS_OUT_EVENT, + /* Generated when mouse moves over window not currently selected. */ SELECT_WINDOW_EVENT, @@ -183,7 +200,7 @@ enum event_kind , CONFIG_CHANGED_EVENT -#ifdef WINDOWSNT +#ifdef HAVE_NTGUI /* Generated when an APPCOMMAND event is received, in response to Multimedia or Internet buttons on some keyboards. Such keys are available as normal function keys on X through the @@ -206,6 +223,11 @@ enum event_kind , NS_NONKEY_EVENT #endif +#ifdef USE_FILE_NOTIFY + /* File or directory was changed. */ + , FILE_NOTIFY_EVENT +#endif + }; /* If a struct input_event has a kind which is SELECTION_REQUEST_EVENT @@ -237,16 +259,8 @@ struct input_event Lisp_Object x, y; Time timestamp; - /* This is padding just to put the frame_or_window field - past the size of struct selection_input_event. */ - int *padding[2]; - - /* This field is copied into a vector while the event is in the queue, - so that garbage collections won't kill it. */ - /* In a menu_bar_event, this is a cons cell whose car is the frame - and whose cdr is the Lisp object that is the event's value. */ - /* This field is last so that struct selection_input_event - does not overlap with it. */ + /* This field is copied into a vector while the event is in + the queue, so that garbage collections won't kill it. */ Lisp_Object frame_or_window; /* Additional event argument. This is used for TOOL_BAR_EVENTs and @@ -316,11 +330,6 @@ extern void term_mouse_moveto (int, int); extern struct tty_display_info *gpm_tty; #endif - -struct ns_display_info; -struct x_display_info; -struct w32_display_info; - /* Terminal-local parameters. */ struct terminal { @@ -379,7 +388,7 @@ struct terminal struct image_cache *image_cache; #endif /* HAVE_WINDOW_SYSTEM */ - /* Device-type dependent data shared amongst all frames on this terminal. */ + /* Device-type dependent data shared amongst all frames on this terminal. */ union display_info { struct tty_display_info *tty; /* termchar.h */ @@ -400,31 +409,23 @@ struct terminal the function `set-keyboard-coding-system'. */ struct coding_system *keyboard_coding; - /* Terminal characteristics. */ - /* XXX Are these really used on non-termcap displays? */ + /* Terminal characteristics. */ + /* XXX Are these really used on non-termcap displays? */ int must_write_spaces; /* Nonzero means spaces in the text must actually be output; can't just skip over some columns to leave them blank. */ - int fast_clear_end_of_line; /* Nonzero means terminal has a `ce' string */ + int fast_clear_end_of_line; /* Nonzero means terminal has a `ce' string. */ - int line_ins_del_ok; /* Terminal can insert and delete lines */ - int char_ins_del_ok; /* Terminal can insert and delete chars */ + int line_ins_del_ok; /* Terminal can insert and delete lines. */ + int char_ins_del_ok; /* Terminal can insert and delete chars. */ int scroll_region_ok; /* Terminal supports setting the scroll - window */ + window. */ int scroll_region_cost; /* Cost of setting the scroll window, - measured in characters. */ + measured in characters. */ int memory_below_frame; /* Terminal remembers lines scrolled - off bottom */ + off bottom. */ -#if 0 /* These are not used anywhere. */ - /* EMACS_INT baud_rate; */ /* Output speed in baud */ - int min_padding_speed; /* Speed below which no padding necessary. */ - int dont_calculate_costs; /* Nonzero means don't bother computing - various cost tables; we won't use them. */ -#endif - - /* Window-based redisplay interface for this device (0 for tty devices). */ struct redisplay_interface *rif; @@ -472,10 +473,7 @@ struct terminal Otherwise, set *bar_window to Qnil, and *x and *y to the column and row of the character cell the mouse is over. - Set *time to the time the mouse was at the returned position. - - This should clear mouse_moved until the next motion - event arrives. */ + Set *time to the time the mouse was at the returned position. */ void (*mouse_position_hook) (struct frame **f, int, Lisp_Object *bar_window, enum scroll_bar_part *part, @@ -483,11 +481,6 @@ struct terminal Lisp_Object *y, Time *); - /* The window system handling code should set this if the mouse has - moved since the last call to the mouse_position_hook. Calling that - hook should clear this. */ - int mouse_moved; - /* When a frame's focus redirection is changed, this hook tells the window system code to re-decide where to put the highlight. Under X, this means that Emacs lies about where the focus is. */ @@ -586,24 +579,14 @@ struct terminal /* Called to read input events. TERMINAL indicates which terminal device to read from. Input - events should be read into BUF, the size of which is given in - SIZE. EXPECTED is non-zero if the caller suspects that new input - is available. + events should be read into HOLD_QUIT. A positive return value indicates that that many input events - where read into BUF. + were read into BUF. Zero means no events were immediately available. A value of -1 means a transient read error, while -2 indicates - that the device was closed (hangup), and it should be deleted. - - XXX Please note that a non-zero value of EXPECTED only means that - there is available input on at least one of the currently opened - terminal devices -- but not necessarily on this device. - Therefore, in most cases EXPECTED should be simply ignored. - - XXX This documentation needs to be updated. */ + that the device was closed (hangup), and it should be deleted. */ int (*read_socket_hook) (struct terminal *terminal, - int expected, struct input_event *hold_quit); /* Called when a frame's display becomes entirely up to date. */ @@ -627,8 +610,20 @@ struct terminal void (*delete_terminal_hook) (struct terminal *); }; +/* Most code should use these functions to set Lisp fields in struct + terminal. */ +TERMHOOKS_INLINE void +tset_charset_list (struct terminal *t, Lisp_Object val) +{ + t->charset_list = val; +} +TERMHOOKS_INLINE void +tset_selection_alist (struct terminal *t, Lisp_Object val) +{ + t->Vselection_alist = val; +} -/* Chain of all terminal devices currently in use. */ +/* Chain of all terminal devices currently in use. */ extern struct terminal *terminal_list; #define FRAME_MUST_WRITE_SPACES(f) ((f)->terminal->must_write_spaces) @@ -649,14 +644,16 @@ extern struct terminal *terminal_list; #define FRAME_TERMINAL(f) ((f)->terminal) -/* Return true if the terminal device is not suspended. */ -#define TERMINAL_ACTIVE_P(d) (((d)->type != output_termcap && (d)->type !=output_msdos_raw) || (d)->display_info.tty->input) +/* Return true if the terminal device is not suspended. */ +#define TERMINAL_ACTIVE_P(d) \ + (((d)->type != output_termcap && (d)->type != output_msdos_raw) \ + || (d)->display_info.tty->input) -extern struct terminal *get_terminal (Lisp_Object terminal, int); +extern struct terminal *get_terminal (Lisp_Object terminal, bool); extern struct terminal *create_terminal (void); extern void delete_terminal (struct terminal *); -/* The initial terminal device, created by initial_term_init. */ +/* The initial terminal device, created by initial_term_init. */ extern struct terminal *initial_terminal; extern unsigned char *encode_terminal_code (struct glyph *, int, @@ -671,3 +668,6 @@ extern int curX (struct tty_display_info *); extern int curY (struct tty_display_info *); #endif +INLINE_HEADER_END + +#endif /* EMACS_TERMHOOKS_H */ |