Friday, August 26, 2011

Re: getchar() blocks the output

Reply to message «getchar() blocks the output»,
sent 17:50:08 26 August 2011, Friday
by sinbad:

> basically i want to display a list of choices for the user and based
> on the users input i will take some action. so the lines 7-8 will
> actually list the users with some choices in a new window. but the
> window is not getting opened because of getchar(), according to
> the code that's what suppose to happen. why getchar() is blocking
> output, is there any way around this.
In this code getchar() is not blocking an output, &lazyredraw option should be
the cause. If you want to use buffer and not :echo or input()/inputlist(), then
you should put explicit :redraw before getchar() call. Or :redraw! if without a
bang does not work.

Original message:
> hi,
>
> i've the following function.
>
> 1 fun! Dosome()
> 2 vertical botright new
> 3 setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile
> 4 setlocal nowrap
> 5 setlocal nonu
> 6
> 7 for m in g:list
> 8 let txt = printf("%s %-50s %-4d %-50s", m[0], m[1]. "()",
> m[2], m[3])
> 9 put =txt
> 10 endfor
> 11
> 12 let char = getchar()
> 13 setlocal nomodifiable
> 14 silent! "'".char
> 15 endfun
>
> basically i want to display a list of choices for the user and based
> on the users input i will take some action. so the lines 7-8 will
> actually list the users with some choices in a new window. but the
> window is not getting opened because of getchar(), according to
> the code that's what suppose to happen. why getchar() is blocking
> output, is there any way around this.
>
> thanks

No comments: