I'm not sure what the intended fix for 70d was, but I can no longer send a char
to a function indirectly through an <expr> mapping, meaning that in the example
below, \b does not send a <space> to Tst(). Tst() waits for input directly
from the user.
Note: using
map \a : call Tst()<CR>
works as expected, so the problem seems to be with <expr>
map <expr> \a Tst()
map \b \a<space>
function! Tst()
"exe "normal! : <CR>"
while getchar(1) < 1
sleep 100ms
endwhile
echomsg "Done!"
endfunction
--- Bram Moolenaar <[EMAIL PROTECTED]> wrote:
>
> Eric Arnold wrote:
>
> > Here is the test example:
> >
> >
> > map <expr> ,tt Tst()
> >
> > function! Tst()
> > "exe "normal! : <CR>"
> >
> > while getchar(1) < 1
> > sleep 100ms
> > endwhile
> >
> > echomsg "Done!"
> > endfunction
> >
> >
> >
> > It never sees input without the
> >
> > exe "normal! : <CR>"
> >
> > As you might guess, it took me forever to find a workaround. Anybody know
> > about this?
>
> The evaluation of the map expression is done inside the function that
> gets a character from the user and takes care of applying mappings.
> That function is protected from being called recursively, thus getchar()
> doesn't work.
>
> That the use of a normal command makes it work is a bug. Instead of
> incrementing/decrementing a counter for recursive use of the function a
> true/false flag is used. I'll fix that. Your function with the
> workaround will stop working then.
>
> I'll see if I can make it work.
>
> --
> hundred-and-one symptoms of being an internet addict:
> 17. You turn on your intercom when leaving the room so you can hear if new
> e-mail arrives.
>
> /// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net \\\
> /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
> \\\ download, build and distribute -- http://www.A-A-P.org ///
> \\\ help me help AIDS victims -- http://www.ICCF.nl ///
>