aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorKenichi Handa2010-07-08 17:09:35 +0900
committerKenichi Handa2010-07-08 17:09:35 +0900
commit80d4189187791916590b6c2b20b54588d432bb75 (patch)
treee59e52ee4a456f3235bff0e7fba4362681dba7dd /src/buffer.c
parenta7840ffb291e13c2a2386ccbd58089e1d7461c16 (diff)
parent0216627eb39f77958e30f4750f581714fdfd7faf (diff)
downloademacs-80d4189187791916590b6c2b20b54588d432bb75.tar.gz
emacs-80d4189187791916590b6c2b20b54588d432bb75.zip
merge trunk
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c238
1 files changed, 83 insertions, 155 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 589266f40e5..b8f19e96c43 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -106,13 +106,13 @@ static char buffer_permanent_local_flags[MAX_PER_BUFFER_VARS];
106int last_per_buffer_idx; 106int last_per_buffer_idx;
107 107
108EXFUN (Fset_buffer, 1); 108EXFUN (Fset_buffer, 1);
109void set_buffer_internal P_ ((struct buffer *b)); 109void set_buffer_internal (struct buffer *b);
110void set_buffer_internal_1 P_ ((struct buffer *b)); 110void set_buffer_internal_1 (struct buffer *b);
111static void call_overlay_mod_hooks P_ ((Lisp_Object list, Lisp_Object overlay, 111static void call_overlay_mod_hooks (Lisp_Object list, Lisp_Object overlay,
112 int after, Lisp_Object arg1, 112 int after, Lisp_Object arg1,
113 Lisp_Object arg2, Lisp_Object arg3)); 113 Lisp_Object arg2, Lisp_Object arg3);
114static void swap_out_buffer_local_variables P_ ((struct buffer *b)); 114static void swap_out_buffer_local_variables (struct buffer *b);
115static void reset_buffer_local_variables P_ ((struct buffer *b, int permanent_too)); 115static void reset_buffer_local_variables (struct buffer *b, int permanent_too);
116 116
117/* Alist of all buffer names vs the buffers. */ 117/* Alist of all buffer names vs the buffers. */
118/* This used to be a variable, but is no longer, 118/* This used to be a variable, but is no longer,
@@ -168,20 +168,19 @@ Lisp_Object Qmodification_hooks;
168Lisp_Object Qinsert_in_front_hooks; 168Lisp_Object Qinsert_in_front_hooks;
169Lisp_Object Qinsert_behind_hooks; 169Lisp_Object Qinsert_behind_hooks;
170 170
171static void alloc_buffer_text P_ ((struct buffer *, size_t)); 171static void alloc_buffer_text (struct buffer *, size_t);
172static void free_buffer_text P_ ((struct buffer *b)); 172static void free_buffer_text (struct buffer *b);
173static struct Lisp_Overlay * copy_overlays P_ ((struct buffer *, struct Lisp_Overlay *)); 173static struct Lisp_Overlay * copy_overlays (struct buffer *, struct Lisp_Overlay *);
174static void modify_overlay P_ ((struct buffer *, EMACS_INT, EMACS_INT)); 174static void modify_overlay (struct buffer *, EMACS_INT, EMACS_INT);
175static Lisp_Object buffer_lisp_local_variables P_ ((struct buffer *)); 175static Lisp_Object buffer_lisp_local_variables (struct buffer *);
176 176
177extern char * emacs_strerror P_ ((int)); 177extern char * emacs_strerror (int);
178 178
179/* For debugging; temporary. See set_buffer_internal. */ 179/* For debugging; temporary. See set_buffer_internal. */
180/* Lisp_Object Qlisp_mode, Vcheck_symbol; */ 180/* Lisp_Object Qlisp_mode, Vcheck_symbol; */
181 181
182void 182void
183nsberror (spec) 183nsberror (Lisp_Object spec)
184 Lisp_Object spec;
185{ 184{
186 if (STRINGP (spec)) 185 if (STRINGP (spec))
187 error ("No buffer named %s", SDATA (spec)); 186 error ("No buffer named %s", SDATA (spec));
@@ -248,9 +247,7 @@ frame parameter come first, followed by the rest of the buffers. */)
248 and don't ever QUIT. */ 247 and don't ever QUIT. */
249 248
250static Lisp_Object 249static Lisp_Object
251assoc_ignore_text_properties (key, list) 250assoc_ignore_text_properties (register Lisp_Object key, Lisp_Object list)
252 register Lisp_Object key;
253 Lisp_Object list;
254{ 251{
255 register Lisp_Object tail; 252 register Lisp_Object tail;
256 for (tail = list; CONSP (tail); tail = XCDR (tail)) 253 for (tail = list; CONSP (tail); tail = XCDR (tail))
@@ -312,8 +309,7 @@ See also `find-buffer-visiting'. */)
312} 309}
313 310
314Lisp_Object 311Lisp_Object
315get_truename_buffer (filename) 312get_truename_buffer (register Lisp_Object filename)
316 register Lisp_Object filename;
317{ 313{
318 register Lisp_Object tail, buf, tem; 314 register Lisp_Object tail, buf, tem;
319 315
@@ -437,9 +433,7 @@ even if it is dead. The return value is never nil. */)
437 LIST, but for buffer B. */ 433 LIST, but for buffer B. */
438 434
439static struct Lisp_Overlay * 435static struct Lisp_Overlay *
440copy_overlays (b, list) 436copy_overlays (struct buffer *b, struct Lisp_Overlay *list)
441 struct buffer *b;
442 struct Lisp_Overlay *list;
443{ 437{
444 Lisp_Object buffer; 438 Lisp_Object buffer;
445 struct Lisp_Overlay *result = NULL, *tail = NULL; 439 struct Lisp_Overlay *result = NULL, *tail = NULL;
@@ -489,8 +483,7 @@ copy_overlays (b, list)
489 copied. */ 483 copied. */
490 484
491static void 485static void
492clone_per_buffer_values (from, to) 486clone_per_buffer_values (struct buffer *from, struct buffer *to)
493 struct buffer *from, *to;
494{ 487{
495 Lisp_Object to_buffer; 488 Lisp_Object to_buffer;
496 int offset; 489 int offset;
@@ -521,7 +514,7 @@ clone_per_buffer_values (from, to)
521 PER_BUFFER_VALUE (to, offset) = obj; 514 PER_BUFFER_VALUE (to, offset) = obj;
522 } 515 }
523 516
524 bcopy (from->local_flags, to->local_flags, sizeof to->local_flags); 517 memcpy (to->local_flags, from->local_flags, sizeof to->local_flags);
525 518
526 to->overlays_before = copy_overlays (to, from->overlays_before); 519 to->overlays_before = copy_overlays (to, from->overlays_before);
527 to->overlays_after = copy_overlays (to, from->overlays_after); 520 to->overlays_after = copy_overlays (to, from->overlays_after);
@@ -658,8 +651,7 @@ CLONE nil means the indirect buffer's state is reset to default values. */)
658} 651}
659 652
660void 653void
661delete_all_overlays (b) 654delete_all_overlays (struct buffer *b)
662 struct buffer *b;
663{ 655{
664 Lisp_Object overlay; 656 Lisp_Object overlay;
665 657
@@ -689,8 +681,7 @@ delete_all_overlays (b)
689 claims it doesn't belong to it. */ 681 claims it doesn't belong to it. */
690 682
691void 683void
692reset_buffer (b) 684reset_buffer (register struct buffer *b)
693 register struct buffer *b;
694{ 685{
695 b->filename = Qnil; 686 b->filename = Qnil;
696 b->file_truename = Qnil; 687 b->file_truename = Qnil;
@@ -734,9 +725,7 @@ reset_buffer (b)
734 we preserve those. */ 725 we preserve those. */
735 726
736static void 727static void
737reset_buffer_local_variables (b, permanent_too) 728reset_buffer_local_variables (register struct buffer *b, int permanent_too)
738 register struct buffer *b;
739 int permanent_too;
740{ 729{
741 register int offset; 730 register int offset;
742 int i; 731 int i;
@@ -993,8 +982,7 @@ is the default binding of the variable. */)
993 in special slots in the buffer object. */ 982 in special slots in the buffer object. */
994 983
995static Lisp_Object 984static Lisp_Object
996buffer_lisp_local_variables (buf) 985buffer_lisp_local_variables (struct buffer *buf)
997 struct buffer *buf;
998{ 986{
999 Lisp_Object result = Qnil; 987 Lisp_Object result = Qnil;
1000 register Lisp_Object tail; 988 register Lisp_Object tail;
@@ -1293,7 +1281,7 @@ If BUFFER is omitted or nil, some interesting buffer is returned. */)
1293 (buffer, visible_ok, frame) 1281 (buffer, visible_ok, frame)
1294 register Lisp_Object buffer, visible_ok, frame; 1282 register Lisp_Object buffer, visible_ok, frame;
1295{ 1283{
1296 Lisp_Object Fset_buffer_major_mode (); 1284 Lisp_Object Fset_buffer_major_mode (Lisp_Object buffer);
1297 register Lisp_Object tail, buf, notsogood, tem, pred, add_ons; 1285 register Lisp_Object tail, buf, notsogood, tem, pred, add_ons;
1298 notsogood = Qnil; 1286 notsogood = Qnil;
1299 1287
@@ -1618,8 +1606,7 @@ with SIGHUP. */)
1618 means that other_buffer is more likely to choose a relevant buffer. */ 1606 means that other_buffer is more likely to choose a relevant buffer. */
1619 1607
1620void 1608void
1621record_buffer (buf) 1609record_buffer (Lisp_Object buf)
1622 Lisp_Object buf;
1623{ 1610{
1624 register Lisp_Object link, prev; 1611 register Lisp_Object link, prev;
1625 Lisp_Object frame; 1612 Lisp_Object frame;
@@ -1734,8 +1721,7 @@ the current buffer's major mode. */)
1734 If NORECORD is non-nil, don't call record_buffer. */ 1721 If NORECORD is non-nil, don't call record_buffer. */
1735 1722
1736Lisp_Object 1723Lisp_Object
1737switch_to_buffer_1 (buffer_or_name, norecord) 1724switch_to_buffer_1 (Lisp_Object buffer_or_name, Lisp_Object norecord)
1738 Lisp_Object buffer_or_name, norecord;
1739{ 1725{
1740 register Lisp_Object buffer; 1726 register Lisp_Object buffer;
1741 1727
@@ -1831,8 +1817,7 @@ DEFUN ("current-buffer", Fcurrent_buffer, Scurrent_buffer, 0, 0, 0,
1831 time, and that increments windows_or_buffers_changed. */ 1817 time, and that increments windows_or_buffers_changed. */
1832 1818
1833void 1819void
1834set_buffer_internal (b) 1820set_buffer_internal (register struct buffer *b)
1835 register struct buffer *b;
1836{ 1821{
1837 if (current_buffer != b) 1822 if (current_buffer != b)
1838 set_buffer_internal_1 (b); 1823 set_buffer_internal_1 (b);
@@ -1842,8 +1827,7 @@ set_buffer_internal (b)
1842 This is used by redisplay. */ 1827 This is used by redisplay. */
1843 1828
1844void 1829void
1845set_buffer_internal_1 (b) 1830set_buffer_internal_1 (register struct buffer *b)
1846 register struct buffer *b;
1847{ 1831{
1848 register struct buffer *old_buf; 1832 register struct buffer *old_buf;
1849 register Lisp_Object tail; 1833 register Lisp_Object tail;
@@ -1939,8 +1923,7 @@ set_buffer_internal_1 (b)
1939 This avoids certain things that don't need to be done within redisplay. */ 1923 This avoids certain things that don't need to be done within redisplay. */
1940 1924
1941void 1925void
1942set_buffer_temp (b) 1926set_buffer_temp (struct buffer *b)
1943 struct buffer *b;
1944{ 1927{
1945 register struct buffer *old_buf; 1928 register struct buffer *old_buf;
1946 1929
@@ -2019,8 +2002,7 @@ ends when the current command terminates. Use `switch-to-buffer' or
2019/* Set the current buffer to BUFFER provided it is alive. */ 2002/* Set the current buffer to BUFFER provided it is alive. */
2020 2003
2021Lisp_Object 2004Lisp_Object
2022set_buffer_if_live (buffer) 2005set_buffer_if_live (Lisp_Object buffer)
2023 Lisp_Object buffer;
2024{ 2006{
2025 if (! NILP (XBUFFER (buffer)->name)) 2007 if (! NILP (XBUFFER (buffer)->name))
2026 Fset_buffer (buffer); 2008 Fset_buffer (buffer);
@@ -2120,8 +2102,7 @@ so the buffer is truly empty after this. */)
2120} 2102}
2121 2103
2122void 2104void
2123validate_region (b, e) 2105validate_region (register Lisp_Object *b, register Lisp_Object *e)
2124 register Lisp_Object *b, *e;
2125{ 2106{
2126 CHECK_NUMBER_COERCE_MARKER (*b); 2107 CHECK_NUMBER_COERCE_MARKER (*b);
2127 CHECK_NUMBER_COERCE_MARKER (*e); 2108 CHECK_NUMBER_COERCE_MARKER (*e);
@@ -2141,8 +2122,7 @@ validate_region (b, e)
2141 and return the adjusted position. */ 2122 and return the adjusted position. */
2142 2123
2143static int 2124static int
2144advance_to_char_boundary (byte_pos) 2125advance_to_char_boundary (int byte_pos)
2145 int byte_pos;
2146{ 2126{
2147 int c; 2127 int c;
2148 2128
@@ -2175,7 +2155,7 @@ advance_to_char_boundary (byte_pos)
2175} 2155}
2176 2156
2177#ifdef REL_ALLOC 2157#ifdef REL_ALLOC
2178extern void r_alloc_reset_variable P_ ((POINTER_TYPE *, POINTER_TYPE *)); 2158extern void r_alloc_reset_variable (POINTER_TYPE *, POINTER_TYPE *);
2179#endif /* REL_ALLOC */ 2159#endif /* REL_ALLOC */
2180 2160
2181DEFUN ("buffer-swap-text", Fbuffer_swap_text, Sbuffer_swap_text, 2161DEFUN ("buffer-swap-text", Fbuffer_swap_text, Sbuffer_swap_text,
@@ -2644,8 +2624,7 @@ the normal hook `change-major-mode-hook'. */)
2644 for their current values. */ 2624 for their current values. */
2645 2625
2646static void 2626static void
2647swap_out_buffer_local_variables (b) 2627swap_out_buffer_local_variables (struct buffer *b)
2648 struct buffer *b;
2649{ 2628{
2650 Lisp_Object oalist, alist, buffer; 2629 Lisp_Object oalist, alist, buffer;
2651 2630
@@ -2690,14 +2669,8 @@ swap_out_buffer_local_variables (b)
2690 default (BEGV or ZV). */ 2669 default (BEGV or ZV). */
2691 2670
2692int 2671int
2693overlays_at (pos, extend, vec_ptr, len_ptr, next_ptr, prev_ptr, change_req) 2672overlays_at (EMACS_INT pos, int extend, Lisp_Object **vec_ptr, int *len_ptr,
2694 EMACS_INT pos; 2673 EMACS_INT *next_ptr, EMACS_INT *prev_ptr, int change_req)
2695 int extend;
2696 Lisp_Object **vec_ptr;
2697 int *len_ptr;
2698 EMACS_INT *next_ptr;
2699 EMACS_INT *prev_ptr;
2700 int change_req;
2701{ 2674{
2702 Lisp_Object overlay, start, end; 2675 Lisp_Object overlay, start, end;
2703 struct Lisp_Overlay *tail; 2676 struct Lisp_Overlay *tail;
@@ -2835,13 +2808,8 @@ overlays_at (pos, extend, vec_ptr, len_ptr, next_ptr, prev_ptr, change_req)
2835 But we still return the total number of overlays. */ 2808 But we still return the total number of overlays. */
2836 2809
2837static int 2810static int
2838overlays_in (beg, end, extend, vec_ptr, len_ptr, next_ptr, prev_ptr) 2811overlays_in (int beg, int end, int extend, Lisp_Object **vec_ptr, int *len_ptr,
2839 int beg, end; 2812 int *next_ptr, int *prev_ptr)
2840 int extend;
2841 Lisp_Object **vec_ptr;
2842 int *len_ptr;
2843 int *next_ptr;
2844 int *prev_ptr;
2845{ 2813{
2846 Lisp_Object overlay, ostart, oend; 2814 Lisp_Object overlay, ostart, oend;
2847 struct Lisp_Overlay *tail; 2815 struct Lisp_Overlay *tail;
@@ -2962,8 +2930,7 @@ overlays_in (beg, end, extend, vec_ptr, len_ptr, next_ptr, prev_ptr)
2962 `mouse-face' property overlapping OVERLAY. */ 2930 `mouse-face' property overlapping OVERLAY. */
2963 2931
2964int 2932int
2965mouse_face_overlay_overlaps (overlay) 2933mouse_face_overlay_overlaps (Lisp_Object overlay)
2966 Lisp_Object overlay;
2967{ 2934{
2968 int start = OVERLAY_POSITION (OVERLAY_START (overlay)); 2935 int start = OVERLAY_POSITION (OVERLAY_START (overlay));
2969 int end = OVERLAY_POSITION (OVERLAY_END (overlay)); 2936 int end = OVERLAY_POSITION (OVERLAY_END (overlay));
@@ -2992,8 +2959,7 @@ mouse_face_overlay_overlaps (overlay)
2992 2959
2993/* Fast function to just test if we're at an overlay boundary. */ 2960/* Fast function to just test if we're at an overlay boundary. */
2994int 2961int
2995overlay_touches_p (pos) 2962overlay_touches_p (int pos)
2996 int pos;
2997{ 2963{
2998 Lisp_Object overlay; 2964 Lisp_Object overlay;
2999 struct Lisp_Overlay *tail; 2965 struct Lisp_Overlay *tail;
@@ -3038,8 +3004,7 @@ struct sortvec
3038}; 3004};
3039 3005
3040static int 3006static int
3041compare_overlays (v1, v2) 3007compare_overlays (const void *v1, const void *v2)
3042 const void *v1, *v2;
3043{ 3008{
3044 const struct sortvec *s1 = (const struct sortvec *) v1; 3009 const struct sortvec *s1 = (const struct sortvec *) v1;
3045 const struct sortvec *s2 = (const struct sortvec *) v2; 3010 const struct sortvec *s2 = (const struct sortvec *) v2;
@@ -3056,10 +3021,7 @@ compare_overlays (v1, v2)
3056 The return value is the new size; this may be smaller than the original 3021 The return value is the new size; this may be smaller than the original
3057 size if some of the overlays were invalid or were window-specific. */ 3022 size if some of the overlays were invalid or were window-specific. */
3058int 3023int
3059sort_overlays (overlay_vec, noverlays, w) 3024sort_overlays (Lisp_Object *overlay_vec, int noverlays, struct window *w)
3060 Lisp_Object *overlay_vec;
3061 int noverlays;
3062 struct window *w;
3063{ 3025{
3064 int i, j; 3026 int i, j;
3065 struct sortvec *sortvec; 3027 struct sortvec *sortvec;
@@ -3139,8 +3101,7 @@ static int overlay_str_len;
3139 3101
3140/* A comparison function suitable for passing to qsort. */ 3102/* A comparison function suitable for passing to qsort. */
3141static int 3103static int
3142cmp_for_strings (as1, as2) 3104cmp_for_strings (const void *as1, const void *as2)
3143 char *as1, *as2;
3144{ 3105{
3145 struct sortstr *s1 = (struct sortstr *)as1; 3106 struct sortstr *s1 = (struct sortstr *)as1;
3146 struct sortstr *s2 = (struct sortstr *)as2; 3107 struct sortstr *s2 = (struct sortstr *)as2;
@@ -3152,10 +3113,7 @@ cmp_for_strings (as1, as2)
3152} 3113}
3153 3114
3154static void 3115static void
3155record_overlay_string (ssl, str, str2, pri, size) 3116record_overlay_string (struct sortstrlist *ssl, Lisp_Object str, Lisp_Object str2, Lisp_Object pri, int size)
3156 struct sortstrlist *ssl;
3157 Lisp_Object str, str2, pri;
3158 int size;
3159{ 3117{
3160 int nbytes; 3118 int nbytes;
3161 3119
@@ -3211,10 +3169,7 @@ record_overlay_string (ssl, str, str2, pri, size)
3211 subsequent calls. */ 3169 subsequent calls. */
3212 3170
3213int 3171int
3214overlay_strings (pos, w, pstr) 3172overlay_strings (EMACS_INT pos, struct window *w, unsigned char **pstr)
3215 EMACS_INT pos;
3216 struct window *w;
3217 unsigned char **pstr;
3218{ 3173{
3219 Lisp_Object overlay, window, str; 3174 Lisp_Object overlay, window, str;
3220 struct Lisp_Overlay *ov; 3175 struct Lisp_Overlay *ov;
@@ -3337,9 +3292,7 @@ overlay_strings (pos, w, pstr)
3337/* Shift overlays in BUF's overlay lists, to center the lists at POS. */ 3292/* Shift overlays in BUF's overlay lists, to center the lists at POS. */
3338 3293
3339void 3294void
3340recenter_overlay_lists (buf, pos) 3295recenter_overlay_lists (struct buffer *buf, EMACS_INT pos)
3341 struct buffer *buf;
3342 EMACS_INT pos;
3343{ 3296{
3344 Lisp_Object overlay, beg, end; 3297 Lisp_Object overlay, beg, end;
3345 struct Lisp_Overlay *prev, *tail, *next; 3298 struct Lisp_Overlay *prev, *tail, *next;
@@ -3488,9 +3441,7 @@ recenter_overlay_lists (buf, pos)
3488} 3441}
3489 3442
3490void 3443void
3491adjust_overlays_for_insert (pos, length) 3444adjust_overlays_for_insert (EMACS_INT pos, EMACS_INT length)
3492 EMACS_INT pos;
3493 EMACS_INT length;
3494{ 3445{
3495 /* After an insertion, the lists are still sorted properly, 3446 /* After an insertion, the lists are still sorted properly,
3496 but we may need to update the value of the overlay center. */ 3447 but we may need to update the value of the overlay center. */
@@ -3499,9 +3450,7 @@ adjust_overlays_for_insert (pos, length)
3499} 3450}
3500 3451
3501void 3452void
3502adjust_overlays_for_delete (pos, length) 3453adjust_overlays_for_delete (EMACS_INT pos, EMACS_INT length)
3503 EMACS_INT pos;
3504 EMACS_INT length;
3505{ 3454{
3506 if (current_buffer->overlay_center < pos) 3455 if (current_buffer->overlay_center < pos)
3507 /* The deletion was to our right. No change needed; the before- and 3456 /* The deletion was to our right. No change needed; the before- and
@@ -3526,8 +3475,7 @@ adjust_overlays_for_delete (pos, length)
3526 Such an overlay might even have negative size at this point. 3475 Such an overlay might even have negative size at this point.
3527 If so, we'll make the overlay empty. */ 3476 If so, we'll make the overlay empty. */
3528void 3477void
3529fix_start_end_in_overlays (start, end) 3478fix_start_end_in_overlays (register int start, register int end)
3530 register int start, end;
3531{ 3479{
3532 Lisp_Object overlay; 3480 Lisp_Object overlay;
3533 struct Lisp_Overlay *before_list, *after_list; 3481 struct Lisp_Overlay *before_list, *after_list;
@@ -3673,9 +3621,7 @@ fix_start_end_in_overlays (start, end)
3673 was at PREV, and now is at POS. */ 3621 was at PREV, and now is at POS. */
3674 3622
3675void 3623void
3676fix_overlays_before (bp, prev, pos) 3624fix_overlays_before (struct buffer *bp, EMACS_INT prev, EMACS_INT pos)
3677 struct buffer *bp;
3678 EMACS_INT prev, pos;
3679{ 3625{
3680 /* If parent is nil, replace overlays_before; otherwise, parent->next. */ 3626 /* If parent is nil, replace overlays_before; otherwise, parent->next. */
3681 struct Lisp_Overlay *tail = bp->overlays_before, *parent = NULL, *right_pair; 3627 struct Lisp_Overlay *tail = bp->overlays_before, *parent = NULL, *right_pair;
@@ -3841,9 +3787,7 @@ for the rear of the overlay advance when text is inserted there
3841/* Mark a section of BUF as needing redisplay because of overlays changes. */ 3787/* Mark a section of BUF as needing redisplay because of overlays changes. */
3842 3788
3843static void 3789static void
3844modify_overlay (buf, start, end) 3790modify_overlay (struct buffer *buf, EMACS_INT start, EMACS_INT end)
3845 struct buffer *buf;
3846 EMACS_INT start, end;
3847{ 3791{
3848 if (start > end) 3792 if (start > end)
3849 { 3793 {
@@ -3870,11 +3814,10 @@ modify_overlay (buf, start, end)
3870} 3814}
3871 3815
3872 3816
3873Lisp_Object Fdelete_overlay (); 3817Lisp_Object Fdelete_overlay (Lisp_Object overlay);
3874 3818
3875static struct Lisp_Overlay * 3819static struct Lisp_Overlay *
3876unchain_overlay (list, overlay) 3820unchain_overlay (struct Lisp_Overlay *list, struct Lisp_Overlay *overlay)
3877 struct Lisp_Overlay *list, *overlay;
3878{ 3821{
3879 struct Lisp_Overlay *tmp, *prev; 3822 struct Lisp_Overlay *tmp, *prev;
3880 for (tmp = list, prev = NULL; tmp; prev = tmp, tmp = tmp->next) 3823 for (tmp = list, prev = NULL; tmp; prev = tmp, tmp = tmp->next)
@@ -4333,8 +4276,7 @@ static int last_overlay_modification_hooks_used;
4333 to the end of last_overlay_modification_hooks. */ 4276 to the end of last_overlay_modification_hooks. */
4334 4277
4335static void 4278static void
4336add_overlay_mod_hooklist (functionlist, overlay) 4279add_overlay_mod_hooklist (Lisp_Object functionlist, Lisp_Object overlay)
4337 Lisp_Object functionlist, overlay;
4338{ 4280{
4339 int oldsize = XVECTOR (last_overlay_modification_hooks)->size; 4281 int oldsize = XVECTOR (last_overlay_modification_hooks)->size;
4340 4282
@@ -4362,10 +4304,8 @@ add_overlay_mod_hooklist (functionlist, overlay)
4362 and the length of deleted or replaced old text. */ 4304 and the length of deleted or replaced old text. */
4363 4305
4364void 4306void
4365report_overlay_modification (start, end, after, arg1, arg2, arg3) 4307report_overlay_modification (Lisp_Object start, Lisp_Object end, int after,
4366 Lisp_Object start, end; 4308 Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3)
4367 int after;
4368 Lisp_Object arg1, arg2, arg3;
4369{ 4309{
4370 Lisp_Object prop, overlay; 4310 Lisp_Object prop, overlay;
4371 struct Lisp_Overlay *tail; 4311 struct Lisp_Overlay *tail;
@@ -4473,8 +4413,8 @@ report_overlay_modification (start, end, after, arg1, arg2, arg3)
4473 Lisp_Object *copy = (Lisp_Object *) alloca (size * sizeof (Lisp_Object)); 4413 Lisp_Object *copy = (Lisp_Object *) alloca (size * sizeof (Lisp_Object));
4474 int i; 4414 int i;
4475 4415
4476 bcopy (XVECTOR (last_overlay_modification_hooks)->contents, 4416 memcpy (copy, XVECTOR (last_overlay_modification_hooks)->contents,
4477 copy, size * sizeof (Lisp_Object)); 4417 size * sizeof (Lisp_Object));
4478 gcpro1.var = copy; 4418 gcpro1.var = copy;
4479 gcpro1.nvars = size; 4419 gcpro1.nvars = size;
4480 4420
@@ -4490,10 +4430,8 @@ report_overlay_modification (start, end, after, arg1, arg2, arg3)
4490} 4430}
4491 4431
4492static void 4432static void
4493call_overlay_mod_hooks (list, overlay, after, arg1, arg2, arg3) 4433call_overlay_mod_hooks (Lisp_Object list, Lisp_Object overlay, int after,
4494 Lisp_Object list, overlay; 4434 Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3)
4495 int after;
4496 Lisp_Object arg1, arg2, arg3;
4497{ 4435{
4498 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; 4436 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
4499 4437
@@ -4513,8 +4451,7 @@ call_overlay_mod_hooks (list, overlay, after, arg1, arg2, arg3)
4513/* Delete any zero-sized overlays at position POS, if the `evaporate' 4451/* Delete any zero-sized overlays at position POS, if the `evaporate'
4514 property is set. */ 4452 property is set. */
4515void 4453void
4516evaporate_overlays (pos) 4454evaporate_overlays (EMACS_INT pos)
4517 EMACS_INT pos;
4518{ 4455{
4519 Lisp_Object overlay, hit_list; 4456 Lisp_Object overlay, hit_list;
4520 struct Lisp_Overlay *tail; 4457 struct Lisp_Overlay *tail;
@@ -4552,9 +4489,7 @@ evaporate_overlays (pos)
4552 in the slot with offset OFFSET. */ 4489 in the slot with offset OFFSET. */
4553 4490
4554void 4491void
4555buffer_slot_type_mismatch (newval, type) 4492buffer_slot_type_mismatch (Lisp_Object newval, int type)
4556 Lisp_Object newval;
4557 int type;
4558{ 4493{
4559 Lisp_Object predicate; 4494 Lisp_Object predicate;
4560 4495
@@ -4693,13 +4628,13 @@ static int mmap_initialized_p;
4693 4628
4694/* Function prototypes. */ 4629/* Function prototypes. */
4695 4630
4696static int mmap_free_1 P_ ((struct mmap_region *)); 4631static int mmap_free_1 (struct mmap_region *);
4697static int mmap_enlarge P_ ((struct mmap_region *, int)); 4632static int mmap_enlarge (struct mmap_region *, int);
4698static struct mmap_region *mmap_find P_ ((POINTER_TYPE *, POINTER_TYPE *)); 4633static struct mmap_region *mmap_find (POINTER_TYPE *, POINTER_TYPE *);
4699static POINTER_TYPE *mmap_alloc P_ ((POINTER_TYPE **, size_t)); 4634static POINTER_TYPE *mmap_alloc (POINTER_TYPE **, size_t);
4700static POINTER_TYPE *mmap_realloc P_ ((POINTER_TYPE **, size_t)); 4635static POINTER_TYPE *mmap_realloc (POINTER_TYPE **, size_t);
4701static void mmap_free P_ ((POINTER_TYPE **ptr)); 4636static void mmap_free (POINTER_TYPE **ptr);
4702static void mmap_init P_ ((void)); 4637static void mmap_init (void);
4703 4638
4704 4639
4705/* Return a region overlapping address range START...END, or null if 4640/* Return a region overlapping address range START...END, or null if
@@ -4942,7 +4877,7 @@ mmap_realloc (var, nbytes)
4942 } 4877 }
4943 else if (mmap_alloc (var, nbytes)) 4878 else if (mmap_alloc (var, nbytes))
4944 { 4879 {
4945 bcopy (old_ptr, *var, r->nbytes_specified); 4880 memcpy (*var, old_ptr, r->nbytes_specified);
4946 mmap_free_1 (MMAP_REGION (old_ptr)); 4881 mmap_free_1 (MMAP_REGION (old_ptr));
4947 result = *var; 4882 result = *var;
4948 r = MMAP_REGION (result); 4883 r = MMAP_REGION (result);
@@ -5032,18 +4967,16 @@ mmap_init ()
5032 ***********************************************************************/ 4967 ***********************************************************************/
5033 4968
5034#ifdef REL_ALLOC 4969#ifdef REL_ALLOC
5035extern POINTER_TYPE *r_alloc P_ ((POINTER_TYPE **, size_t)); 4970extern POINTER_TYPE *r_alloc (POINTER_TYPE **, size_t);
5036extern POINTER_TYPE *r_re_alloc P_ ((POINTER_TYPE **, size_t)); 4971extern POINTER_TYPE *r_re_alloc (POINTER_TYPE **, size_t);
5037extern void r_alloc_free P_ ((POINTER_TYPE **ptr)); 4972extern void r_alloc_free (POINTER_TYPE **ptr);
5038#endif /* REL_ALLOC */ 4973#endif /* REL_ALLOC */
5039 4974
5040 4975
5041/* Allocate NBYTES bytes for buffer B's text buffer. */ 4976/* Allocate NBYTES bytes for buffer B's text buffer. */
5042 4977
5043static void 4978static void
5044alloc_buffer_text (b, nbytes) 4979alloc_buffer_text (struct buffer *b, size_t nbytes)
5045 struct buffer *b;
5046 size_t nbytes;
5047{ 4980{
5048 POINTER_TYPE *p; 4981 POINTER_TYPE *p;
5049 4982
@@ -5098,8 +5031,7 @@ enlarge_buffer_text (struct buffer *b, EMACS_INT delta)
5098/* Free buffer B's text buffer. */ 5031/* Free buffer B's text buffer. */
5099 5032
5100static void 5033static void
5101free_buffer_text (b) 5034free_buffer_text (struct buffer *b)
5102 struct buffer *b;
5103{ 5035{
5104 BLOCK_INPUT; 5036 BLOCK_INPUT;
5105 5037
@@ -5122,11 +5054,11 @@ free_buffer_text (b)
5122 ***********************************************************************/ 5054 ***********************************************************************/
5123 5055
5124void 5056void
5125init_buffer_once () 5057init_buffer_once (void)
5126{ 5058{
5127 int idx; 5059 int idx;
5128 5060
5129 bzero (buffer_permanent_local_flags, sizeof buffer_permanent_local_flags); 5061 memset (buffer_permanent_local_flags, 0, sizeof buffer_permanent_local_flags);
5130 5062
5131 /* Make sure all markable slots in buffer_defaults 5063 /* Make sure all markable slots in buffer_defaults
5132 are initialized reasonably, so mark_buffer won't choke. */ 5064 are initialized reasonably, so mark_buffer won't choke. */
@@ -5214,7 +5146,7 @@ init_buffer_once ()
5214 if (sizeof (EMACS_INT) != sizeof (Lisp_Object)) abort (); 5146 if (sizeof (EMACS_INT) != sizeof (Lisp_Object)) abort ();
5215 5147
5216 /* 0 means not a lisp var, -1 means always local, else mask */ 5148 /* 0 means not a lisp var, -1 means always local, else mask */
5217 bzero (&buffer_local_flags, sizeof buffer_local_flags); 5149 memset (&buffer_local_flags, 0, sizeof buffer_local_flags);
5218 XSETINT (buffer_local_flags.filename, -1); 5150 XSETINT (buffer_local_flags.filename, -1);
5219 XSETINT (buffer_local_flags.directory, -1); 5151 XSETINT (buffer_local_flags.directory, -1);
5220 XSETINT (buffer_local_flags.backed_up, -1); 5152 XSETINT (buffer_local_flags.backed_up, -1);
@@ -5318,7 +5250,7 @@ init_buffer_once ()
5318} 5250}
5319 5251
5320void 5252void
5321init_buffer () 5253init_buffer (void)
5322{ 5254{
5323 char *pwd; 5255 char *pwd;
5324 Lisp_Object temp; 5256 Lisp_Object temp;
@@ -5402,12 +5334,8 @@ init_buffer ()
5402 } while (0) 5334 } while (0)
5403 5335
5404static void 5336static void
5405defvar_per_buffer (bo_fwd, namestring, address, type, doc) 5337defvar_per_buffer (struct Lisp_Buffer_Objfwd *bo_fwd, char *namestring,
5406 struct Lisp_Buffer_Objfwd *bo_fwd; 5338 Lisp_Object *address, Lisp_Object type, char *doc)
5407 char *namestring;
5408 Lisp_Object *address;
5409 Lisp_Object type;
5410 char *doc;
5411{ 5339{
5412 struct Lisp_Symbol *sym; 5340 struct Lisp_Symbol *sym;
5413 int offset; 5341 int offset;
@@ -5435,7 +5363,7 @@ defvar_per_buffer (bo_fwd, namestring, address, type, doc)
5435 5363
5436/* initialize the buffer routines */ 5364/* initialize the buffer routines */
5437void 5365void
5438syms_of_buffer () 5366syms_of_buffer (void)
5439{ 5367{
5440 staticpro (&last_overlay_modification_hooks); 5368 staticpro (&last_overlay_modification_hooks);
5441 last_overlay_modification_hooks 5369 last_overlay_modification_hooks
@@ -6338,7 +6266,7 @@ The function `kill-all-local-variables' runs this before doing anything else. *
6338} 6266}
6339 6267
6340void 6268void
6341keys_of_buffer () 6269keys_of_buffer (void)
6342{ 6270{
6343 initial_define_key (control_x_map, 'b', "switch-to-buffer"); 6271 initial_define_key (control_x_map, 'b', "switch-to-buffer");
6344 initial_define_key (control_x_map, 'k', "kill-buffer"); 6272 initial_define_key (control_x_map, 'k', "kill-buffer");