On 9/7/06, Bram Moolenaar <[EMAIL PROTECTED]> wrote:

Yakov Lerner wrote:

> I see several problems (that I can't explain) in the vim "refresh"-loop
> watching the growing file (a-la 'tail -f'). Vim commands are below.
>
> Problem #1: There is unexpected output on the bottom line
>                   (lines of the file is echoed on the bottom line). Why ?
> Problem #2: When you vertically resize the xterm window,
>                   vim screen is corrupted and never repainted properly.
> Problem #3: Sometimes, when I press Ctrl-C to quit the loop,
>                   vim is in ex mode and responds 'Type  :quit<Enter>
> to exit Vim'
>                   Why ?
> Problem #4: Since vim repaints properly when waiting for chars, I'd like
>                   to put getchartimeout(1000) in place of sleep 1. Do we
>                   have getchar() with timeout ?
>
> To see the demonstration:
>
> 1. In one window, create growing file using these shell command:
>
>           % while :; do date >>1; sleep 1; done
>
> 2. In another window:
>
>           vim -u NONE ~/xxx
>           :set nolz | while 1 | e | redraw | $ | sleep 1 | endw
>
>           " notice unexpected output on the bottom line
>           " try to resize screen. It is not restored properly.
>           " Press Ctrl-C to quit. Sometimes, vim quits the loop properly.
>           " Sometime, vim does not quit the loop, stays in ex mode.
>           " (Type  :quit<Enter>  to exit Vim)
>
> (This command sequence must be not perfect but it demonstrates the problem).

I can see the extra output on the bottom line.  I'll look into this
later.

How do you see the problem with the screen resize?

I am  trying now to ':call getchar(0)' near 'sleep 1',
and with this addition, screen resizes properly.
Like this:

:set nolz | while 1 | e | redraw | $ | call getchar(0) | sleep 1 | endw

Without getchar(0), resize is not handled.

Yakov

Reply via email to