On 9/7/06, Yakov Lerner <[EMAIL PROTECTED]> wrote:
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
Correction, this should have been getchar(1) not getchar(0).
Addition of getchar(1) also handles resizes properly.
Yakov