Mercurial > emacs
changeset 20615:ddb1eec37783
(internal_self_insert): Simplify handling of c2;
avoid testing enable-multibyte-characters.
(internal_self_insert): Use make_multibyte_string.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 09 Jan 1998 23:04:20 +0000 |
parents | a4800f9842e4 |
children | b382c9ca6c39 |
files | src/cmds.c |
diffstat | 1 files changed, 7 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cmds.c Fri Jan 09 23:03:25 1998 +0000 +++ b/src/cmds.c Fri Jan 09 23:04:20 1998 +0000 @@ -372,11 +372,10 @@ we fill columns with spaces, if C is wider than C2, we delete C2 and several characters following C2. */ - /* A code at `point'. Since this is checked only against - NEWLINE and TAB, we don't need a character code but only the - first byte of multi-byte form. */ - unsigned char c2 = FETCH_BYTE (PT_BYTE); - /* A column the cursor should be placed at after this insertion. + /* This is the character after point. */ + int c2 = FETCH_CHAR (PT_BYTE); + + /* Column the cursor should be placed at after this insertion. The correct value should be calculated only when necessary. */ int target_clm = 0; @@ -391,9 +390,8 @@ && ! (c2 == '\t' && XINT (current_buffer->tab_width) > 0 && XFASTINT (current_buffer->tab_width) < 20 - && ((NILP (current_buffer->enable_multibyte_characters) - ? (target_clm = current_column () + 1) - : (target_clm = current_column () + WIDTH_BY_CHAR_HEAD (str[0]))), + && (target_clm = (current_column () + + XINT (Fchar_width (make_number (c2)))), target_clm % XFASTINT (current_buffer->tab_width))))) { int pos = PT; @@ -453,7 +451,7 @@ if (chars_to_delete) { - string = make_string (str, len); + string = make_multibyte_string (str, 1, len); if (spaces_to_insert) { tem = Fmake_string (make_number (spaces_to_insert),