On 4/10/06, Bertram Scharpf <[hidden email]> wrote:
> I read vim tip #1198 and I'm amazed the recursion doesn't
> lead to a stack overflow. I tried to force one and waited
> for estimately 150M executions:
> map <silent><F6> :if strlen(getline("."))<78\|exec "norm Ax\e"\|else\|pu_\|endif\|redraw<cr><F6>
> Can I rely on this and if yes, why?
explains some of it.
The :help 'maxmapdepth' explains why 'maxmapdepth' does not apply
to "tail recursion" case.
I think that with "tail recursion" recursive mappings,
vim memory does not grow (confirmed by your experiment.)
I think C recursion or stack grows is *not* involved in processing of
recursive mappings, I think the code manipulates the input queue.
This is my guess though.