Hari Krishna Dara wrote:
> The :lockvar and :unlockvar commands fail when there is a recursive
> references. E.g., try the below:
>
> :let a = {}
> :let b = {}
> :let a.b = b
> :let b:a = a
> :lockvar! a
> E743: variable nested too deep for (un)lock
>
> You could of course end up with more complicated indirect recursive
> references as well, so it should guard against it.
Although it's correct as such, I know a trick to detect the same list or
dictionary is encountered a second time, and then don't recurse into it.
> Also, just noticed that string() fails as well.
>
> :echo string(a)
> E724: variable nested too deep for displaying
This is much harder to avoid. It's very well possible that a list or
dictionary appears multiple times without a recursive reference. In
that case it should be listed normally. It's not easy to distinguish a
normal reference from a recursive reference.
> There are probably others that would fail as well.
What others?
--
hundred-and-one symptoms of being an internet addict:
19. All of your friends have an @ in their names.
/// 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://ICCF-Holland.org ///