/* Simple built-in editing commands.
- Copyright (C) 1985, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1985, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
This file is part of GNU Emacs.
/* This is the command that set up Vself_insert_face. */
Lisp_Object Vself_insert_face_command;
-/* Offset to add to a non-ASCII value when inserting it. */
-int nonascii_insert_offset;
-
extern Lisp_Object Qface;
\f
DEFUN ("forward-point", Fforward_point, Sforward_point, 1, 1, 0,
{
Lisp_Object value;
int deleted_special = 0;
- int pos, i;
+ int pos, pos_byte, i;
CHECK_NUMBER (n, 0);
/* See if we are about to delete a tab or newline backwards. */
- pos = PT_BYTE;
- for (i = 0; i < XINT (n) && pos > BEGV_BYTE; i++)
+ pos = PT;
+ pos_byte = PT_BYTE;
+ for (i = 0; i < XINT (n) && pos_byte > BEGV_BYTE; i++)
{
int c;
- DEC_POS (pos);
- c = FETCH_BYTE (pos);
+ DEC_BOTH (pos, pos_byte);
+ c = FETCH_BYTE (pos_byte);
if (c == '\t' || c == '\n')
{
deleted_special = 1;
/* Add the offset to the character, for Finsert_char.
We pass internal_self_insert the unmodified character
because it itself does this offsetting. */
- if (modified_char >= 0200 && modified_char <= 0377
- && ! NILP (current_buffer->enable_multibyte_characters))
- modified_char += nonascii_insert_offset;
+ if (! NILP (current_buffer->enable_multibyte_characters))
+ modified_char = unibyte_char_to_multibyte (modified_char);
XSETFASTINT (n, XFASTINT (n) - 2);
/* The first one might want to expand an abbrev. */
int chars_to_delete = 0;
int spaces_to_insert = 0;
- if (c >= 0200 && c <= 0377
- && ! NILP (current_buffer->enable_multibyte_characters))
- c += nonascii_insert_offset;
-
overwrite = current_buffer->overwrite_mode;
if (!NILP (Vbefore_change_function) || !NILP (Vafter_change_function)
|| !NILP (Vbefore_change_functions) || !NILP (Vafter_change_functions))
/* At first, get multi-byte form of C in STR. */
if (!NILP (current_buffer->enable_multibyte_characters))
- len = CHAR_STRING (c, workbuf, str);
+ {
+ c = unibyte_char_to_multibyte (c);
+ len = CHAR_STRING (c, workbuf, str);
+ }
else
workbuf[0] = c, str = workbuf, len = 1;
string = concat2 (tem, string);
}
- replace_range (PT, PT + chars_to_delete, string, 1, 1);
- SET_PT_BOTH (PT + 1 + spaces_to_insert,
- PT_BYTE + XSTRING (string)->size);
+ replace_range (PT, PT + chars_to_delete, string, 1, 1, 0);
+ Fforward_char (make_number (1 + spaces_to_insert));
}
else
insert_and_inherit (str, len);
More precisely, a char with closeparen syntax is self-inserted.");
Vblink_paren_function = Qnil;
- DEFVAR_INT ("nonascii-insert-offset", &nonascii_insert_offset,
- "Offset to add to a non-ascii code 0200...0377 when inserting it.\n\
-This applies only when multibyte characters are enabled, and it serves\n\
-to convert a Latin-1 or similar 8-bit character code to the corresponding\n\
-Emacs character code.");
- nonascii_insert_offset = 0;
-
defsubr (&Sforward_point);
defsubr (&Sforward_char);
defsubr (&Sbackward_char);