]> code.delx.au - gnu-emacs/blobdiff - src/keyboard.h
(Fbyte_code): Use BEFORE_POTENTIAL_GC and
[gnu-emacs] / src / keyboard.h
index 6d6f4d4c095a030e36a3f763388e20a8c5b1872e..221695888503a37bbe09980d2c77d6d159728994 100644 (file)
@@ -78,9 +78,16 @@ struct kboard
        commands that set the prefix argument.  */
     Lisp_Object Vlast_command;
 
+    /* Normally same as last-command, but never modified by
+       other commands.  */
+    Lisp_Object Vreal_last_command;
+
     /* The prefix argument for the next command, in raw form.  */
     Lisp_Object Vprefix_arg;
 
+    /* Saved prefix argument for the last command, in raw form.  */
+    Lisp_Object Vlast_prefix_arg;
+
     /* Unread events specific to this kboard.  */
     Lisp_Object kbd_queue;
 
@@ -241,23 +248,28 @@ extern Lisp_Object item_properties;
 /* Extract the head from an event.
    This works on composite and simple events.  */
 #define EVENT_HEAD(event) \
-  (EVENT_HAS_PARAMETERS (event) ? XCONS (event)->car : (event))
+  (EVENT_HAS_PARAMETERS (event) ? XCAR (event) : (event))
 
 /* Extract the starting and ending positions from a composite event.  */
-#define EVENT_START(event) (XCONS (XCONS (event)->cdr)->car)
-#define EVENT_END(event) (XCONS (XCONS (XCONS (event)->cdr)->cdr)->car)
+#define EVENT_START(event) (XCAR (XCDR (event)))
+#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)))
 
 /* Extract the fields of a position.  */
-#define POSN_WINDOW(posn) (XCONS (posn)->car)
-#define POSN_BUFFER_POSN(posn) (XCONS (XCONS (posn)->cdr)->car)
-#define POSN_WINDOW_POSN(posn) (XCONS (XCONS (XCONS (posn)->cdr)->cdr)->car)
+#define POSN_WINDOW(posn) (XCAR (posn))
+#define POSN_BUFFER_POSN(posn) (XCAR (XCDR (posn)))
+#define POSN_WINDOW_POSN(posn) (XCAR (XCDR (XCDR (posn))))
 #define POSN_TIMESTAMP(posn) \
-  (XCONS (XCONS (XCONS (XCONS (posn)->cdr)->cdr)->cdr)->car)
+  (XCAR (XCDR (XCDR (XCDR (posn)))))
 #define POSN_SCROLLBAR_PART(posn)      (Fnth ((posn), make_number (4)))
 
+/* 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))
+
 /* Some of the event heads.  */
 extern Lisp_Object Qswitch_frame;
 
@@ -277,13 +289,14 @@ extern Lisp_Object Qscroll_bar_movement;
   (Fget ((event_head), Qevent_kind))
 
 /* Symbols to use for non-text mouse positions.  */
-extern Lisp_Object Qmode_line, Qvertical_line;
+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 *));
 /* User-supplied string to translate input characters through.  */