[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Puzzling behavior from echo area: truncates prompt string at 100 cha
From: |
Eli Zaretskii |
Subject: |
Re: Puzzling behavior from echo area: truncates prompt string at 100 characters? |
Date: |
Sat, 24 Dec 2011 11:31:48 +0200 |
[Moved here from help-gnu-emacs.]
> Date: Tue, 20 Dec 2011 20:29:57 -0500
> From: Tom Davey <address@hidden>
>
> I'm using Emacs 24.0.50.1. The following "message" command, with an
> arbitrarily chosen argument string of exactly 150 characters --
>
> (message "0123456789 123456789 223456789 323456789 423456789 523456789
> 623456789 723456789 823456789 923456789 023456789 123456789 223456789
> 323456789 423456789")
>
> -- displays the entire length of the string (all 150 characters) in
> the minibuffer's echo area, as one would expect. In fact, I find that
> the echo area frame will expand in height to display even much longer
> messages. (The variable "message-truncate-lines" is nil.)
>
> However, if the same 150-character string becomes an argument to an
> "(interactive)" declaration in a defun() function, like this --
>
> (interactive "c0123456789 123456789 223456789 323456789 423456789
> 523456789 623456789 723456789 823456789 923456789 023456789 123456789
> 223456789 323456789 423456789")
>
> -- then the display of the prompt string in the echo area is
> truncated. Only the first 99 characters display; the remainder of the
> echo area (to the right) is unused and empty. Nor does the echo area's
> frame expand in height, as it does with the "message" function.
>
> Naturally, in a real-world application my prompt string would not be
> composed of integers but of helpful alphanumeric text. However, no
> matter what form of a prompt string I supply to the "interactive"
> declaration, the echo area truncates it at the 100th character.
>
> Does anybody have an idea how I might get a long prompt in an
> interactive declaration to fully display in the echo area?
This happens because call-interactively arbitrarily truncates the
prompt at the 99th character:
char prompt1[100];
...
strncpy (prompt1, tem + 1, sizeof prompt1 - 1);
prompt1[sizeof prompt1 - 1] = 0;
tem1 = strchr (prompt1, '\n');
if (tem1) *tem1 = 0;
visargs[0] = build_string (prompt1);
if (strchr (prompt1, '%'))
callint_message = Fformat (i, visargs);
else
callint_message = visargs[0];
...
case 'c': /* Character */
/* Prompt in `minibuffer-prompt' face. */
Fput_text_property (make_number (0),
make_number (SCHARS (callint_message)),
Qface, Qminibuffer_prompt, callint_message);
args[i] = Fread_char (callint_message, Qnil, Qnil);
This limitation was there since 1991, but AFAICS it is not documented
anywhere.
Do we want to keep this limitation? If so, it should be at least
documented.
- Re: Puzzling behavior from echo area: truncates prompt string at 100 characters?,
Eli Zaretskii <=