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;