Page 1 of 1

AutoCompletion upgrade?

PostPosted: Fri Jun 08, 2012 3:23 am
by john.allen
This is something I mentioned to a number of you at Servoy World, namely to take full advantage of the JSDoc ability to extend autocompletion much further it would be great if the autocompletion itself would actually auto complete on what one has already typed! For example say you want to do an 'application.getValueList...' function. You will type 'appl' normally and then application will be the only item left so you can just hit the return. Then you type 'getVa' and you'll get a selection like in the picture below. But the remaining items are all the same through 'getValueList' so you either type all those additional letters before typing A,D,I or N to get your selection or you bang on the arrow key until you have what you want.
1application.getValueList.png (42.34 KiB) Viewed 2567 times

Now with JSDoc and autocompletion extended to JSRecords, etc. you can also have all kinds of places where it is even less convenient. The example below here shows relationships from one table 'course'. Here everything is the same all the way from 'cou' to 'course_'. Add a 't' and everything is the same for all of the 'course' table relations. Banging on the down arrow key on the other hand is a big pain and makes autocompletion almost worthless in those situations.
2DatabaseRelations.png (32.74 KiB) Viewed 2567 times

If one could just hit the 'tab' key at that point then one would immediately have all of the 'course' relationships right at your fingertips. This is the way auto completion works with many, many applications these days (not to mention file completion names in UNIX or even - I understand from Johan - in DOS!).

Here for example is AquaDataStudio, another Java application... I have three tables in my schema of 100 odd tables that all start with 'F'. But those three tables are then all the same through 'FOLLOWUP_'. But in ADS I just hit 'f', then the tab key (see below) and either I, S or T and I have my table selected having hit three keys in all.
4FollowUpEnd.png (14.31 KiB) Viewed 2567 times

A number of you also seemed to like this idea so I've posted it in the JIRA system. Please give it a vote. My experience of it with Aqua Data Studio is that it makes a very big difference and in the Servoy environment with all the other places that autocompletion plays a role I'm sure it will have an even bigger impact. Here's the link:

Re: AutoCompletion upgrade?

PostPosted: Fri Jun 08, 2012 5:04 am
by ptalbot
You can also use the mouse to scroll and select the value you want, just saying.
But I see what you mean, and possibly that could be helped by putting on top of the list all the values break down by the '_' character.

So in your example, typing 'cou' would give you:
- course_
- course_to_
then the rest of your list.

And you would type 'cou', followed by two down arrow keys, followed by c, d, l, p, r, s or v and get to your selection quicker.

But how about the values that are not using '_' as a separator? Like camelCase names widely used in JavaScript object properties for example?
Should this also break down the selection based on Upper case letters?

I'm just wondering how that could be implemented...
The fact is that the current behavior is the Eclipse default behavior - you get that in JDT for Java as well.
So I'm not sure how much effort this would require to change that default behavior. Probably a lot.

Re: AutoCompletion upgrade?

PostPosted: Fri Jun 08, 2012 9:41 am
by john.allen
You can also use the mouse to scroll and select the value you want, just saying.

Not the point. Of course there are work arounds but that takes your hands off the keyboard and slows you down.

There is a general 'protocol' used in autocompletion: it should be case-insensitive (so camelcase doesn't matter), treat underscores like letters (so complete through them thus go all the way through to 'course_to_') but not other punctuation. To trigger the autocompletion it is either the tab key (most applications) or, in iOS and other handhelds with limited keyboards, the space bar. If there is only one match most applications (including Servoy/Eclipse) will automatically just enter the whole phrase.

I understand that what we have might be the default behavior of Eclipse. I think Johan was saying the same thing at Servoy World. That doesn't make it right; that is simply the wrong, counterintuitive behavior. As mentioned Aqua Data Studio is also a Java application and does auto completion perfectly. And by 'perfectly' I mean it simply 'auto completes'! So it should be possible. And I repeat if we ever get it, you'll find it really does make a big difference.

Re: AutoCompletion upgrade?

PostPosted: Fri Jun 08, 2012 10:28 am
It does make sense that the auto-complete would complete up until the point where you would have more than one option.
So tabbing would complete up until it finds more than one option in that namespace. Hitting return will select the highlighted option in the popuplist.

Voted +1.