Mercurial > emacs
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 |
