Wednesday, December 11, 2019

Re: "Press ENTER" prompt when edit file with long path

Hi,

On Wed, Dec 11, 2019 at 8:13 AM Gary Johnson <garyjohn@spocom.com> wrote:
>
> On 2019-12-11, Gary Johnson wrote:
> > On 2019-12-10, J. Lewis Muir wrote:
> > > Hello!
> > >
> > > In an 80-column terminal, when I invoke vim on an existing empty file
> > > with a name that is 56 'x' characters, it displays the following prompt
> > > before I can edit the file:
> > >
> > > ----
> > > "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 0 lines, 0 characters
> > >
> > > Press ENTER or type command to continue
> > > ----
> > >
> > > How can I stop it from doing that?
> > >
> > > NOTE: The file has to exist for it to do this. If it's a new file that
> > > Vim will create, Vim does not show the prompt.
> >
> > This looks like a new bug. The presence of the 't' flag in the
> > 'shortmess' option should prevent this, and that flag is there by
> > default. I just verified that it used to work in 7.4.1689 and
> > 8.0.1453 but is now broken in my 8.1.2352 (on Linux) as well as your
> > 8.1.2400.
>
> I used git bisect and tested with
>
> $ src/vim -N -u NONE ../xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
>
> where the file had already been created, to determine that the
> commit that introduced this bug was:
>
> 473952e85286eb9c6098801f1819981ba61ad153 is the first bad commit
> commit 473952e85286eb9c6098801f1819981ba61ad153
> Author: Bram Moolenaar <Bram@vim.org>
> Date: Sat Sep 28 16:30:04 2019 +0200
>
> patch 8.1.2094: the fileio.c file is too big
>
> Problem: The fileio.c file is too big.
> Solution: Move buf_write() to bufwrite.c. (Yegappan Lakshmanan,
> closes #4990)
>
> :100644 100644 2d05b4a3af6a96a04f446789b5c9ca69ab905e9c dfc06245e585e883459dfa04416addce91d3d8ce M Filelist
> :040000 040000 506a68f58e09932cd2b29e2f3eaec5e16e197a9f b5166a4265c3536326785a13e29336e7f778448a M src
>
> Regards,
> Gary
>

The following change in the above commit might have caused this:

======================================================
- static void
+ void
filemess(
buf_T *buf,
char_u *name,
@@ -119,6 +39,7 @@ filemess(
int attr)
{
int msg_scroll_save;
+ int prev_msg_col = msg_col;

if (msg_silent != 0)
return;
@@ -138,6 +59,8 @@ filemess(
if (!msg_scroll) /* wait a bit when overwriting an error msg */
check_for_delay(FALSE);
msg_start();
+ if (prev_msg_col != 0 && msg_col == 0)
+ msg_putchar('\r'); // overwrite any previous message.
msg_scroll = msg_scroll_save;
msg_scrolled_ign = TRUE;
/* may truncate the message to avoid a hit-return prompt */
@@ -2512,7 +2435,11 @@ failed:
p = msg_may_trunc(FALSE, IObuff);
else

No comments: