X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=src%2Fextents.h;h=2a2ab9dba3521f21caa8f21f5cf3d1bd5f1f4e9c;hp=e9f1dffdadc80a57f596ceab1ad22aba16474721;hb=b5eeb6918c29470b36f8461c402eb0c65cb19bd2;hpb=6883ee56ec887c2c48abe5b06b5e66aa74031910 diff --git a/src/extents.h b/src/extents.h index e9f1dff..2a2ab9d 100644 --- a/src/extents.h +++ b/src/extents.h @@ -27,7 +27,6 @@ DECLARE_LRECORD (extent, struct extent); #define XEXTENT(x) XRECORD (x, extent, struct extent) #define XSETEXTENT(x, p) XSETRECORD (x, p, extent) #define EXTENTP(x) RECORDP (x, extent) -#define GC_EXTENTP(x) GC_RECORDP (x, extent) #define CHECK_EXTENT(x) CHECK_RECORD (x, extent) #define CONCHECK_EXTENT(x) CONCHECK_RECORD (x, extent) @@ -82,17 +81,14 @@ struct extent unsigned int has_aux :1; /* 6 extent has an aux. structure */ unsigned int start_open :1; /* 7 insertion behavior at start */ unsigned int end_open :1; /* 8 insertion behavior at end */ - unsigned int unused9 :1; /* 9 unused */ - unsigned int unique :1; /* 10 there may be only one attached */ - unsigned int duplicable :1; /* 11 copied to strings by kill/undo */ - unsigned int REPLICATING :1; /* 12 invoke old extent-replica behav.*/ - /* Not used any more */ - unsigned int detachable :1; /* 13 extent detaches if text deleted */ - unsigned int internal :1; /* 14 used by map-extents etc. */ - unsigned int in_red_event :1; /* 15 An event has been spawned for + unsigned int unique :1; /* 9 there may be only one attached */ + unsigned int duplicable :1; /* 10 copied to strings by kill/undo */ + unsigned int detachable :1; /* 11 extent detaches if text deleted */ + unsigned int internal :1; /* 12 used by map-extents etc. */ + unsigned int in_red_event :1; /* 13 An event has been spawned for initial redisplay. - Not exported to the lisp level */ - unsigned int unused16 :1; /* 16 unused */ + (not exported to lisp) */ + unsigned int unused16 :1; /* 16 unused bits */ /* --- Adding more flags will cause the extent struct to grow by another word. It's not clear that this would make a difference, however, because on 32-bit machines things tend to get allocated in chunks @@ -106,8 +102,8 @@ struct extent #define extent_object(e) ((e)->object) #define extent_start(e) ((e)->start + 0) #define extent_end(e) ((e)->end + 0) -#define set_extent_start(e, val) ((e)->start = (val)) -#define set_extent_end(e, val) ((e)->end = (val)) +#define set_extent_start(e, val) ((void) ((e)->start = (val))) +#define set_extent_end(e, val) ((void) ((e)->end = (val))) #define extent_endpoint(e, endp) ((endp) ? extent_end (e) : extent_start (e)) #define set_extent_endpoint(e, val, endp) \ ((endp) ? set_extent_end (e, val) : set_extent_start (e, val)) @@ -139,6 +135,7 @@ struct extent_auxiliary Lisp_Object read_only; Lisp_Object mouse_face; Lisp_Object initial_redisplay_function; + Lisp_Object before_change_functions, after_change_functions; int priority; }; @@ -149,7 +146,6 @@ DECLARE_LRECORD (extent_auxiliary, struct extent_auxiliary); XRECORD (x, extent_auxiliary, struct extent_auxiliary) #define XSETEXTENT_AUXILIARY(x, p) XSETRECORD (x, p, extent_auxiliary) #define EXTENT_AUXILIARYP(x) RECORDP (x, extent_auxiliary) -#define GC_EXTENT_AUXILIARYP(x) GC_RECORDP (x, extent_auxiliary) #define CHECK_EXTENT_AUXILIARY(x) CHECK_RECORD (x, extent_auxiliary) #define CONCHECK_EXTENT_AUXILIARY(x) CONCHECK_RECORD (x, extent_auxiliary) @@ -165,7 +161,6 @@ DECLARE_LRECORD (extent_info, struct extent_info); #define XEXTENT_INFO(x) XRECORD (x, extent_info, struct extent_info) #define XSETEXTENT_INFO(x, p) XSETRECORD (x, p, extent_info) #define EXTENT_INFOP(x) RECORDP (x, extent_info) -#define GC_EXTENT_INFOP(x) GC_RECORDP (x, extent_info) #define CHECK_EXTENT_INFO(x) CHECK_RECORD (x, extent_info) #define CONCHECK_EXTENT_INFO(x) CONCHECK_RECORD (x, extent_info) @@ -230,6 +225,8 @@ extent_aux_or_default (EXTENT e) #define extent_read_only(e) extent_aux_field (e, read_only) #define extent_mouse_face(e) extent_aux_field (e, mouse_face) #define extent_initial_redisplay_function(e) extent_aux_field (e, initial_redisplay_function) +#define extent_before_change_functions(e) extent_aux_field (e, before_change_functions) +#define extent_after_change_functions(e) extent_aux_field (e, after_change_functions) #define set_extent_begin_glyph(e, value) \ set_extent_aux_field (e, begin_glyph, value) @@ -246,6 +243,10 @@ extent_aux_or_default (EXTENT e) /* Use Fset_extent_initial_redisplay_function unless you know what you're doing */ #define set_extent_initial_redisplay_function(e, value) \ set_extent_aux_field (e, initial_redisplay_function, value) +#define set_extent_before_change_functions(e, value) \ + set_extent_aux_field (e, before_change_functions, value) +#define set_extent_after_change_functions(e, value) \ + set_extent_aux_field (e, after_change_functions, value) #define extent_face(e) extent_normal_field (e, face) #define extent_begin_glyph_layout(e) extent_normal_field (e, begin_glyph_layout) @@ -366,6 +367,7 @@ void process_extents_for_insertion (Lisp_Object object, Bytind opoint, Bytecount length); void process_extents_for_deletion (Lisp_Object object, Bytind from, Bytind to, int destroy_them); +void report_extent_modification (Lisp_Object, Bufpos, Bufpos, int); void set_extent_glyph (EXTENT extent, Lisp_Object glyph, int endp, glyph_layout layout);