/* Length of echobuf field in each KBOARD. */
-#define ECHOBUFSIZE 300
-
/* Each KBOARD represents one logical input stream from which Emacs gets input.
If we are using an ordinary terminal, it has one KBOARD object.
Usually each X display screen has its own KBOARD,
from the current KBOARD. If events come from other KBOARDs, they
are put aside for later in the KBOARDs' kbd_queue lists.
The flag kbd_queue_has_data in a KBOARD is 1 if this has happened.
- When Emacs goes back to the any-kboard state, it looks at all the KBOARDS
+ When Emacs goes back to the any-kboard state, it looks at all the KBOARDs
to find those; and it tries processing their input right away. */
typedef struct kboard KBOARD;
ends before this. This is not the same as kbd_macro_ptr, because
we advance this to kbd_macro_ptr when a key's command is complete.
This way, the keystrokes for "end-kbd-macro" are not included in the
- macro. */
+ macro. This also allows us to throw away the events added to the
+ macro by the last command: all the events between kbd_macro_end and
+ kbd_macro_ptr belong to the last command; see
+ cancel-kbd-macro-events. */
Lisp_Object *kbd_macro_end;
/* Allocated size of kbd_macro_buffer. */
larger when you have multiple screens on a single X display. */
int reference_count;
- /* Where to append more text to echobuf if we want to. */
- char *echoptr;
-
/* The text we're echoing in the modeline - partial key sequences,
- usually. '\0'-terminated. This really shouldn't have a fixed size. */
- char echobuf[ECHOBUFSIZE];
+ usually. This is nil when not echoing. */
+ Lisp_Object echo_string;
/* This flag indicates that events were put into kbd_queue
while Emacs was running for some other KBOARD.
char immediate_echo;
/* If we have echoed a prompt string specified by the user,
- this is its length. Otherwise this is -1. */
+ this is its length in characters. Otherwise this is -1. */
char echo_after_prompt;
};
extern int num_input_events;
/* Total number of times read_char has returned, outside of macros. */
-extern int num_nonmacro_input_events;
+extern EMACS_INT num_nonmacro_input_events;
/* Nonzero means polling for input is temporarily suppressed. */
extern int poll_suppress_count;
Using a Lisp vector to hold this information while we decode it
takes care of protecting all the data from GC. */
extern Lisp_Object item_properties;
-
+
/* This describes the elements of item_properties.
The first element is not a property, it is a pointer to the item properties
that is saved for GC protection. */
#define ITEM_PROPERTY_ITEM 0
/* The item string. */
#define ITEM_PROPERTY_NAME 1
-/* Start of initilize to nil */
+/* Start of initialize to nil */
/* The binding: nil, a command or a keymap. */
#define ITEM_PROPERTY_DEF 2
/* The keymap if the binding is a keymap, otherwise nil. */
#define ITEM_PROPERTY_SELECTED 6
/* Place for a help string. Not yet used. */
#define ITEM_PROPERTY_HELP 7
-/* Start of initilize to t */
+/* Start of initialize to t */
/* Last property. */
/* Not nil if item is enabled. */
#define ITEM_PROPERTY_ENABLE 8
#define EVENT_END(event) (XCAR (XCDR (XCDR (event))))
/* Extract the click count from a multi-click event. */
-#define EVENT_CLICK_COUNT(event) (Fnth ((event), make_number (2)))
+#define EVENT_CLICK_COUNT(event) (Fnth (make_number (2), (event)))
/* Extract the fields of a position. */
#define POSN_WINDOW(posn) (XCAR (posn))
-#define POSN_BUFFER_POSN(posn) (XCAR (XCDR (posn)))
+#define POSN_POSN(posn) (XCAR (XCDR (posn)))
+#define POSN_SET_POSN(posn,x) (XSETCAR (XCDR (posn), (x)))
#define POSN_WINDOW_POSN(posn) (XCAR (XCDR (XCDR (posn))))
-#define POSN_TIMESTAMP(posn) \
- (XCAR (XCDR (XCDR (XCDR (posn)))))
-#define POSN_SCROLLBAR_PART(posn) (Fnth ((posn), make_number (4)))
+#define POSN_TIMESTAMP(posn) (XCAR (XCDR (XCDR (XCDR (posn)))))
+#define POSN_SCROLLBAR_PART(posn) (Fnth (make_number (4), (posn)))
/* A cons (STRING . STRING-CHARPOS), or nil in mouse-click events.
It's a cons if the click is over a string in the mode line. */
-#define POSN_STRING(POSN) Fnth (make_number (4), (POSN))
+#define POSN_STRING(posn) (Fnth (make_number (4), (posn)))
+
+/* If POSN_STRING is nil, event refers to buffer location. */
+
+#define POSN_INBUFFER_P(posn) (NILP (POSN_STRING (posn)))
+#define POSN_BUFFER_POSN(posn) (Fnth (make_number (5), (posn)))
/* Some of the event heads. */
extern Lisp_Object Qswitch_frame;
/* Forward declaration for prototypes. */
struct input_event;
-extern Lisp_Object get_keymap_1 P_ ((Lisp_Object, int, int));
-EXFUN (Fkeymapp, 1);
extern Lisp_Object parse_modifiers P_ ((Lisp_Object));
extern Lisp_Object reorder_modifiers P_ ((Lisp_Object));
extern Lisp_Object read_char P_ ((int, int, Lisp_Object *, Lisp_Object, int *));
/* User-supplied string to translate input characters through. */
extern Lisp_Object Vkeyboard_translate_table;
-extern Lisp_Object map_prompt P_ ((Lisp_Object));
-
extern int parse_menu_item P_ ((Lisp_Object, int, int));
extern void init_kboard P_ ((KBOARD *));
extern void delete_kboard P_ ((KBOARD *));
extern void single_kboard_state P_ ((void));
+extern void not_single_kboard_state P_ ((KBOARD *));
extern void push_frame_kboard P_ ((struct frame *));
extern void pop_frame_kboard P_ ((void));
extern void record_asynch_buffer_change P_ ((void));
-extern void clear_waiting_for_input P_ ((void));
extern SIGTYPE input_poll_signal P_ ((int));
extern void start_polling P_ ((void));
extern void stop_polling P_ ((void));
extern void clear_waiting_for_input P_ ((void));
extern void swallow_events P_ ((int));
extern int help_char_p P_ ((Lisp_Object));
-extern void quit_throw_to_read_char P_ ((void));
+extern void quit_throw_to_read_char P_ ((void)) NO_RETURN;
extern void cmd_error_internal P_ ((Lisp_Object, char *));
-extern void timer_start_idle P_ ((void));
-extern void timer_stop_idle P_ ((void));
extern int lucid_event_type_list_p P_ ((Lisp_Object));
extern void kbd_buffer_store_event P_ ((struct input_event *));
+extern void kbd_buffer_store_event_hold P_ ((struct input_event *,
+ struct input_event *));
+extern void kbd_buffer_unget_event P_ ((struct input_event *));
#ifdef POLL_FOR_INPUT
extern void poll_for_input_1 P_ ((void));
#endif
-extern void show_help_echo P_ ((Lisp_Object, int));
+extern void show_help_echo P_ ((Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object, int));
+extern void gen_help_event P_ ((Lisp_Object, Lisp_Object, Lisp_Object,
+ Lisp_Object, int));
+extern void kbd_buffer_store_help_event P_ ((Lisp_Object, Lisp_Object));
+extern Lisp_Object menu_item_eval_property P_ ((Lisp_Object));
+extern int kbd_buffer_events_waiting P_ ((int));
+
+/* arch-tag: 769cbade-1ba9-4950-b886-db265b061aa3
+ (do not change this comment) */