Fix completion tuple (#14594)...
Fix completion tuple (#14594)
In progress work toward
#14585
guarded eval strip leading characters until it find soemthing, this is
problematic as `(1, x`, becomes valid after 1 char strip: `1, x` is a
tuple;
So now we trim until it is valid an not a tuple.
This is still imperfect as things like `(1, a[" "].y` will be trimmed to
`y`, while it should stop with `a[" "].y` ?
I think maybe we should back-propagate; build back up from `y`, to `a["
"].y`, greedily until we get the last valid expression – skipping any
unbalanced parentheses/quotes if we encounter imblanced.