(mouse-autoselect-window-cancel): Don't cancel for
[bpt/emacs.git] / src / keyboard.h
index d9cc41f..ea147ca 100644 (file)
@@ -1,11 +1,12 @@
 /* Declarations useful when processing input.
-   Copyright (C) 1985, 1986, 1987, 1993 Free Software Foundation, Inc.
+   Copyright (C) 1985, 1986, 1987, 1993, 2001, 2002, 2003, 2004,
+                 2005, 2006, 2007  Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
 GNU Emacs is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
+the Free Software Foundation; either version 3, or (at your option)
 any later version.
 
 GNU Emacs is distributed in the hope that it will be useful,
@@ -15,12 +16,12 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU Emacs; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
 
-/* Length of echobuf field in each KBOARD.  */
+#include "systime.h"           /* for EMACS_TIME */
 
-#define ECHOBUFSIZE 300
+/* Length of echobuf field in each KBOARD.  */
 
 /* Each KBOARD represents one logical input stream from which Emacs gets input.
    If we are using an ordinary terminal, it has one KBOARD object.
@@ -82,6 +83,9 @@ struct kboard
        other commands.  */
     Lisp_Object Vreal_last_command;
 
+    /* Last command that may be repeated by `repeat'.  */
+    Lisp_Object Vlast_repeatable_command;
+
     /* The prefix argument for the next command, in raw form.  */
     Lisp_Object Vprefix_arg;
 
@@ -129,12 +133,9 @@ struct kboard
        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.
@@ -152,7 +153,7 @@ struct 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;
   };
 
@@ -187,7 +188,7 @@ extern Lisp_Object Qrecompute_lucid_menubar, Qactivate_menubar_hook;
 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;
@@ -215,7 +216,7 @@ extern Lisp_Object internal_last_event_frame;
    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. */
@@ -242,7 +243,7 @@ extern Lisp_Object item_properties;
 \f
 /* Macros for dealing with lispy events.  */
 
-/* True iff EVENT has data fields describing it (i.e. a mouse click).  */
+/* True if EVENT has data fields describing it (i.e. a mouse click).  */
 #define EVENT_HAS_PARAMETERS(event) (CONSP (event))
 
 /* Extract the head from an event.
@@ -255,21 +256,25 @@ extern Lisp_Object item_properties;
 #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_BUFFER_SET_POSN(posn,x) (XSETCAR (XCDR (posn), (x)))
+#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;
@@ -297,17 +302,18 @@ struct input_event;
 
 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 *));
+extern Lisp_Object read_char P_ ((int, int, Lisp_Object *, Lisp_Object,
+                                 int *, EMACS_TIME *));
 /* User-supplied string to translate input characters through.  */
 extern Lisp_Object Vkeyboard_translate_table;
 
-
 extern int parse_menu_item P_ ((Lisp_Object, int, int));
 
 extern void echo_now P_ ((void));
 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));
@@ -326,17 +332,22 @@ extern void swallow_events P_ ((int));
 extern int help_char_p P_ ((Lisp_Object));
 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, Lisp_Object, Lisp_Object,
                                Lisp_Object, int));
-extern int gen_help_event P_ ((struct input_event *, int, 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));
+extern void add_user_signals P_ ((int, const char *));
+
+/* arch-tag: 769cbade-1ba9-4950-b886-db265b061aa3
+   (do not change this comment) */