Mercurial > emacs
comparison src/buffer.c @ 99757:270d85d8daeb
(Fbuffer_swap_text): Remove redundant marker manipulation.
Fix copy/paste typo. Add checks.
| author | Stefan Monnier <monnier@iro.umontreal.ca> |
|---|---|
| date | Fri, 21 Nov 2008 05:33:29 +0000 |
| parents | df0a1afd03b2 |
| children | 5ed566a3bada |
comparison
equal
deleted
inserted
replaced
| 99756:abaa7407abf7 | 99757:270d85d8daeb |
|---|---|
| 2232 swapfield (overlays_before, struct Lisp_Overlay *); | 2232 swapfield (overlays_before, struct Lisp_Overlay *); |
| 2233 swapfield (overlays_after, struct Lisp_Overlay *); | 2233 swapfield (overlays_after, struct Lisp_Overlay *); |
| 2234 swapfield (overlay_center, EMACS_INT); | 2234 swapfield (overlay_center, EMACS_INT); |
| 2235 swapfield (undo_list, Lisp_Object); | 2235 swapfield (undo_list, Lisp_Object); |
| 2236 swapfield (mark, Lisp_Object); | 2236 swapfield (mark, Lisp_Object); |
| 2237 if (MARKERP (current_buffer->mark) && XMARKER (current_buffer->mark)->buffer) | |
| 2238 XMARKER (current_buffer->mark)->buffer = current_buffer; | |
| 2239 if (MARKERP (other_buffer->mark) && XMARKER (other_buffer->mark)->buffer) | |
| 2240 XMARKER (other_buffer->mark)->buffer = other_buffer; | |
| 2241 swapfield (enable_multibyte_characters, Lisp_Object); | 2237 swapfield (enable_multibyte_characters, Lisp_Object); |
| 2242 /* FIXME: Not sure what we should do with these *_marker fields. | 2238 /* FIXME: Not sure what we should do with these *_marker fields. |
| 2243 Hopefully they're just nil anyway. */ | 2239 Hopefully they're just nil anyway. */ |
| 2244 swapfield (pt_marker, Lisp_Object); | 2240 swapfield (pt_marker, Lisp_Object); |
| 2245 swapfield (begv_marker, Lisp_Object); | 2241 swapfield (begv_marker, Lisp_Object); |
| 2250 current_buffer->text->modiff++; other_buffer->text->modiff++; | 2246 current_buffer->text->modiff++; other_buffer->text->modiff++; |
| 2251 current_buffer->text->chars_modiff++; other_buffer->text->chars_modiff++; | 2247 current_buffer->text->chars_modiff++; other_buffer->text->chars_modiff++; |
| 2252 current_buffer->text->overlay_modiff++; other_buffer->text->overlay_modiff++; | 2248 current_buffer->text->overlay_modiff++; other_buffer->text->overlay_modiff++; |
| 2253 current_buffer->text->beg_unchanged = current_buffer->text->gpt; | 2249 current_buffer->text->beg_unchanged = current_buffer->text->gpt; |
| 2254 current_buffer->text->end_unchanged = current_buffer->text->gpt; | 2250 current_buffer->text->end_unchanged = current_buffer->text->gpt; |
| 2255 other_buffer->text->beg_unchanged = current_buffer->text->gpt; | 2251 other_buffer->text->beg_unchanged = other_buffer->text->gpt; |
| 2256 other_buffer->text->end_unchanged = current_buffer->text->gpt; | 2252 other_buffer->text->end_unchanged = other_buffer->text->gpt; |
| 2257 { | 2253 { |
| 2258 struct Lisp_Marker *m; | 2254 struct Lisp_Marker *m; |
| 2259 for (m = BUF_MARKERS (current_buffer); m; m = m->next) | 2255 for (m = BUF_MARKERS (current_buffer); m; m = m->next) |
| 2260 if (m->buffer == other_buffer) | 2256 if (m->buffer == other_buffer) |
| 2261 m->buffer = current_buffer; | 2257 m->buffer = current_buffer; |
| 2258 else | |
| 2259 /* Since there's no indirect buffer in sight, markers on | |
| 2260 BUF_MARKERS(buf) should either be for `buf' or dead. */ | |
| 2261 eassert (!m->buffer); | |
| 2262 for (m = BUF_MARKERS (other_buffer); m; m = m->next) | 2262 for (m = BUF_MARKERS (other_buffer); m; m = m->next) |
| 2263 if (m->buffer == current_buffer) | 2263 if (m->buffer == current_buffer) |
| 2264 m->buffer = other_buffer; | 2264 m->buffer = other_buffer; |
| 2265 else | |
| 2266 /* Since there's no indirect buffer in sight, markers on | |
| 2267 BUF_MARKERS(buf) should either be for `buf' or dead. */ | |
| 2268 eassert (!m->buffer); | |
| 2265 } | 2269 } |
| 2266 { /* Some of the C code expects that w->buffer == w->pointm->buffer. | 2270 { /* Some of the C code expects that w->buffer == w->pointm->buffer. |
| 2267 So since we just swapped the markers between the two buffers, we need | 2271 So since we just swapped the markers between the two buffers, we need |
| 2268 to undo the effect of this swap for window markers. */ | 2272 to undo the effect of this swap for window markers. */ |
| 2269 Lisp_Object w = Fselected_window (), ws = Qnil; | 2273 Lisp_Object w = Fselected_window (), ws = Qnil; |
