Mercurial > emacs
changeset 26860:96ecaefd97a0
(copy_text): Adjusted for the change of CHAR_STRING.
(insert_char): Likewise.
(insert): Call update_compositions.
(insert_and_inherit): Likewise.
(insert_before_markers): Likewise.
(insert_before_markers_and_inherit): Likewise.
(insert_from_string): Likewise.
(insert_from_string_before_markers): Likewise.
(insert_from_buffer): Likewise.
(replace_range): Likewise.
(count_combining_composition): Deleted.
(count_combining_before): Delete codes for a composite character.
(count_combining_after): Likewise.
(del_range_1): Call update_compositions.
(del_range_byte): Likewise.
(del_range_both): Likewise.
(Fcombine_after_change_execute): Likewise.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Wed, 15 Dec 1999 00:13:49 +0000 |
parents | 4cf41c98ad2d |
children | 7d3ca36657cb |
files | src/insdel.c |
diffstat | 1 files changed, 17 insertions(+), 49 deletions(-) [+] |
line wrap: on
line diff
--- a/src/insdel.c Wed Dec 15 00:13:13 1999 +0000 +++ b/src/insdel.c Wed Dec 15 00:13:49 1999 +0000 @@ -715,17 +715,13 @@ while (nbytes > 0) { int c = *from_addr++; - unsigned char workbuf[4], *str; - int len; if (c < 0400 && (c >= 0240 || (c >= 0200 && !NILP (Vnonascii_translation_table)))) { c = unibyte_char_to_multibyte (c); - len = CHAR_STRING (c, workbuf, str); - bcopy (str, to_addr, len); - to_addr += len; + to_addr += CHAR_STRING (c, to_addr); nbytes--; } else @@ -782,6 +778,7 @@ int opoint = PT; insert_1 (string, nbytes, 0, 1, 0); signal_after_change (opoint, 0, PT - opoint); + update_compositions (opoint, PT, CHECK_BORDER); } } @@ -797,6 +794,7 @@ int opoint = PT; insert_1 (string, nbytes, 1, 1, 0); signal_after_change (opoint, 0, PT - opoint); + update_compositions (opoint, PT, CHECK_BORDER); } } @@ -806,16 +804,15 @@ insert_char (c) int c; { - unsigned char workbuf[4], *str; + unsigned char str[MAX_MULTIBYTE_LENGTH]; int len; if (! NILP (current_buffer->enable_multibyte_characters)) - len = CHAR_STRING (c, workbuf, str); + len = CHAR_STRING (c, str); else { len = 1; - workbuf[0] = c; - str = workbuf; + str[0] = c; } insert (str, len); @@ -846,6 +843,7 @@ insert_1 (string, nbytes, 0, 1, 1); signal_after_change (opoint, 0, PT - opoint); + update_compositions (opoint, PT, CHECK_BORDER); } } @@ -862,6 +860,7 @@ insert_1 (string, nbytes, 1, 1, 1); signal_after_change (opoint, 0, PT - opoint); + update_compositions (opoint, PT, CHECK_BORDER); } } @@ -877,33 +876,6 @@ inherit, prepare, before_markers); } -/* See if the byte sequence at STR1 of length LEN1 combine with the - byte sequence at STR2 of length LEN2 to form a single composite - character. If so, return the number of bytes at the start of STR2 - which combine in this way. Otherwise, return 0. If STR3 is not - NULL, it is a byte sequence of length LEN3 to be appended to STR1 - before checking the combining. */ -int -count_combining_composition (str1, len1, str2, len2, str3, len3) - unsigned char *str1, *str2, *str3; - int len1, len2, len3; -{ - int len = len1 + len2 + len3; - unsigned char *buf = (unsigned char *) alloca (len + 1); - int bytes; - - bcopy (str1, buf, len1); - if (str3) - { - bcopy (str3, buf + len1, len3); - len1 += len3; - } - bcopy (str2, buf + len1 , len2); - buf[len] = 0; - PARSE_MULTIBYTE_SEQ (buf, len, bytes); - return (bytes <= len1 ? 0 : bytes - len1); -} - /* See if the bytes before POS/POS_BYTE combine with bytes at the start of STRING to form a single character. If so, return the number of bytes at the start of STRING @@ -935,10 +907,6 @@ if (! BASE_LEADING_CODE_P (*p)) /* case (3) */ return 0; - /* A sequence of a composite character requires a special handling. */ - if (*p == LEADING_CODE_COMPOSITION) - return count_combining_composition (p, len, string, length, NULL, 0); - combining_bytes = BYTES_BY_CHAR_HEAD (*p) - len; if (combining_bytes <= 0) /* The character preceding POS is, complete and no room for @@ -1003,11 +971,7 @@ i--; if (i < 0 || !BASE_LEADING_CODE_P (p[i])) return 0; - /* A sequence of a composite character requires a special handling. */ - if (p[i] == LEADING_CODE_COMPOSITION) - return count_combining_composition (p + i, pos_byte - 1 - i, - bufp, Z_BYTE - pos_byte, - string, length); + bytes = BYTES_BY_CHAR_HEAD (p[i]); return (bytes <= pos_byte - 1 - i + length ? 0 @@ -1015,10 +979,6 @@ } if (!BASE_LEADING_CODE_P (string[i])) return 0; - /* A sequence of a composite character requires a special handling. */ - if (string[i] == LEADING_CODE_COMPOSITION) - return count_combining_composition (string + i, length - i, - bufp, Z_BYTE - pos_byte, NULL, 0); bytes = BYTES_BY_CHAR_HEAD (string[i]) - (length - i); bufp++, pos_byte++; @@ -1227,6 +1187,7 @@ insert_from_string_1 (string, pos, pos_byte, length, length_byte, inherit, 0); signal_after_change (opoint, 0, PT - opoint); + update_compositions (opoint, PT, CHECK_BORDER); } /* Like `insert_from_string' except that all markers pointing @@ -1243,6 +1204,7 @@ insert_from_string_1 (string, pos, pos_byte, length, length_byte, inherit, 1); signal_after_change (opoint, 0, PT - opoint); + update_compositions (opoint, PT, CHECK_BORDER); } /* Subroutine of the insertion functions above. */ @@ -1412,6 +1374,7 @@ insert_from_buffer_1 (buf, charpos, nchars, inherit); signal_after_change (opoint, 0, PT - opoint); + update_compositions (opoint, PT, CHECK_BORDER); } static void @@ -2043,6 +2006,7 @@ UNGCPRO; signal_after_change (from, nchars_del, GPT - from); + update_compositions (from, GPT, CHECK_BORDER); } /* Delete characters in current buffer @@ -2128,6 +2092,7 @@ del_range_2 (from, from_byte, to, to_byte, 0); signal_after_change (from, to - from, 0); + update_compositions (from, from, CHECK_HEAD); } /* Like del_range_1, but positions are specified both as charpos @@ -2166,6 +2131,8 @@ del_range_2 (from, from_byte, to, to_byte, 0); signal_after_change (from, to - from, 0); + update_compositions (from, from, CHECK_HEAD); + update_compositions (from, from, CHECK_HEAD); } /* Delete a range of text, specified both as character positions @@ -2692,6 +2659,7 @@ record_unwind_protect (Fcombine_after_change_execute_1, Vcombine_after_change_calls); signal_after_change (begpos, endpos - begpos - change, endpos - begpos); + update_compositions (begpos, endpos, CHECK_ALL); return unbind_to (count, Qnil); }