comparison src/syntax.c @ 89113:326caaedbfef

(skip_syntaxes): Fix previous change.
author Kenichi Handa <handa@m17n.org>
date Wed, 18 Sep 2002 12:14:36 +0000
parents d9a45a01f9fc
children 099689a1feb6
comparison
equal deleted inserted replaced
89112:d9a45a01f9fc 89113:326caaedbfef
1729 if (XINT (lim) > ZV) 1729 if (XINT (lim) > ZV)
1730 XSETFASTINT (lim, ZV); 1730 XSETFASTINT (lim, ZV);
1731 if (XINT (lim) < BEGV) 1731 if (XINT (lim) < BEGV)
1732 XSETFASTINT (lim, BEGV); 1732 XSETFASTINT (lim, BEGV);
1733 1733
1734 if (forward ? PT >= XFASTINT (lim) : PT <= XFASTINT (lim))
1735 return 0;
1736
1734 multibyte = (!NILP (current_buffer->enable_multibyte_characters) 1737 multibyte = (!NILP (current_buffer->enable_multibyte_characters)
1735 && (lim - PT != CHAR_TO_BYTE (lim) - PT_BYTE)); 1738 && (lim - PT != CHAR_TO_BYTE (lim) - PT_BYTE));
1736 1739
1737 bzero (fastmap, sizeof fastmap); 1740 bzero (fastmap, sizeof fastmap);
1738 1741
1772 SETUP_SYNTAX_TABLE (pos, forwardp ? 1 : -1); 1775 SETUP_SYNTAX_TABLE (pos, forwardp ? 1 : -1);
1773 if (forwardp) 1776 if (forwardp)
1774 { 1777 {
1775 if (multibyte) 1778 if (multibyte)
1776 { 1779 {
1777 if (pos < XINT (lim)) 1780 while (fastmap[(int) SYNTAX (FETCH_CHAR (pos_byte))])
1778 while (fastmap[(int) SYNTAX (FETCH_CHAR (pos_byte))]) 1781 {
1779 { 1782 /* Since we already checked for multibyteness,
1780 /* Since we already checked for multibyteness, 1783 avoid using INC_BOTH which checks again. */
1781 avoid using INC_BOTH which checks again. */ 1784 INC_POS (pos_byte);
1782 INC_POS (pos_byte); 1785 pos++;
1783 pos++; 1786 if (pos >= XINT (lim))
1784 if (pos >= XINT (lim)) 1787 break;
1785 break; 1788 UPDATE_SYNTAX_TABLE_FORWARD (pos);
1786 UPDATE_SYNTAX_TABLE_FORWARD (pos); 1789 }
1787 }
1788 } 1790 }
1789 else 1791 else
1790 { 1792 {
1791 while (pos < XINT (lim)) 1793 while (1)
1792 { 1794 {
1793 c = FETCH_BYTE (pos_byte); 1795 c = FETCH_BYTE (pos_byte);
1794 MAKE_CHAR_MULTIBYTE (c); 1796 MAKE_CHAR_MULTIBYTE (c);
1795 if (! fastmap[(int) SYNTAX (c)]) 1797 if (! fastmap[(int) SYNTAX (c)])
1796 break; 1798 break;
1797 pos++, pos_byte++; 1799 pos++, pos_byte++;
1800 if (pos >= XINT (lim))
1801 break;
1798 UPDATE_SYNTAX_TABLE_FORWARD (pos); 1802 UPDATE_SYNTAX_TABLE_FORWARD (pos);
1799 } 1803 }
1800 } 1804 }
1801 } 1805 }
1802 else 1806 else
1803 { 1807 {
1804 if (multibyte) 1808 if (multibyte)
1805 { 1809 {
1806 while (pos > XINT (lim)) 1810 while (1)
1807 { 1811 {
1808 int savepos = pos_byte; 1812 int savepos = pos_byte;
1809 /* Since we already checked for multibyteness, 1813 /* Since we already checked for multibyteness,
1810 avoid using DEC_BOTH which checks again. */ 1814 avoid using DEC_BOTH which checks again. */
1811 pos--; 1815 pos--;
1812 DEC_POS (pos_byte); 1816 DEC_POS (pos_byte);
1817 if (pos <= XINT (lim))
1818 break;
1813 UPDATE_SYNTAX_TABLE_BACKWARD (pos); 1819 UPDATE_SYNTAX_TABLE_BACKWARD (pos);
1814 if (!fastmap[(int) SYNTAX (FETCH_CHAR (pos_byte))]) 1820 if (!fastmap[(int) SYNTAX (FETCH_CHAR (pos_byte))])
1815 { 1821 {
1816 pos++; 1822 pos++;
1817 pos_byte = savepos; 1823 pos_byte = savepos;
1819 } 1825 }
1820 } 1826 }
1821 } 1827 }
1822 else 1828 else
1823 { 1829 {
1824 if (pos > XINT (lim)) 1830 while (1)
1825 while (1) 1831 {
1826 { 1832 c = FETCH_BYTE (pos_byte - 1);
1827 c = FETCH_BYTE (pos_byte - 1); 1833 MAKE_CHAR_MULTIBYTE (c);
1828 MAKE_CHAR_MULTIBYTE (c); 1834 if (! fastmap[(int) SYNTAX (c)])
1829 if (! fastmap[(int) SYNTAX (c)]) 1835 break;
1830 break; 1836 pos--, pos_byte--;
1831 pos--, pos_byte--; 1837 if (pos <= XINT (lim))
1832 if (pos <= XINT (lim)) 1838 break;
1833 break; 1839 UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1);
1834 UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1); 1840 }
1835 }
1836 } 1841 }
1837 } 1842 }
1838 1843
1839 SET_PT_BOTH (pos, pos_byte); 1844 SET_PT_BOTH (pos, pos_byte);
1840 immediate_quit = 0; 1845 immediate_quit = 0;