aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorStefan Monnier2010-12-10 19:13:08 -0500
committerStefan Monnier2010-12-10 19:13:08 -0500
commit2c302df3a13236bfbf8ea1b771d13618fcda8d71 (patch)
treef26dc9f22861dc37610de319d05255de058c221b /src/lisp.h
parent0c747cb143fa227e78f350ac353d703f489209df (diff)
parent175069efeb080517afefdd44a06f7a779ea8c25c (diff)
downloademacs-2c302df3a13236bfbf8ea1b771d13618fcda8d71.tar.gz
emacs-2c302df3a13236bfbf8ea1b771d13618fcda8d71.zip
Merge from trunk
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h67
1 files changed, 51 insertions, 16 deletions
diff --git a/src/lisp.h b/src/lisp.h
index 89d01ec6872..36653e91e4e 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -267,7 +267,9 @@ union Lisp_Object
267 267
268 struct 268 struct
269 { 269 {
270 EMACS_INT val : VALBITS; 270 /* Use explict signed, the signedness of a bit-field of type
271 int is implementation defined. */
272 signed EMACS_INT val : VALBITS;
271 enum Lisp_Type type : GCTYPEBITS; 273 enum Lisp_Type type : GCTYPEBITS;
272 } s; 274 } s;
273 struct 275 struct
@@ -290,7 +292,9 @@ union Lisp_Object
290 struct 292 struct
291 { 293 {
292 enum Lisp_Type type : GCTYPEBITS; 294 enum Lisp_Type type : GCTYPEBITS;
293 EMACS_INT val : VALBITS; 295 /* Use explict signed, the signedness of a bit-field of type
296 int is implementation defined. */
297 signed EMACS_INT val : VALBITS;
294 } s; 298 } s;
295 struct 299 struct
296 { 300 {
@@ -447,20 +451,8 @@ enum pvec_type
447#endif 451#endif
448 452
449#define XHASH(a) ((a).i) 453#define XHASH(a) ((a).i)
450
451#define XTYPE(a) ((enum Lisp_Type) (a).u.type) 454#define XTYPE(a) ((enum Lisp_Type) (a).u.type)
452
453#ifdef EXPLICIT_SIGN_EXTEND
454/* Make sure we sign-extend; compilers have been known to fail to do so.
455 We additionally cast to EMACS_INT since it seems that some compilers
456 have been known to fail to do so, even though the bitfield is declared
457 as EMACS_INT already. */
458#define XINT(a) ((((EMACS_INT) (a).s.val) << (BITS_PER_EMACS_INT - VALBITS)) \
459 >> (BITS_PER_EMACS_INT - VALBITS))
460#else
461#define XINT(a) ((a).s.val) 455#define XINT(a) ((a).s.val)
462#endif /* EXPLICIT_SIGN_EXTEND */
463
464#define XUINT(a) ((a).u.val) 456#define XUINT(a) ((a).u.val)
465 457
466#ifdef USE_LSB_TAG 458#ifdef USE_LSB_TAG
@@ -1589,6 +1581,41 @@ typedef struct {
1589/* The ID of the mode line highlighting face. */ 1581/* The ID of the mode line highlighting face. */
1590#define GLYPH_MODE_LINE_FACE 1 1582#define GLYPH_MODE_LINE_FACE 1
1591 1583
1584/* Structure to hold mouse highlight data. This is here because other
1585 header files need it for defining struct x_output etc. */
1586typedef struct {
1587 /* These variables describe the range of text currently shown in its
1588 mouse-face, together with the window they apply to. As long as
1589 the mouse stays within this range, we need not redraw anything on
1590 its account. Rows and columns are glyph matrix positions in
1591 MOUSE_FACE_WINDOW. */
1592 int mouse_face_beg_row, mouse_face_beg_col;
1593 int mouse_face_beg_x, mouse_face_beg_y;
1594 int mouse_face_end_row, mouse_face_end_col;
1595 int mouse_face_end_x, mouse_face_end_y;
1596 int mouse_face_past_end;
1597 Lisp_Object mouse_face_window;
1598 int mouse_face_face_id;
1599 Lisp_Object mouse_face_overlay;
1600
1601 /* 1 if a mouse motion event came and we didn't handle it right away because
1602 gc was in progress. */
1603 int mouse_face_deferred_gc;
1604
1605 /* FRAME and X, Y position of mouse when last checked for
1606 highlighting. X and Y can be negative or out of range for the frame. */
1607 struct frame *mouse_face_mouse_frame;
1608 int mouse_face_mouse_x, mouse_face_mouse_y;
1609
1610 /* Nonzero means defer mouse-motion highlighting. */
1611 int mouse_face_defer;
1612
1613 /* Nonzero means that the mouse highlight should not be shown. */
1614 int mouse_face_hidden;
1615
1616 int mouse_face_image_state;
1617} Mouse_HLInfo;
1618
1592/* Data type checking */ 1619/* Data type checking */
1593 1620
1594#define NILP(x) EQ (x, Qnil) 1621#define NILP(x) EQ (x, Qnil)
@@ -2665,11 +2692,15 @@ extern Lisp_Object Qimage, Qtext, Qboth, Qboth_horiz, Qtext_image_horiz;
2665extern Lisp_Object Qspace, Qcenter, QCalign_to; 2692extern Lisp_Object Qspace, Qcenter, QCalign_to;
2666extern Lisp_Object Qbar, Qhbar, Qbox, Qhollow; 2693extern Lisp_Object Qbar, Qhbar, Qbox, Qhollow;
2667extern Lisp_Object Qleft_margin, Qright_margin; 2694extern Lisp_Object Qleft_margin, Qright_margin;
2695extern Lisp_Object Qglyphless_char;
2668extern Lisp_Object Vmessage_log_max; 2696extern Lisp_Object Vmessage_log_max;
2669extern Lisp_Object QCdata, QCfile; 2697extern Lisp_Object QCdata, QCfile;
2670extern Lisp_Object QCmap; 2698extern Lisp_Object QCmap;
2671extern Lisp_Object Qrisky_local_variable; 2699extern Lisp_Object Qrisky_local_variable;
2672extern Lisp_Object Vinhibit_redisplay; 2700extern Lisp_Object Vinhibit_redisplay;
2701extern struct frame *last_glyphless_glyph_frame;
2702extern unsigned last_glyphless_glyph_face_id;
2703extern int last_glyphless_glyph_merged_face_id;
2673extern int message_enable_multibyte; 2704extern int message_enable_multibyte;
2674extern int noninteractive_need_newline; 2705extern int noninteractive_need_newline;
2675extern EMACS_INT scroll_margin; 2706extern EMACS_INT scroll_margin;
@@ -2727,6 +2758,8 @@ extern void memory_full (void) NO_RETURN;
2727extern void buffer_memory_full (void) NO_RETURN; 2758extern void buffer_memory_full (void) NO_RETURN;
2728extern int survives_gc_p (Lisp_Object); 2759extern int survives_gc_p (Lisp_Object);
2729extern void mark_object (Lisp_Object); 2760extern void mark_object (Lisp_Object);
2761extern void refill_memory_reserve (void);
2762extern const char *pending_malloc_warning;
2730extern Lisp_Object Vpurify_flag; 2763extern Lisp_Object Vpurify_flag;
2731extern Lisp_Object Vmemory_full; 2764extern Lisp_Object Vmemory_full;
2732extern Lisp_Object *stack_base; 2765extern Lisp_Object *stack_base;
@@ -2823,7 +2856,8 @@ extern void syms_of_chartab (void);
2823/* Defined in print.c */ 2856/* Defined in print.c */
2824extern Lisp_Object Vprin1_to_string_buffer; 2857extern Lisp_Object Vprin1_to_string_buffer;
2825extern Lisp_Object Vprint_level, Vprint_length; 2858extern Lisp_Object Vprint_level, Vprint_length;
2826extern void debug_print (Lisp_Object); 2859extern void debug_print (Lisp_Object) EXTERNALLY_VISIBLE;
2860extern void safe_debug_print (Lisp_Object) EXTERNALLY_VISIBLE;
2827EXFUN (Fprin1, 2); 2861EXFUN (Fprin1, 2);
2828EXFUN (Fprin1_to_string, 2); 2862EXFUN (Fprin1_to_string, 2);
2829EXFUN (Fprinc, 2); 2863EXFUN (Fprinc, 2);
@@ -3226,6 +3260,8 @@ extern Lisp_Object Qdisabled, QCfilter;
3226extern Lisp_Object Qabove_handle, Qhandle, Qbelow_handle; 3260extern Lisp_Object Qabove_handle, Qhandle, Qbelow_handle;
3227extern Lisp_Object Qup, Qdown, Qbottom, Qend_scroll; 3261extern Lisp_Object Qup, Qdown, Qbottom, Qend_scroll;
3228extern Lisp_Object Qtop, Qratio; 3262extern Lisp_Object Qtop, Qratio;
3263extern Lisp_Object Vsaved_region_selection;
3264extern Lisp_Object Vselect_active_regions;
3229extern Lisp_Object Vtty_erase_char, Vhelp_form, Vtop_level; 3265extern Lisp_Object Vtty_erase_char, Vhelp_form, Vtop_level;
3230extern Lisp_Object Vthrow_on_input; 3266extern Lisp_Object Vthrow_on_input;
3231extern int input_pending; 3267extern int input_pending;
@@ -3595,7 +3631,6 @@ extern void syms_of_xfns (void);
3595extern void syms_of_xsmfns (void); 3631extern void syms_of_xsmfns (void);
3596 3632
3597/* Defined in xselect.c */ 3633/* Defined in xselect.c */
3598EXFUN (Fx_send_client_event, 6);
3599extern void syms_of_xselect (void); 3634extern void syms_of_xselect (void);
3600 3635
3601/* Defined in xterm.c */ 3636/* Defined in xterm.c */