summaryrefslogtreecommitdiff
path: root/src/termhooks.h
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2013-09-05 11:01:04 +0300
committerEli Zaretskii <eliz@gnu.org>2013-09-05 11:01:04 +0300
commit41306318777a942420bc4feadbfacf662ea179dc (patch)
tree669e5cca02f95d6064ce73c0d3fbbf91b8c8b563 /src/termhooks.h
parent141f1ff7a40cda10f0558e891dd196a943a5082e (diff)
parent257b3b03cb1cff917e0b3b7832ad3eab5b59f257 (diff)
Merge from trunk after a lot of time.
Diffstat (limited to 'src/termhooks.h')
-rw-r--r--src/termhooks.h136
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 */