all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Tom Davey <tdavey@gmail.com>
Cc: emacs-devel@gnu.org
Subject: Re: Puzzling behavior from echo area: truncates prompt string at 100	characters?
Date: Sat, 24 Dec 2011 11:31:48 +0200	[thread overview]
Message-ID: <83liq2xqm3.fsf@gnu.org> (raw)
In-Reply-To: <CAG1pqKyXYbLMhZqk_Z_j8x6SZYv_3iZ2Fi5D2s6Ah+7eXwA6=g@mail.gmail.com>

[Moved here from help-gnu-emacs.]

> Date: Tue, 20 Dec 2011 20:29:57 -0500
> From: Tom Davey <tdavey@gmail.com>
> 
> 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.



  reply	other threads:[~2011-12-24  9:31 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-21  1:29 Puzzling behavior from echo area: truncates prompt string at 100 characters? Tom Davey
2011-12-24  9:31 ` Eli Zaretskii [this message]
2011-12-24 10:59   ` Andreas Schwab
2011-12-24 13:20     ` Eli Zaretskii
2011-12-24 17:41       ` Tom Davey
2011-12-25  6:08       ` Chong Yidong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83liq2xqm3.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=tdavey@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.