Hi,
This problem was brought up on the vim_mac list a while back but it
turns out not to be mac specific so I am posting to the vim_dev list
as well.
On 12/09/2007, Nico Weber <[EMAIL PROTECTED]> wrote:
>
> 1.) :!ls
> 2.) hit space until the "Hit ENTER prompt" appears if necessary
> 3.) Cmd-tab or cmd-` from and to the window where you did this
>
> Results: The prompt is drawn over and over (one additional line per
> focus gained/lost).
>
> This also happens with Carbon Vim, but not with Ubuntu gvim (and of
> course not with the terminal version), so I guess this is a mac
> specific problem. Bjorn, if you fix this, let us know if your patch
> can be adapted to carbon vim as well ;-)
I have finally looked into this problem and found out what causes it.
In ui_focus_change() [ui.c] there is a line like this:
need_redraw |= apply_autocmds(in_focus ? EVENT_FOCUSGAINED
: EVENT_FOCUSLOST, NULL, NULL, FALSE, curbuf);
Now, apply_autocmds() returns 1 if an autocommand was applied which
will set the need_redraw flag and eventually repeat_message() is
called which in turn calls hit_return_msg() [both in message.c] and
the "Press ENTER ..." message is displayed again.
If I run Vim without any autocommands on focus events, then the "Press
ENTER ..." message is displayed only once...otherwise the message is
repeated each time focus is lost or gained (and eventually fills the
entire screen).
How should this be fixed? There is some stuff going on in
hit_return_msg() that I do not understand...the other messages called
in repeat_message() seem to only rewrite the message on the same line
whereas hit_return_msg() starts a new line. I don't dare to just
change hit_return_msg() so that it outputs the message on the same
line every time, since this may break something else as far as I know.
Any ideas?
/Björn
--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---