1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-02-05 20:43:08 +00:00

(echo_prompt): Always set current_kboard->echoptr to

the end of the prompt.  Set echo_after_prompt to the offset
of echoptr in echobuf.
This commit is contained in:
Gerd Moellmann 2000-12-23 23:09:04 +00:00
parent 83f40583a4
commit f717c2baaa
2 changed files with 21 additions and 16 deletions

View File

@ -1,5 +1,9 @@
2000-12-23 Gerd Moellmann <gerd@gnu.org>
* keyboard.c (echo_prompt): Always set current_kboard->echoptr to
the end of the prompt. Set echo_after_prompt to the offset
of echoptr in echobuf.
* xdisp.c (init_from_display_pos): Pop until the iterator's
stack is empty; there may be frames for stretch or images
on the stack.

View File

@ -692,36 +692,37 @@ void
echo_prompt (str)
Lisp_Object str;
{
int len = STRING_BYTES (XSTRING (str));
int nbytes = STRING_BYTES (XSTRING (str));
int multibyte_p = STRING_MULTIBYTE (str);
if (len > ECHOBUFSIZE - 4)
if (nbytes > ECHOBUFSIZE - 4)
{
if (multibyte_p)
{
unsigned char *p = XSTRING (str)->data, *lastp = p;
/* Have to find the last character that fit's into the
echo buffer. */
unsigned char *p = XSTRING (str)->data;
unsigned char *pend = p + ECHOBUFSIZE - 4;
int char_len;
while (p < pend)
do
{
int this_len;
lastp = p;
PARSE_MULTIBYTE_SEQ (p, pend - p, this_len);
p += this_len;
PARSE_MULTIBYTE_SEQ (p, pend - p, char_len);
p += char_len;
}
len = lastp - XSTRING (str)->data;
while (p < pend);
nbytes = p - XSTRING (str)->data - char_len;
}
else
len = ECHOBUFSIZE - 4;
nbytes = ECHOBUFSIZE - 4;
}
current_kboard->echoptr
+= copy_text (XSTRING (str)->data, current_kboard->echobuf, len,
STRING_MULTIBYTE (str), 1);
nbytes = copy_text (XSTRING (str)->data, current_kboard->echobuf, nbytes,
STRING_MULTIBYTE (str), 1);
current_kboard->echoptr = current_kboard->echobuf + nbytes;
*current_kboard->echoptr = '\0';
current_kboard->echo_after_prompt = len;
current_kboard->echo_after_prompt = nbytes;
echo_now ();
}