Mercurial > emacs
comparison src/buffer.c @ 98070:b0d74e2658b7
(Fbuffer_swap_text): Reset window->point markers.
| author | Stefan Monnier <monnier@iro.umontreal.ca> |
|---|---|
| date | Sun, 07 Sep 2008 01:22:25 +0000 |
| parents | ec7f95140247 |
| children | 287704bda212 |
comparison
equal
deleted
inserted
replaced
| 98069:43a801a18b24 | 98070:b0d74e2658b7 |
|---|---|
| 2267 m->buffer = current_buffer; | 2267 m->buffer = current_buffer; |
| 2268 for (m = BUF_MARKERS (other_buffer); m; m = m->next) | 2268 for (m = BUF_MARKERS (other_buffer); m; m = m->next) |
| 2269 if (m->buffer == current_buffer) | 2269 if (m->buffer == current_buffer) |
| 2270 m->buffer = other_buffer; | 2270 m->buffer = other_buffer; |
| 2271 } | 2271 } |
| 2272 { /* Some of the C code expects that w->buffer == w->pointm->buffer. | |
| 2273 So since we just swapped the markers between the two buffers, we need | |
| 2274 to undo the effect of this swap for window markers. */ | |
| 2275 Lisp_Object w = Fselected_window (), ws = Qnil; | |
| 2276 Lisp_Object buf1, buf2; | |
| 2277 XSETBUFFER (buf1, current_buffer); XSETBUFFER (buf2, other_buffer); | |
| 2278 | |
| 2279 while (NILP (Fmemq (w, ws))) | |
| 2280 { | |
| 2281 ws = Fcons (w, ws); | |
| 2282 if (MARKERP (XWINDOW (w)->pointm) | |
| 2283 && (EQ (XWINDOW (w)->buffer, buf1) | |
| 2284 || EQ (XWINDOW (w)->buffer, buf2))) | |
| 2285 Fset_marker (XWINDOW (w)->pointm, | |
| 2286 make_number (BUF_BEGV (XBUFFER (XWINDOW (w)->buffer))), | |
| 2287 XWINDOW (w)->buffer); | |
| 2288 w = Fnext_window (w, Qt, Qt); | |
| 2289 } | |
| 2290 } | |
| 2291 | |
| 2272 if (current_buffer->text->intervals) | 2292 if (current_buffer->text->intervals) |
| 2273 (eassert (EQ (current_buffer->text->intervals->up.obj, buffer)), | 2293 (eassert (EQ (current_buffer->text->intervals->up.obj, buffer)), |
| 2274 XSETBUFFER (current_buffer->text->intervals->up.obj, current_buffer)); | 2294 XSETBUFFER (current_buffer->text->intervals->up.obj, current_buffer)); |
| 2275 if (other_buffer->text->intervals) | 2295 if (other_buffer->text->intervals) |
| 2276 (eassert (EQ (other_buffer->text->intervals->up.obj, Fcurrent_buffer ())), | 2296 (eassert (EQ (other_buffer->text->intervals->up.obj, Fcurrent_buffer ())), |
