X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/381c798c151247d1266809344bb63f6d293f9775..e28f9ad3c609d67a29649bea5e29da0432e502a2:/src/keyboard.h diff --git a/src/keyboard.h b/src/keyboard.h index 0474c0404b..6fe7636306 100644 --- a/src/keyboard.h +++ b/src/keyboard.h @@ -1,5 +1,6 @@ /* 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. @@ -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. @@ -59,7 +60,7 @@ Boston, MA 02111-1307, USA. */ 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; @@ -104,7 +105,10 @@ struct 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. */ @@ -126,12 +130,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. @@ -149,7 +150,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; }; @@ -184,7 +185,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; @@ -212,14 +213,14 @@ 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. */ #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. */ @@ -232,7 +233,7 @@ extern Lisp_Object item_properties; #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 @@ -252,20 +253,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_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; @@ -291,27 +297,23 @@ extern Lisp_Object Qmode_line, Qvertical_line, Qheader_line; /* 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 *)); +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 Lisp_Object map_prompt P_ ((Lisp_Object)); - - 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)); -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)); @@ -325,9 +327,24 @@ extern void stuff_buffered_input P_ ((Lisp_Object)); 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, 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) */