aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorStefan Monnier2011-03-21 12:42:16 -0400
committerStefan Monnier2011-03-21 12:42:16 -0400
commitcafdcef32d55cbb44389d7e322e7f973cbb72dfd (patch)
tree7ee0c41ea8a589650ce6f4311fb10e61a63807b9 /src/buffer.c
parenta08a25d7aaf251aa18f2ef747be53734bc55cae9 (diff)
parent4e05e67e4cd0bc1b0a4ef3176a4d0d91c6b3738e (diff)
downloademacs-cafdcef32d55cbb44389d7e322e7f973cbb72dfd.tar.gz
emacs-cafdcef32d55cbb44389d7e322e7f973cbb72dfd.zip
Merge from trunk
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c283
1 files changed, 129 insertions, 154 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 1b413ccb8b0..d301e7f14f9 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -330,15 +330,17 @@ even if it is dead. The return value is never nil. */)
330 if (! BUF_BEG_ADDR (b)) 330 if (! BUF_BEG_ADDR (b))
331 buffer_memory_full (); 331 buffer_memory_full ();
332 332
333 BUF_PT (b) = BEG; 333 b->pt = BEG;
334 b->begv = BEG;
335 b->zv = BEG;
336 b->pt_byte = BEG_BYTE;
337 b->begv_byte = BEG_BYTE;
338 b->zv_byte = BEG_BYTE;
339
334 BUF_GPT (b) = BEG; 340 BUF_GPT (b) = BEG;
335 BUF_BEGV (b) = BEG;
336 BUF_ZV (b) = BEG;
337 BUF_Z (b) = BEG;
338 BUF_PT_BYTE (b) = BEG_BYTE;
339 BUF_GPT_BYTE (b) = BEG_BYTE; 341 BUF_GPT_BYTE (b) = BEG_BYTE;
340 BUF_BEGV_BYTE (b) = BEG_BYTE; 342
341 BUF_ZV_BYTE (b) = BEG_BYTE; 343 BUF_Z (b) = BEG;
342 BUF_Z_BYTE (b) = BEG_BYTE; 344 BUF_Z_BYTE (b) = BEG_BYTE;
343 BUF_MODIFF (b) = 1; 345 BUF_MODIFF (b) = 1;
344 BUF_CHARS_MODIFF (b) = 1; 346 BUF_CHARS_MODIFF (b) = 1;
@@ -489,6 +491,53 @@ clone_per_buffer_values (struct buffer *from, struct buffer *to)
489 BVAR (to, local_var_alist) = buffer_lisp_local_variables (from); 491 BVAR (to, local_var_alist) = buffer_lisp_local_variables (from);
490} 492}
491 493
494
495/* If buffer B has markers to record PT, BEGV and ZV when it is not
496 current, update these markers. */
497
498static void
499record_buffer_markers (struct buffer *b)
500{
501 if (! NILP (BVAR (b, pt_marker)))
502 {
503 Lisp_Object buffer;
504
505 eassert (!NILP (BVAR (b, begv_marker)));
506 eassert (!NILP (BVAR (b, zv_marker)));
507
508 XSETBUFFER (buffer, b);
509 set_marker_both (BVAR (b, pt_marker), buffer, b->pt, b->pt_byte);
510 set_marker_both (BVAR (b, begv_marker), buffer, b->begv, b->begv_byte);
511 set_marker_both (BVAR (b, zv_marker), buffer, b->zv, b->zv_byte);
512 }
513}
514
515
516/* If buffer B has markers to record PT, BEGV and ZV when it is not
517 current, fetch these values into B->begv etc. */
518
519static void
520fetch_buffer_markers (struct buffer *b)
521{
522 if (! NILP (BVAR (b, pt_marker)))
523 {
524 Lisp_Object m;
525
526 eassert (!NILP (BVAR (b, begv_marker)));
527 eassert (!NILP (BVAR (b, zv_marker)));
528
529 m = BVAR (b, pt_marker);
530 SET_BUF_PT_BOTH (b, marker_position (m), marker_byte_position (m));
531
532 m = BVAR (b, begv_marker);
533 SET_BUF_BEGV_BOTH (b, marker_position (m), marker_byte_position (m));
534
535 m = BVAR (b, zv_marker);
536 SET_BUF_ZV_BOTH (b, marker_position (m), marker_byte_position (m));
537 }
538}
539
540
492DEFUN ("make-indirect-buffer", Fmake_indirect_buffer, Smake_indirect_buffer, 541DEFUN ("make-indirect-buffer", Fmake_indirect_buffer, Smake_indirect_buffer,
493 2, 3, 542 2, 3,
494 "bMake indirect buffer (to buffer): \nBName of indirect buffer: ", 543 "bMake indirect buffer (to buffer): \nBName of indirect buffer: ",
@@ -527,12 +576,12 @@ CLONE nil means the indirect buffer's state is reset to default values. */)
527 /* Use the base buffer's text object. */ 576 /* Use the base buffer's text object. */
528 b->text = b->base_buffer->text; 577 b->text = b->base_buffer->text;
529 578
530 BUF_BEGV (b) = BUF_BEGV (b->base_buffer); 579 b->pt = b->base_buffer->pt;
531 BUF_ZV (b) = BUF_ZV (b->base_buffer); 580 b->begv = b->base_buffer->begv;
532 BUF_PT (b) = BUF_PT (b->base_buffer); 581 b->zv = b->base_buffer->zv;
533 BUF_BEGV_BYTE (b) = BUF_BEGV_BYTE (b->base_buffer); 582 b->pt_byte = b->base_buffer->pt_byte;
534 BUF_ZV_BYTE (b) = BUF_ZV_BYTE (b->base_buffer); 583 b->begv_byte = b->base_buffer->begv_byte;
535 BUF_PT_BYTE (b) = BUF_PT_BYTE (b->base_buffer); 584 b->zv_byte = b->base_buffer->zv_byte;
536 585
537 b->newline_cache = 0; 586 b->newline_cache = 0;
538 b->width_run_cache = 0; 587 b->width_run_cache = 0;
@@ -562,24 +611,23 @@ CLONE nil means the indirect buffer's state is reset to default values. */)
562 /* Make sure the base buffer has markers for its narrowing. */ 611 /* Make sure the base buffer has markers for its narrowing. */
563 if (NILP (BVAR (b->base_buffer, pt_marker))) 612 if (NILP (BVAR (b->base_buffer, pt_marker)))
564 { 613 {
614 eassert (NILP (BVAR (b->base_buffer, begv_marker)));
615 eassert (NILP (BVAR (b->base_buffer, zv_marker)));
616
565 BVAR (b->base_buffer, pt_marker) = Fmake_marker (); 617 BVAR (b->base_buffer, pt_marker) = Fmake_marker ();
566 set_marker_both (BVAR (b->base_buffer, pt_marker), base_buffer, 618 set_marker_both (BVAR (b->base_buffer, pt_marker), base_buffer,
567 BUF_PT (b->base_buffer), 619 b->base_buffer->pt,
568 BUF_PT_BYTE (b->base_buffer)); 620 b->base_buffer->pt_byte);
569 } 621
570 if (NILP (BVAR (b->base_buffer, begv_marker)))
571 {
572 BVAR (b->base_buffer, begv_marker) = Fmake_marker (); 622 BVAR (b->base_buffer, begv_marker) = Fmake_marker ();
573 set_marker_both (BVAR (b->base_buffer, begv_marker), base_buffer, 623 set_marker_both (BVAR (b->base_buffer, begv_marker), base_buffer,
574 BUF_BEGV (b->base_buffer), 624 b->base_buffer->begv,
575 BUF_BEGV_BYTE (b->base_buffer)); 625 b->base_buffer->begv_byte);
576 } 626
577 if (NILP (BVAR (b->base_buffer, zv_marker)))
578 {
579 BVAR (b->base_buffer, zv_marker) = Fmake_marker (); 627 BVAR (b->base_buffer, zv_marker) = Fmake_marker ();
580 set_marker_both (BVAR (b->base_buffer, zv_marker), base_buffer, 628 set_marker_both (BVAR (b->base_buffer, zv_marker), base_buffer,
581 BUF_ZV (b->base_buffer), 629 b->base_buffer->zv,
582 BUF_ZV_BYTE (b->base_buffer)); 630 b->base_buffer->zv_byte);
583 XMARKER (BVAR (b->base_buffer, zv_marker))->insertion_type = 1; 631 XMARKER (BVAR (b->base_buffer, zv_marker))->insertion_type = 1;
584 } 632 }
585 633
@@ -587,11 +635,11 @@ CLONE nil means the indirect buffer's state is reset to default values. */)
587 { 635 {
588 /* Give the indirect buffer markers for its narrowing. */ 636 /* Give the indirect buffer markers for its narrowing. */
589 BVAR (b, pt_marker) = Fmake_marker (); 637 BVAR (b, pt_marker) = Fmake_marker ();
590 set_marker_both (BVAR (b, pt_marker), buf, BUF_PT (b), BUF_PT_BYTE (b)); 638 set_marker_both (BVAR (b, pt_marker), buf, b->pt, b->pt_byte);
591 BVAR (b, begv_marker) = Fmake_marker (); 639 BVAR (b, begv_marker) = Fmake_marker ();
592 set_marker_both (BVAR (b, begv_marker), buf, BUF_BEGV (b), BUF_BEGV_BYTE (b)); 640 set_marker_both (BVAR (b, begv_marker), buf, b->begv, b->begv_byte);
593 BVAR (b, zv_marker) = Fmake_marker (); 641 BVAR (b, zv_marker) = Fmake_marker ();
594 set_marker_both (BVAR (b, zv_marker), buf, BUF_ZV (b), BUF_ZV_BYTE (b)); 642 set_marker_both (BVAR (b, zv_marker), buf, b->zv, b->zv_byte);
595 XMARKER (BVAR (b, zv_marker))->insertion_type = 1; 643 XMARKER (BVAR (b, zv_marker))->insertion_type = 1;
596 } 644 }
597 else 645 else
@@ -1416,9 +1464,9 @@ with SIGHUP. */)
1416 don't re-kill them. */ 1464 don't re-kill them. */
1417 if (other->base_buffer == b && !NILP (BVAR (other, name))) 1465 if (other->base_buffer == b && !NILP (BVAR (other, name)))
1418 { 1466 {
1419 Lisp_Object buffer; 1467 Lisp_Object buf;
1420 XSETBUFFER (buffer, other); 1468 XSETBUFFER (buf, other);
1421 Fkill_buffer (buffer); 1469 Fkill_buffer (buf);
1422 } 1470 }
1423 1471
1424 UNGCPRO; 1472 UNGCPRO;
@@ -1479,9 +1527,9 @@ with SIGHUP. */)
1479 && BUF_SAVE_MODIFF (b) < BUF_MODIFF (b) 1527 && BUF_SAVE_MODIFF (b) < BUF_MODIFF (b)
1480 && NILP (Fsymbol_value (intern ("auto-save-visited-file-name")))) 1528 && NILP (Fsymbol_value (intern ("auto-save-visited-file-name"))))
1481 { 1529 {
1482 Lisp_Object tem; 1530 Lisp_Object delete;
1483 tem = Fsymbol_value (intern ("delete-auto-save-files")); 1531 delete = Fsymbol_value (intern ("delete-auto-save-files"));
1484 if (! NILP (tem)) 1532 if (! NILP (delete))
1485 internal_delete_file (BVAR (b, auto_save_file_name)); 1533 internal_delete_file (BVAR (b, auto_save_file_name));
1486 } 1534 }
1487 1535
@@ -1553,19 +1601,19 @@ with SIGHUP. */)
1553void 1601void
1554record_buffer (Lisp_Object buf) 1602record_buffer (Lisp_Object buf)
1555{ 1603{
1556 register Lisp_Object link, prev; 1604 register Lisp_Object list, prev;
1557 Lisp_Object frame; 1605 Lisp_Object frame;
1558 frame = selected_frame; 1606 frame = selected_frame;
1559 1607
1560 prev = Qnil; 1608 prev = Qnil;
1561 for (link = Vbuffer_alist; CONSP (link); link = XCDR (link)) 1609 for (list = Vbuffer_alist; CONSP (list); list = XCDR (list))
1562 { 1610 {
1563 if (EQ (XCDR (XCAR (link)), buf)) 1611 if (EQ (XCDR (XCAR (list)), buf))
1564 break; 1612 break;
1565 prev = link; 1613 prev = list;
1566 } 1614 }
1567 1615
1568 /* Effectively do Vbuffer_alist = Fdelq (link, Vbuffer_alist); 1616 /* Effectively do Vbuffer_alist = Fdelq (list, Vbuffer_alist);
1569 we cannot use Fdelq itself here because it allows quitting. */ 1617 we cannot use Fdelq itself here because it allows quitting. */
1570 1618
1571 if (NILP (prev)) 1619 if (NILP (prev))
@@ -1573,40 +1621,40 @@ record_buffer (Lisp_Object buf)
1573 else 1621 else
1574 XSETCDR (prev, XCDR (XCDR (prev))); 1622 XSETCDR (prev, XCDR (XCDR (prev)));
1575 1623
1576 XSETCDR (link, Vbuffer_alist); 1624 XSETCDR (list, Vbuffer_alist);
1577 Vbuffer_alist = link; 1625 Vbuffer_alist = list;
1578 1626
1579 /* Effectively do a delq on buried_buffer_list. */ 1627 /* Effectively do a delq on buried_buffer_list. */
1580 1628
1581 prev = Qnil; 1629 prev = Qnil;
1582 for (link = XFRAME (frame)->buried_buffer_list; CONSP (link); 1630 for (list = XFRAME (frame)->buried_buffer_list; CONSP (list);
1583 link = XCDR (link)) 1631 list = XCDR (list))
1584 { 1632 {
1585 if (EQ (XCAR (link), buf)) 1633 if (EQ (XCAR (list), buf))
1586 { 1634 {
1587 if (NILP (prev)) 1635 if (NILP (prev))
1588 XFRAME (frame)->buried_buffer_list = XCDR (link); 1636 XFRAME (frame)->buried_buffer_list = XCDR (list);
1589 else 1637 else
1590 XSETCDR (prev, XCDR (XCDR (prev))); 1638 XSETCDR (prev, XCDR (XCDR (prev)));
1591 break; 1639 break;
1592 } 1640 }
1593 prev = link; 1641 prev = list;
1594 } 1642 }
1595 1643
1596 /* Now move this buffer to the front of frame_buffer_list also. */ 1644 /* Now move this buffer to the front of frame_buffer_list also. */
1597 1645
1598 prev = Qnil; 1646 prev = Qnil;
1599 for (link = frame_buffer_list (frame); CONSP (link); 1647 for (list = frame_buffer_list (frame); CONSP (list);
1600 link = XCDR (link)) 1648 list = XCDR (list))
1601 { 1649 {
1602 if (EQ (XCAR (link), buf)) 1650 if (EQ (XCAR (list), buf))
1603 break; 1651 break;
1604 prev = link; 1652 prev = list;
1605 } 1653 }
1606 1654
1607 /* Effectively do delq. */ 1655 /* Effectively do delq. */
1608 1656
1609 if (CONSP (link)) 1657 if (CONSP (list))
1610 { 1658 {
1611 if (NILP (prev)) 1659 if (NILP (prev))
1612 set_frame_buffer_list (frame, 1660 set_frame_buffer_list (frame,
@@ -1614,8 +1662,8 @@ record_buffer (Lisp_Object buf)
1614 else 1662 else
1615 XSETCDR (prev, XCDR (XCDR (prev))); 1663 XSETCDR (prev, XCDR (XCDR (prev)));
1616 1664
1617 XSETCDR (link, frame_buffer_list (frame)); 1665 XSETCDR (list, frame_buffer_list (frame));
1618 set_frame_buffer_list (frame, link); 1666 set_frame_buffer_list (frame, list);
1619 } 1667 }
1620 else 1668 else
1621 set_frame_buffer_list (frame, Fcons (buf, frame_buffer_list (frame))); 1669 set_frame_buffer_list (frame, Fcons (buf, frame_buffer_list (frame)));
@@ -1664,7 +1712,7 @@ the current buffer's major mode. */)
1664/* Switch to buffer BUFFER in the selected window. 1712/* Switch to buffer BUFFER in the selected window.
1665 If NORECORD is non-nil, don't call record_buffer. */ 1713 If NORECORD is non-nil, don't call record_buffer. */
1666 1714
1667Lisp_Object 1715static Lisp_Object
1668switch_to_buffer_1 (Lisp_Object buffer_or_name, Lisp_Object norecord) 1716switch_to_buffer_1 (Lisp_Object buffer_or_name, Lisp_Object norecord)
1669{ 1717{
1670 register Lisp_Object buffer; 1718 register Lisp_Object buffer;
@@ -1796,27 +1844,7 @@ set_buffer_internal_1 (register struct buffer *b)
1796 1844
1797 /* If the old current buffer has markers to record PT, BEGV and ZV 1845 /* If the old current buffer has markers to record PT, BEGV and ZV
1798 when it is not current, update them now. */ 1846 when it is not current, update them now. */
1799 if (! NILP (BVAR (old_buf, pt_marker))) 1847 record_buffer_markers (old_buf);
1800 {
1801 Lisp_Object obuf;
1802 XSETBUFFER (obuf, old_buf);
1803 set_marker_both (BVAR (old_buf, pt_marker), obuf,
1804 BUF_PT (old_buf), BUF_PT_BYTE (old_buf));
1805 }
1806 if (! NILP (BVAR (old_buf, begv_marker)))
1807 {
1808 Lisp_Object obuf;
1809 XSETBUFFER (obuf, old_buf);
1810 set_marker_both (BVAR (old_buf, begv_marker), obuf,
1811 BUF_BEGV (old_buf), BUF_BEGV_BYTE (old_buf));
1812 }
1813 if (! NILP (BVAR (old_buf, zv_marker)))
1814 {
1815 Lisp_Object obuf;
1816 XSETBUFFER (obuf, old_buf);
1817 set_marker_both (BVAR (old_buf, zv_marker), obuf,
1818 BUF_ZV (old_buf), BUF_ZV_BYTE (old_buf));
1819 }
1820 } 1848 }
1821 1849
1822 /* Get the undo list from the base buffer, so that it appears 1850 /* Get the undo list from the base buffer, so that it appears
@@ -1826,21 +1854,7 @@ set_buffer_internal_1 (register struct buffer *b)
1826 1854
1827 /* If the new current buffer has markers to record PT, BEGV and ZV 1855 /* If the new current buffer has markers to record PT, BEGV and ZV
1828 when it is not current, fetch them now. */ 1856 when it is not current, fetch them now. */
1829 if (! NILP (BVAR (b, pt_marker))) 1857 fetch_buffer_markers (b);
1830 {
1831 BUF_PT (b) = marker_position (BVAR (b, pt_marker));
1832 BUF_PT_BYTE (b) = marker_byte_position (BVAR (b, pt_marker));
1833 }
1834 if (! NILP (BVAR (b, begv_marker)))
1835 {
1836 BUF_BEGV (b) = marker_position (BVAR (b, begv_marker));
1837 BUF_BEGV_BYTE (b) = marker_byte_position (BVAR (b, begv_marker));
1838 }
1839 if (! NILP (BVAR (b, zv_marker)))
1840 {
1841 BUF_ZV (b) = marker_position (BVAR (b, zv_marker));
1842 BUF_ZV_BYTE (b) = marker_byte_position (BVAR (b, zv_marker));
1843 }
1844 1858
1845 /* Look down buffer's list of local Lisp variables 1859 /* Look down buffer's list of local Lisp variables
1846 to find and update any that forward into C variables. */ 1860 to find and update any that forward into C variables. */
@@ -1876,50 +1890,13 @@ set_buffer_temp (struct buffer *b)
1876 old_buf = current_buffer; 1890 old_buf = current_buffer;
1877 current_buffer = b; 1891 current_buffer = b;
1878 1892
1879 if (old_buf) 1893 /* If the old current buffer has markers to record PT, BEGV and ZV
1880 { 1894 when it is not current, update them now. */
1881 /* If the old current buffer has markers to record PT, BEGV and ZV 1895 record_buffer_markers (old_buf);
1882 when it is not current, update them now. */
1883 if (! NILP (BVAR (old_buf, pt_marker)))
1884 {
1885 Lisp_Object obuf;
1886 XSETBUFFER (obuf, old_buf);
1887 set_marker_both (BVAR (old_buf, pt_marker), obuf,
1888 BUF_PT (old_buf), BUF_PT_BYTE (old_buf));
1889 }
1890 if (! NILP (BVAR (old_buf, begv_marker)))
1891 {
1892 Lisp_Object obuf;
1893 XSETBUFFER (obuf, old_buf);
1894 set_marker_both (BVAR (old_buf, begv_marker), obuf,
1895 BUF_BEGV (old_buf), BUF_BEGV_BYTE (old_buf));
1896 }
1897 if (! NILP (BVAR (old_buf, zv_marker)))
1898 {
1899 Lisp_Object obuf;
1900 XSETBUFFER (obuf, old_buf);
1901 set_marker_both (BVAR (old_buf, zv_marker), obuf,
1902 BUF_ZV (old_buf), BUF_ZV_BYTE (old_buf));
1903 }
1904 }
1905 1896
1906 /* If the new current buffer has markers to record PT, BEGV and ZV 1897 /* If the new current buffer has markers to record PT, BEGV and ZV
1907 when it is not current, fetch them now. */ 1898 when it is not current, fetch them now. */
1908 if (! NILP (BVAR (b, pt_marker))) 1899 fetch_buffer_markers (b);
1909 {
1910 BUF_PT (b) = marker_position (BVAR (b, pt_marker));
1911 BUF_PT_BYTE (b) = marker_byte_position (BVAR (b, pt_marker));
1912 }
1913 if (! NILP (BVAR (b, begv_marker)))
1914 {
1915 BUF_BEGV (b) = marker_position (BVAR (b, begv_marker));
1916 BUF_BEGV_BYTE (b) = marker_byte_position (BVAR (b, begv_marker));
1917 }
1918 if (! NILP (BVAR (b, zv_marker)))
1919 {
1920 BUF_ZV (b) = marker_position (BVAR (b, zv_marker));
1921 BUF_ZV_BYTE (b) = marker_byte_position (BVAR (b, zv_marker));
1922 }
1923} 1900}
1924 1901
1925DEFUN ("set-buffer", Fset_buffer, Sset_buffer, 1, 1, 0, 1902DEFUN ("set-buffer", Fset_buffer, Sset_buffer, 1, 1, 0,
@@ -2007,13 +1984,13 @@ its frame, iconify that frame. */)
2007 buffer is killed. */ 1984 buffer is killed. */
2008 if (!NILP (BVAR (XBUFFER (buffer), name))) 1985 if (!NILP (BVAR (XBUFFER (buffer), name)))
2009 { 1986 {
2010 Lisp_Object aelt, link; 1987 Lisp_Object aelt, list;
2011 1988
2012 aelt = Frassq (buffer, Vbuffer_alist); 1989 aelt = Frassq (buffer, Vbuffer_alist);
2013 link = Fmemq (aelt, Vbuffer_alist); 1990 list = Fmemq (aelt, Vbuffer_alist);
2014 Vbuffer_alist = Fdelq (aelt, Vbuffer_alist); 1991 Vbuffer_alist = Fdelq (aelt, Vbuffer_alist);
2015 XSETCDR (link, Qnil); 1992 XSETCDR (list, Qnil);
2016 Vbuffer_alist = nconc2 (Vbuffer_alist, link); 1993 Vbuffer_alist = nconc2 (Vbuffer_alist, list);
2017 1994
2018 XFRAME (selected_frame)->buffer_list 1995 XFRAME (selected_frame)->buffer_list
2019 = Fdelq (buffer, XFRAME (selected_frame)->buffer_list); 1996 = Fdelq (buffer, XFRAME (selected_frame)->buffer_list);
@@ -2358,12 +2335,12 @@ current buffer is cleared. */)
2358 && GPT_BYTE > 1 && GPT_BYTE < Z_BYTE 2335 && GPT_BYTE > 1 && GPT_BYTE < Z_BYTE
2359 && ! CHAR_HEAD_P (*(GAP_END_ADDR))) 2336 && ! CHAR_HEAD_P (*(GAP_END_ADDR)))
2360 { 2337 {
2361 unsigned char *p = GPT_ADDR - 1; 2338 unsigned char *q = GPT_ADDR - 1;
2362 2339
2363 while (! CHAR_HEAD_P (*p) && p > BEG_ADDR) p--; 2340 while (! CHAR_HEAD_P (*q) && q > BEG_ADDR) q--;
2364 if (LEADING_CODE_P (*p)) 2341 if (LEADING_CODE_P (*q))
2365 { 2342 {
2366 EMACS_INT new_gpt = GPT_BYTE - (GPT_ADDR - p); 2343 EMACS_INT new_gpt = GPT_BYTE - (GPT_ADDR - q);
2367 2344
2368 move_gap_both (new_gpt, new_gpt); 2345 move_gap_both (new_gpt, new_gpt);
2369 } 2346 }
@@ -2447,14 +2424,14 @@ current buffer is cleared. */)
2447 ZV = chars_in_text (BEG_ADDR, ZV_BYTE - BEG_BYTE) + BEG; 2424 ZV = chars_in_text (BEG_ADDR, ZV_BYTE - BEG_BYTE) + BEG;
2448 2425
2449 { 2426 {
2450 EMACS_INT pt_byte = advance_to_char_boundary (PT_BYTE); 2427 EMACS_INT byte = advance_to_char_boundary (PT_BYTE);
2451 EMACS_INT pt; 2428 EMACS_INT position;
2452 2429
2453 if (pt_byte > GPT_BYTE) 2430 if (byte > GPT_BYTE)
2454 pt = chars_in_text (GAP_END_ADDR, pt_byte - GPT_BYTE) + GPT; 2431 position = chars_in_text (GAP_END_ADDR, byte - GPT_BYTE) + GPT;
2455 else 2432 else
2456 pt = chars_in_text (BEG_ADDR, pt_byte - BEG_BYTE) + BEG; 2433 position = chars_in_text (BEG_ADDR, byte - BEG_BYTE) + BEG;
2457 TEMP_SET_PT_BOTH (pt, pt_byte); 2434 TEMP_SET_PT_BOTH (position, byte);
2458 } 2435 }
2459 2436
2460 tail = markers = BUF_MARKERS (current_buffer); 2437 tail = markers = BUF_MARKERS (current_buffer);
@@ -3421,7 +3398,8 @@ void
3421fix_start_end_in_overlays (register EMACS_INT start, register EMACS_INT end) 3398fix_start_end_in_overlays (register EMACS_INT start, register EMACS_INT end)
3422{ 3399{
3423 Lisp_Object overlay; 3400 Lisp_Object overlay;
3424 struct Lisp_Overlay *before_list, *after_list; 3401 struct Lisp_Overlay *before_list IF_LINT (= NULL);
3402 struct Lisp_Overlay *after_list IF_LINT (= NULL);
3425 /* These are either nil, indicating that before_list or after_list 3403 /* These are either nil, indicating that before_list or after_list
3426 should be assigned, or the cons cell the cdr of which should be 3404 should be assigned, or the cons cell the cdr of which should be
3427 assigned. */ 3405 assigned. */
@@ -3569,7 +3547,7 @@ fix_overlays_before (struct buffer *bp, EMACS_INT prev, EMACS_INT pos)
3569 /* If parent is nil, replace overlays_before; otherwise, parent->next. */ 3547 /* If parent is nil, replace overlays_before; otherwise, parent->next. */
3570 struct Lisp_Overlay *tail = bp->overlays_before, *parent = NULL, *right_pair; 3548 struct Lisp_Overlay *tail = bp->overlays_before, *parent = NULL, *right_pair;
3571 Lisp_Object tem; 3549 Lisp_Object tem;
3572 EMACS_INT end; 3550 EMACS_INT end IF_LINT (= 0);
3573 3551
3574 /* After the insertion, the several overlays may be in incorrect 3552 /* After the insertion, the several overlays may be in incorrect
3575 order. The possibility is that, in the list `overlays_before', 3553 order. The possibility is that, in the list `overlays_before',
@@ -4345,10 +4323,10 @@ report_overlay_modification (Lisp_Object start, Lisp_Object end, int after,
4345 4323
4346 for (i = 0; i < size;) 4324 for (i = 0; i < size;)
4347 { 4325 {
4348 Lisp_Object prop, overlay; 4326 Lisp_Object prop_i, overlay_i;
4349 prop = copy[i++]; 4327 prop_i = copy[i++];
4350 overlay = copy[i++]; 4328 overlay_i = copy[i++];
4351 call_overlay_mod_hooks (prop, overlay, after, arg1, arg2, arg3); 4329 call_overlay_mod_hooks (prop_i, overlay_i, after, arg1, arg2, arg3);
4352 } 4330 }
4353 } 4331 }
4354 UNGCPRO; 4332 UNGCPRO;
@@ -5333,9 +5311,6 @@ syms_of_buffer (void)
5333 Fput (Qprotected_field, Qerror_message, 5311 Fput (Qprotected_field, Qerror_message,
5334 make_pure_c_string ("Attempt to modify a protected field")); 5312 make_pure_c_string ("Attempt to modify a protected field"));
5335 5313
5336 /* All these use DEFVAR_LISP_NOPRO because the slots in
5337 buffer_defaults will all be marked via Vbuffer_defaults. */
5338
5339 DEFVAR_BUFFER_DEFAULTS ("default-mode-line-format", 5314 DEFVAR_BUFFER_DEFAULTS ("default-mode-line-format",
5340 mode_line_format, 5315 mode_line_format,
5341 doc: /* Default value of `mode-line-format' for buffers that don't override it. 5316 doc: /* Default value of `mode-line-format' for buffers that don't override it.