comparison src/buffer.c @ 39973:579177964efa

Avoid (most) uses of XCAR/XCDR as lvalues, for flexibility in experimenting with lisp system changes.
author Ken Raeburn <raeburn@raeburn.org>
date Tue, 16 Oct 2001 09:09:51 +0000
parents 820d9cd6761a
children a72c97b251de
comparison
equal deleted inserted replaced
39972:b2479b43184b 39973:579177964efa
1413 we cannot use Fdelq itself here because it allows quitting. */ 1413 we cannot use Fdelq itself here because it allows quitting. */
1414 1414
1415 if (NILP (prev)) 1415 if (NILP (prev))
1416 Vbuffer_alist = XCDR (Vbuffer_alist); 1416 Vbuffer_alist = XCDR (Vbuffer_alist);
1417 else 1417 else
1418 XCDR (prev) = XCDR (XCDR (prev)); 1418 XSETCDR (prev, XCDR (XCDR (prev)));
1419 1419
1420 XCDR (link) = Vbuffer_alist; 1420 XSETCDR (link, Vbuffer_alist);
1421 Vbuffer_alist = link; 1421 Vbuffer_alist = link;
1422 1422
1423 /* Now move this buffer to the front of frame_buffer_list also. */ 1423 /* Now move this buffer to the front of frame_buffer_list also. */
1424 1424
1425 prev = Qnil; 1425 prev = Qnil;
1437 { 1437 {
1438 if (NILP (prev)) 1438 if (NILP (prev))
1439 set_frame_buffer_list (frame, 1439 set_frame_buffer_list (frame,
1440 XCDR (frame_buffer_list (frame))); 1440 XCDR (frame_buffer_list (frame)));
1441 else 1441 else
1442 XCDR (prev) = XCDR (XCDR (prev)); 1442 XSETCDR (prev, XCDR (XCDR (prev)));
1443 1443
1444 XCDR (link) = frame_buffer_list (frame); 1444 XSETCDR (link, frame_buffer_list (frame));
1445 set_frame_buffer_list (frame, link); 1445 set_frame_buffer_list (frame, link);
1446 } 1446 }
1447 else 1447 else
1448 set_frame_buffer_list (frame, Fcons (buf, frame_buffer_list (frame))); 1448 set_frame_buffer_list (frame, Fcons (buf, frame_buffer_list (frame)));
1449 } 1449 }
1861 Lisp_Object aelt, link; 1861 Lisp_Object aelt, link;
1862 1862
1863 aelt = Frassq (buffer, Vbuffer_alist); 1863 aelt = Frassq (buffer, Vbuffer_alist);
1864 link = Fmemq (aelt, Vbuffer_alist); 1864 link = Fmemq (aelt, Vbuffer_alist);
1865 Vbuffer_alist = Fdelq (aelt, Vbuffer_alist); 1865 Vbuffer_alist = Fdelq (aelt, Vbuffer_alist);
1866 XCDR (link) = Qnil; 1866 XSETCDR (link, Qnil);
1867 Vbuffer_alist = nconc2 (Vbuffer_alist, link); 1867 Vbuffer_alist = nconc2 (Vbuffer_alist, link);
1868 1868
1869 frames_bury_buffer (buffer); 1869 frames_bury_buffer (buffer);
1870 } 1870 }
1871 1871
2284 tem = XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->cdr; 2284 tem = XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->cdr;
2285 /* Store the symbol's current value into the alist entry 2285 /* Store the symbol's current value into the alist entry
2286 it is currently set up for. This is so that, if the 2286 it is currently set up for. This is so that, if the
2287 local is marked permanent, and we make it local again 2287 local is marked permanent, and we make it local again
2288 later in Fkill_all_local_variables, we don't lose the value. */ 2288 later in Fkill_all_local_variables, we don't lose the value. */
2289 XCDR (XCAR (tem)) 2289 XSETCDR (XCAR (tem),
2290 = do_symval_forwarding (XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->realvalue); 2290 do_symval_forwarding (XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->realvalue));
2291 /* Switch to the symbol's default-value alist entry. */ 2291 /* Switch to the symbol's default-value alist entry. */
2292 XCAR (tem) = tem; 2292 XSETCAR (tem, tem);
2293 /* Mark it as current for buffer B. */ 2293 /* Mark it as current for buffer B. */
2294 XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->buffer = buffer; 2294 XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->buffer = buffer;
2295 /* Store the current value into any forwarding in the symbol. */ 2295 /* Store the current value into any forwarding in the symbol. */
2296 store_symval_forwarding (sym, 2296 store_symval_forwarding (sym,
2297 XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->realvalue, 2297 XBUFFER_LOCAL_VALUE (SYMBOL_VALUE (sym))->realvalue,
3006 int where = OVERLAY_POSITION (beg); 3006 int where = OVERLAY_POSITION (beg);
3007 Lisp_Object other, other_prev; 3007 Lisp_Object other, other_prev;
3008 3008
3009 /* Splice the cons cell TAIL out of overlays_before. */ 3009 /* Splice the cons cell TAIL out of overlays_before. */
3010 if (!NILP (prev)) 3010 if (!NILP (prev))
3011 XCDR (prev) = next; 3011 XSETCDR (prev, next);
3012 else 3012 else
3013 buf->overlays_before = next; 3013 buf->overlays_before = next;
3014 3014
3015 /* Search thru overlays_after for where to put it. */ 3015 /* Search thru overlays_after for where to put it. */
3016 other_prev = Qnil; 3016 other_prev = Qnil;
3028 if (OVERLAY_POSITION (otherbeg) >= where) 3028 if (OVERLAY_POSITION (otherbeg) >= where)
3029 break; 3029 break;
3030 } 3030 }
3031 3031
3032 /* Add TAIL to overlays_after before OTHER. */ 3032 /* Add TAIL to overlays_after before OTHER. */
3033 XCDR (tail) = other; 3033 XSETCDR (tail, other);
3034 if (!NILP (other_prev)) 3034 if (!NILP (other_prev))
3035 XCDR (other_prev) = tail; 3035 XSETCDR (other_prev, tail);
3036 else 3036 else
3037 buf->overlays_after = tail; 3037 buf->overlays_after = tail;
3038 tail = prev; 3038 tail = prev;
3039 } 3039 }
3040 else 3040 else
3083 int where = OVERLAY_POSITION (end); 3083 int where = OVERLAY_POSITION (end);
3084 Lisp_Object other, other_prev; 3084 Lisp_Object other, other_prev;
3085 3085
3086 /* Splice the cons cell TAIL out of overlays_after. */ 3086 /* Splice the cons cell TAIL out of overlays_after. */
3087 if (!NILP (prev)) 3087 if (!NILP (prev))
3088 XCDR (prev) = next; 3088 XSETCDR (prev, next);
3089 else 3089 else
3090 buf->overlays_after = next; 3090 buf->overlays_after = next;
3091 3091
3092 /* Search thru overlays_before for where to put it. */ 3092 /* Search thru overlays_before for where to put it. */
3093 other_prev = Qnil; 3093 other_prev = Qnil;
3105 if (OVERLAY_POSITION (otherend) <= where) 3105 if (OVERLAY_POSITION (otherend) <= where)
3106 break; 3106 break;
3107 } 3107 }
3108 3108
3109 /* Add TAIL to overlays_before before OTHER. */ 3109 /* Add TAIL to overlays_before before OTHER. */
3110 XCDR (tail) = other; 3110 XSETCDR (tail, other);
3111 if (!NILP (other_prev)) 3111 if (!NILP (other_prev))
3112 XCDR (other_prev) = tail; 3112 XSETCDR (other_prev, tail);
3113 else 3113 else
3114 buf->overlays_before = tail; 3114 buf->overlays_before = tail;
3115 tail = prev; 3115 tail = prev;
3116 } 3116 }
3117 } 3117 }
3839 CONSP (tail) && CONSP (XCDR (tail)); 3839 CONSP (tail) && CONSP (XCDR (tail));
3840 tail = XCDR (XCDR (tail))) 3840 tail = XCDR (XCDR (tail)))
3841 if (EQ (XCAR (tail), prop)) 3841 if (EQ (XCAR (tail), prop))
3842 { 3842 {
3843 changed = !EQ (XCAR (XCDR (tail)), value); 3843 changed = !EQ (XCAR (XCDR (tail)), value);
3844 XCAR (XCDR (tail)) = value; 3844 XSETCAR (XCDR (tail), value);
3845 goto found; 3845 goto found;
3846 } 3846 }
3847 /* It wasn't in the list, so add it to the front. */ 3847 /* It wasn't in the list, so add it to the front. */
3848 changed = !NILP (value); 3848 changed = !NILP (value);
3849 XOVERLAY (overlay)->plist 3849 XOVERLAY (overlay)->plist