I have to agree with Simon here that "best guess" will only lead to pain
in many cases.
The best solution, albeit the most painful for Simon :-( , is to have a
Preferences pane where the user can specify what a tab does, i.e.
"nothing", " $", "@" , "$first_named_list_item", and so on. But even
then, what if there are objects "foo" and "foolish" in your workspace?
You want to write "foo$bar" , but which gets precedence when you enter
a tab? "foo$bar" or "foolish" ?
[Tim wrote...]
1. When a name is already complete, when the user pushes tab again, they
are expecting ?more? name completion, i.e., they want to access a $ or
@ sub-component. Currently, nothing happens, and the user feels
?thwarted?? like the typing ?Simon" but then having to type a space and
a tab to get "Urbanek" :-)
2. Most object components are $ indexed rather than @ indexed), so $ is
the best guess.