aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorRichard M. Stallman1998-01-01 02:37:16 +0000
committerRichard M. Stallman1998-01-01 02:37:16 +0000
commit3f236a406617391c66addb76a2129fa087d70182 (patch)
tree4084cbdb860052b34c30b8ce6642c47d25e4ceb0 /src/buffer.c
parent1389ad718c988c0f423facf0e953178d3e24cf30 (diff)
downloademacs-3f236a406617391c66addb76a2129fa087d70182.tar.gz
emacs-3f236a406617391c66addb76a2129fa087d70182.zip
(Fmake_indirect_buffer): Use set_marker_both.
(set_buffer_internal_1): Likewise. (set_buffer_temp): Likewise. (set_buffer_temp): Update BUF_PT_BYTE, BUF_BEGV_BYTE and BUF_ZV_BYTE. (Fmake_indirect_buffer, set_buffer_internal_1): Set up the pt, begv and zv markers with both kinds of position. Set BUF_PT_BYTE, BUF_BEGV_BYTE, BUF_ZV_BYTE. (Fget_buffer_create): Set BUF_..._BYTE.
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c84
1 files changed, 56 insertions, 28 deletions
diff --git a/src/buffer.c b/src/buffer.c
index ffe6237db79..27e3cc0c44b 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -343,6 +343,11 @@ The value is never nil.")
343 BUF_BEGV (b) = 1; 343 BUF_BEGV (b) = 1;
344 BUF_ZV (b) = 1; 344 BUF_ZV (b) = 1;
345 BUF_Z (b) = 1; 345 BUF_Z (b) = 1;
346 BUF_PT_BYTE (b) = 1;
347 BUF_GPT_BYTE (b) = 1;
348 BUF_BEGV_BYTE (b) = 1;
349 BUF_ZV_BYTE (b) = 1;
350 BUF_Z_BYTE (b) = 1;
346 BUF_MODIFF (b) = 1; 351 BUF_MODIFF (b) = 1;
347 BUF_OVERLAY_MODIFF (b) = 1; 352 BUF_OVERLAY_MODIFF (b) = 1;
348 BUF_SAVE_MODIFF (b) = 1; 353 BUF_SAVE_MODIFF (b) = 1;
@@ -423,6 +428,9 @@ NAME should be a string which is not the name of an existing buffer.")
423 BUF_BEGV (b) = BUF_BEGV (b->base_buffer); 428 BUF_BEGV (b) = BUF_BEGV (b->base_buffer);
424 BUF_ZV (b) = BUF_ZV (b->base_buffer); 429 BUF_ZV (b) = BUF_ZV (b->base_buffer);
425 BUF_PT (b) = BUF_PT (b->base_buffer); 430 BUF_PT (b) = BUF_PT (b->base_buffer);
431 BUF_BEGV_BYTE (b) = BUF_BEGV_BYTE (b->base_buffer);
432 BUF_ZV_BYTE (b) = BUF_ZV_BYTE (b->base_buffer);
433 BUF_PT_BYTE (b) = BUF_PT_BYTE (b->base_buffer);
426 434
427 b->newline_cache = 0; 435 b->newline_cache = 0;
428 b->width_run_cache = 0; 436 b->width_run_cache = 0;
@@ -450,31 +458,33 @@ NAME should be a string which is not the name of an existing buffer.")
450 if (NILP (b->base_buffer->pt_marker)) 458 if (NILP (b->base_buffer->pt_marker))
451 { 459 {
452 b->base_buffer->pt_marker = Fmake_marker (); 460 b->base_buffer->pt_marker = Fmake_marker ();
453 Fset_marker (b->base_buffer->pt_marker, 461 set_marker_both (b->base_buffer->pt_marker, base_buffer,
454 make_number (BUF_PT (b->base_buffer)), base_buffer); 462 BUF_PT (b->base_buffer),
463 BUF_PT_BYTE (b->base_buffer));
455 } 464 }
456 if (NILP (b->base_buffer->begv_marker)) 465 if (NILP (b->base_buffer->begv_marker))
457 { 466 {
458 b->base_buffer->begv_marker = Fmake_marker (); 467 b->base_buffer->begv_marker = Fmake_marker ();
459 Fset_marker (b->base_buffer->begv_marker, 468 set_marker_both (b->base_buffer->begv_marker, base_buffer,
460 make_number (BUF_BEGV (b->base_buffer)), base_buffer); 469 BUF_BEGV (b->base_buffer),
470 BUF_BEGV_BYTE (b->base_buffer));
461 } 471 }
462 if (NILP (b->base_buffer->zv_marker)) 472 if (NILP (b->base_buffer->zv_marker))
463 { 473 {
464 b->base_buffer->zv_marker = Fmake_marker (); 474 b->base_buffer->zv_marker = Fmake_marker ();
465 Fset_marker (b->base_buffer->zv_marker, 475 set_marker_both (b->base_buffer->zv_marker, base_buffer,
466 make_number (BUF_ZV (b->base_buffer)), base_buffer); 476 BUF_ZV (b->base_buffer),
477 BUF_ZV_BYTE (b->base_buffer));
467 XMARKER (b->base_buffer->zv_marker)->insertion_type = 1; 478 XMARKER (b->base_buffer->zv_marker)->insertion_type = 1;
468 } 479 }
469 480
470 /* Give the indirect buffer markers for its narrowing. */ 481 /* Give the indirect buffer markers for its narrowing. */
471 b->pt_marker = Fmake_marker (); 482 b->pt_marker = Fmake_marker ();
472 Fset_marker (b->pt_marker, make_number (BUF_PT (b)), buf); 483 set_marker_both (b->pt_marker, buf, BUF_PT (b), BUF_PT_BYTE (b));
473 b->begv_marker = Fmake_marker (); 484 b->begv_marker = Fmake_marker ();
474 Fset_marker (b->begv_marker, make_number (BUF_BEGV (b)), buf); 485 set_marker_both (b->begv_marker, buf, BUF_BEGV (b), BUF_BEGV_BYTE (b));
475 b->zv_marker = Fmake_marker (); 486 b->zv_marker = Fmake_marker ();
476 Fset_marker (b->zv_marker, make_number (BUF_ZV (b)), buf); 487 set_marker_both (b->zv_marker, buf, BUF_ZV (b), BUF_ZV_BYTE (b));
477
478 XMARKER (b->zv_marker)->insertion_type = 1; 488 XMARKER (b->zv_marker)->insertion_type = 1;
479 489
480 return buf; 490 return buf;
@@ -1408,22 +1418,22 @@ set_buffer_internal_1 (b)
1408 { 1418 {
1409 Lisp_Object obuf; 1419 Lisp_Object obuf;
1410 XSETBUFFER (obuf, old_buf); 1420 XSETBUFFER (obuf, old_buf);
1411 Fset_marker (old_buf->pt_marker, make_number (BUF_PT (old_buf)), 1421 set_marker_both (old_buf->pt_marker, obuf,
1412 obuf); 1422 BUF_PT (old_buf), BUF_PT_BYTE (old_buf));
1413 } 1423 }
1414 if (! NILP (old_buf->begv_marker)) 1424 if (! NILP (old_buf->begv_marker))
1415 { 1425 {
1416 Lisp_Object obuf; 1426 Lisp_Object obuf;
1417 XSETBUFFER (obuf, old_buf); 1427 XSETBUFFER (obuf, old_buf);
1418 Fset_marker (old_buf->begv_marker, make_number (BUF_BEGV (old_buf)), 1428 set_marker_both (old_buf->begv_marker, obuf,
1419 obuf); 1429 BUF_BEGV (old_buf), BUF_BEGV_BYTE (old_buf));
1420 } 1430 }
1421 if (! NILP (old_buf->zv_marker)) 1431 if (! NILP (old_buf->zv_marker))
1422 { 1432 {
1423 Lisp_Object obuf; 1433 Lisp_Object obuf;
1424 XSETBUFFER (obuf, old_buf); 1434 XSETBUFFER (obuf, old_buf);
1425 Fset_marker (old_buf->zv_marker, make_number (BUF_ZV (old_buf)), 1435 set_marker_both (old_buf->zv_marker, obuf,
1426 obuf); 1436 BUF_ZV (old_buf), BUF_ZV_BYTE (old_buf));
1427 } 1437 }
1428 } 1438 }
1429 1439
@@ -1435,11 +1445,20 @@ set_buffer_internal_1 (b)
1435 /* If the new current buffer has markers to record PT, BEGV and ZV 1445 /* If the new current buffer has markers to record PT, BEGV and ZV
1436 when it is not current, fetch them now. */ 1446 when it is not current, fetch them now. */
1437 if (! NILP (b->pt_marker)) 1447 if (! NILP (b->pt_marker))
1438 BUF_PT (b) = marker_position (b->pt_marker); 1448 {
1449 BUF_PT (b) = marker_position (b->pt_marker);
1450 BUF_PT_BYTE (b) = marker_byte_position (b->pt_marker);
1451 }
1439 if (! NILP (b->begv_marker)) 1452 if (! NILP (b->begv_marker))
1440 BUF_BEGV (b) = marker_position (b->begv_marker); 1453 {
1454 BUF_BEGV (b) = marker_position (b->begv_marker);
1455 BUF_BEGV_BYTE (b) = marker_byte_position (b->begv_marker);
1456 }
1441 if (! NILP (b->zv_marker)) 1457 if (! NILP (b->zv_marker))
1442 BUF_ZV (b) = marker_position (b->zv_marker); 1458 {
1459 BUF_ZV (b) = marker_position (b->zv_marker);
1460 BUF_ZV_BYTE (b) = marker_byte_position (b->zv_marker);
1461 }
1443 1462
1444 /* Look down buffer's list of local Lisp variables 1463 /* Look down buffer's list of local Lisp variables
1445 to find and update any that forward into C variables. */ 1464 to find and update any that forward into C variables. */
@@ -1495,33 +1514,42 @@ set_buffer_temp (b)
1495 { 1514 {
1496 Lisp_Object obuf; 1515 Lisp_Object obuf;
1497 XSETBUFFER (obuf, old_buf); 1516 XSETBUFFER (obuf, old_buf);
1498 Fset_marker (old_buf->pt_marker, make_number (BUF_PT (old_buf)), 1517 set_marker_both (old_buf->pt_marker, obuf,
1499 obuf); 1518 BUF_PT (old_buf), BUF_PT_BYTE (old_buf));
1500 } 1519 }
1501 if (! NILP (old_buf->begv_marker)) 1520 if (! NILP (old_buf->begv_marker))
1502 { 1521 {
1503 Lisp_Object obuf; 1522 Lisp_Object obuf;
1504 XSETBUFFER (obuf, old_buf); 1523 XSETBUFFER (obuf, old_buf);
1505 Fset_marker (old_buf->begv_marker, make_number (BUF_BEGV (old_buf)), 1524 set_marker_both (old_buf->begv_marker, obuf,
1506 obuf); 1525 BUF_BEGV (old_buf), BUF_BEGV_BYTE (old_buf));
1507 } 1526 }
1508 if (! NILP (old_buf->zv_marker)) 1527 if (! NILP (old_buf->zv_marker))
1509 { 1528 {
1510 Lisp_Object obuf; 1529 Lisp_Object obuf;
1511 XSETBUFFER (obuf, old_buf); 1530 XSETBUFFER (obuf, old_buf);
1512 Fset_marker (old_buf->zv_marker, make_number (BUF_ZV (old_buf)), 1531 set_marker_both (old_buf->zv_marker, obuf,
1513 obuf); 1532 BUF_ZV (old_buf), BUF_ZV_BYTE (old_buf));
1514 } 1533 }
1515 } 1534 }
1516 1535
1517 /* If the new current buffer has markers to record PT, BEGV and ZV 1536 /* If the new current buffer has markers to record PT, BEGV and ZV
1518 when it is not current, fetch them now. */ 1537 when it is not current, fetch them now. */
1519 if (! NILP (b->pt_marker)) 1538 if (! NILP (b->pt_marker))
1520 BUF_PT (b) = marker_position (b->pt_marker); 1539 {
1540 BUF_PT (b) = marker_position (b->pt_marker);
1541 BUF_PT_BYTE (b) = marker_byte_position (b->pt_marker);
1542 }
1521 if (! NILP (b->begv_marker)) 1543 if (! NILP (b->begv_marker))
1522 BUF_BEGV (b) = marker_position (b->begv_marker); 1544 {
1545 BUF_BEGV (b) = marker_position (b->begv_marker);
1546 BUF_BEGV_BYTE (b) = marker_byte_position (b->begv_marker);
1547 }
1523 if (! NILP (b->zv_marker)) 1548 if (! NILP (b->zv_marker))
1524 BUF_ZV (b) = marker_position (b->zv_marker); 1549 {
1550 BUF_ZV (b) = marker_position (b->zv_marker);
1551 BUF_ZV_BYTE (b) = marker_byte_position (b->zv_marker);
1552 }
1525} 1553}
1526 1554
1527DEFUN ("set-buffer", Fset_buffer, Sset_buffer, 1, 1, 0, 1555DEFUN ("set-buffer", Fset_buffer, Sset_buffer, 1, 1, 0,