Mercurial > emacs
comparison src/buffer.c @ 3031:5c96dfc52433
* buffer.c (Fmake_overlay): Put beg and end in the
right order.
(Fmove_overlay): If beg and end are markers, make sure they're in
the right buffer.
| author | Jim Blandy <jimb@redhat.com> |
|---|---|
| date | Mon, 24 May 1993 20:57:32 +0000 |
| parents | e94a593c3952 |
| children | a3007f83650c |
comparison
equal
deleted
inserted
replaced
| 3030:2c5ea1c98256 | 3031:5c96dfc52433 |
|---|---|
| 1487 Lisp_Object overlay; | 1487 Lisp_Object overlay; |
| 1488 struct buffer *b; | 1488 struct buffer *b; |
| 1489 | 1489 |
| 1490 if (NILP (buffer)) | 1490 if (NILP (buffer)) |
| 1491 XSET (buffer, Lisp_Buffer, current_buffer); | 1491 XSET (buffer, Lisp_Buffer, current_buffer); |
| 1492 CHECK_BUFFER (buffer, 2); | 1492 else |
| 1493 CHECK_BUFFER (buffer, 2); | |
| 1494 if (MARKERP (beg) | |
| 1495 && ! EQ (Fmarker_buffer (beg), buffer)) | |
| 1496 error ("Marker points into wrong buffer"); | |
| 1497 if (MARKERP (end) | |
| 1498 && ! EQ (Fmarker_buffer (end), buffer)) | |
| 1499 error ("Marker points into wrong buffer"); | |
| 1500 | |
| 1501 CHECK_NUMBER_COERCE_MARKER (beg, 1); | |
| 1502 CHECK_NUMBER_COERCE_MARKER (end, 1); | |
| 1503 | |
| 1504 if (XINT (beg) > XINT (end)) | |
| 1505 { | |
| 1506 Lisp_Object temp = beg; | |
| 1507 beg = end; end = temp; | |
| 1508 } | |
| 1493 | 1509 |
| 1494 b = XBUFFER (buffer); | 1510 b = XBUFFER (buffer); |
| 1495 | 1511 |
| 1496 if (MARKERP (beg)) | 1512 beg = Fset_marker (Fmake_marker (), beg, buffer); |
| 1497 { | 1513 end = Fset_marker (Fmake_marker (), end, buffer); |
| 1498 if (! EQ (Fmarker_buffer (beg), buffer)) | |
| 1499 error ("Marker points into wrong buffer"); | |
| 1500 else | |
| 1501 beg = Fcopy_marker (beg); | |
| 1502 } | |
| 1503 else | |
| 1504 beg = Fset_marker (Fmake_marker (), beg, buffer); | |
| 1505 if (MARKERP (end)) | |
| 1506 { | |
| 1507 if (! EQ (Fmarker_buffer (end), buffer)) | |
| 1508 error ("Marker points into wrong buffer"); | |
| 1509 else | |
| 1510 end = Fcopy_marker (end); | |
| 1511 } | |
| 1512 else | |
| 1513 end = Fset_marker (Fmake_marker (), end, buffer); | |
| 1514 | 1514 |
| 1515 overlay = Fcons (Fcons (beg, end), Qnil); | 1515 overlay = Fcons (Fcons (beg, end), Qnil); |
| 1516 XSETTYPE (overlay, Lisp_Overlay); | 1516 XSETTYPE (overlay, Lisp_Overlay); |
| 1517 | 1517 |
| 1518 /* Put the new overlay on the wrong list. */ | 1518 /* Put the new overlay on the wrong list. */ |
| 1545 if (NILP (buffer)) | 1545 if (NILP (buffer)) |
| 1546 buffer = Fmarker_buffer (OVERLAY_START (overlay)); | 1546 buffer = Fmarker_buffer (OVERLAY_START (overlay)); |
| 1547 if (NILP (buffer)) | 1547 if (NILP (buffer)) |
| 1548 XSET (buffer, Lisp_Buffer, current_buffer); | 1548 XSET (buffer, Lisp_Buffer, current_buffer); |
| 1549 CHECK_BUFFER (buffer, 3); | 1549 CHECK_BUFFER (buffer, 3); |
| 1550 | |
| 1551 if (MARKERP (beg) | |
| 1552 && ! EQ (Fmarker_buffer (beg), buffer)) | |
| 1553 error ("Marker points into wrong buffer"); | |
| 1554 if (MARKERP (end) | |
| 1555 && ! EQ (Fmarker_buffer (end), buffer)) | |
| 1556 error ("Marker points into wrong buffer"); | |
| 1557 | |
| 1550 CHECK_NUMBER_COERCE_MARKER (beg, 1); | 1558 CHECK_NUMBER_COERCE_MARKER (beg, 1); |
| 1551 CHECK_NUMBER_COERCE_MARKER (end, 1); | 1559 CHECK_NUMBER_COERCE_MARKER (end, 1); |
| 1552 | 1560 |
| 1553 if (XINT (beg) > XINT (end)) | 1561 if (XINT (beg) > XINT (end)) |
| 1554 { | 1562 { |
