Better Code Completion

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
31 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Better Code Completion

Peter Uhnak
This is both rant and list of questions/notes/observations...

...but first of all:
do Smalltalkers not like code completion? Because the one in Pharo is really poor and not only that nobody is doing anything about it, but also nobody is complaining; this leads me to believe that you either

a) don't have the manpower (this is true pretty much always, so no complaints here)
b) don't care about this that much (since you lived without it for 45 years)

at least from the lack of complaining to me it seems that b) is more likely scenario...

But since I do use it, I get annoyed by it quite a bit, especially since I regularly work in IDEs where this thousand times better.

Now I would like to get things moving a bit (or bury it and forget it), so I have couple of questions and would appreciate if someone could provide some feedback.

1. Methods of core/top classes should be deprioritized

Since Object has almost 500 methods whatever I will start typing Object/TClass/TBehavior/... will have a list of answers...

so let's start typing...





Very often I have to type almost full word to see what I want.
Shouldn't the completion follow the inheritance chain? So first it shows me matches from the class itself (especially since it actually knows the type) and only after then it's parents and so on?

3. Or maybe even show the (closest) class that implements it.
So the last two items would have somewhere (beginning or the end) written '(Object)' and the first two '(yourself)' (or the class's name).


2. The window has fixed size, so if I have longer method (as in picture above) I don't see it all.

3. Is middle-of-the word really that often used? See moseIntere<sti>ngEntity above. It feels to me that it just creates a lot of false positives (I have this problem also with inspector btw, so I often have to prefix it with >># or if I see it already lot of <arrow down>, which is annoying)



4. We write tests, however how often have you manually created an instance of a test class by hand? I think they should be either filtered or deprioritized as they create visual clutter. This is probably also true for many other classes such as ConfigurationOf/Manifest/... Nobody instantiates them by hand.

5. How often do you send #abs to a dictionary? Maybe also deprioritize extension methods?


6. If I have already written part of the selector it's impossible to "continue" and add an extra parameter. This is because it doesn't know if I am code completing for dict, or #key.
Maybe different shortcuts? <tab> to code complete on #key, and <shift+tab> to code complete on the previous one... or maybe cycle through them because this can be nested (the currently code completed item would have to be highlighted somehow).


7. So if I don't want to see the above I have to type it manually; which is fine for #at:put: but not for longer words.. (just to find out ten seconds later that I have a stupid typo there).

8. The code completion doesn't show parameter names. This is very helpful because it often reveals what it actually accepts. Now I have to actually look into the code of the method.

Now we can hardly compete with typed languages, but I think there's a lot lot room for improvement.

For comparison from other languages/IDE's.

PhpStorm/PHP

(notice how it shows the whole method if it's longer than the window and doesn't it just clip)​

NetBeans/C++



In the picture above it ​still provides hinting when typing the parameter.

TypeScript playground


​(similar to NetBeans)

Also they have in their online playground better and nicer code completion than we have in actual env (http://www.typescriptlang.org/Playground )

So if you have any thoughts/feedback/whatnot on this matter, I would greatly appreciate it.

Peter

Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

Stephan Eggermont-3
On 04/10/15 23:53, Peter Uhnák wrote:
> This is both rant and list of questions/notes/observations...
>
> ...but first of all:
> do Smalltalkers not like code completion? Because the one in Pharo is
> really poor and not only that nobody is doing anything about it, *but
> also nobody is complaining*; this leads me to believe that you either
>
> a) don't have the manpower (this is true pretty much always, so no
> complaints here)

Definitely.
The issue tracker has lots of interesting completion related issues,
like https://pharo.fogbugz.com/f/cases/13124/NECContext-needs-plugin-design

Stephan



Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

Marcus Denker-4

> On 05 Oct 2015, at 08:39, Stephan Eggermont <[hidden email]> wrote:
>
> On 04/10/15 23:53, Peter Uhnák wrote:
>> This is both rant and list of questions/notes/observations...
>>
>> ...but first of all:
>> do Smalltalkers not like code completion? Because the one in Pharo is
>> really poor and not only that nobody is doing anything about it, *but
>> also nobody is complaining*; this leads me to believe that you either
>>
>> a) don't have the manpower (this is true pretty much always, so no
>> complaints here)
>
> Definitely.
> The issue tracker has lots of interesting completion related issues, like https://pharo.fogbugz.com/f/cases/13124/NECContext-needs-plugin-design
>

Yes, and we need to change it to use the AST instead of Shout… that could simplify it a lot.

        Marcus


Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

Marcus Denker-4
In reply to this post by Peter Uhnak

On 04 Oct 2015, at 23:53, Peter Uhnák <[hidden email]> wrote:

This is both rant and list of questions/notes/observations...

...but first of all:
do Smalltalkers not like code completion? Because the one in Pharo is really poor and not only that nobody is doing anything about it, but also nobody is complaining; this leads me to believe that you either

a) don't have the manpower (this is true pretty much always, so no complaints here)
true. 

b) don't care about this that much (since you lived without it for 45 years)

at least from the lack of complaining to me it seems that b) is more likely scenario...

I think people know that complaining does not help… 

It would be nice to improve this (an 1000 other things, too ;-)

Marcus
Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

stepharo
In reply to this post by Peter Uhnak


Le 4/10/15 23:53, Peter Uhnák a écrit :
This is both rant and list of questions/notes/observations...

...but first of all:
do Smalltalkers not like code completion? Because the one in Pharo is really poor and not only that nobody is doing anything about it, but also nobody is complaining; this leads me to believe that you either

No I'm complaining all the time but it is useless when we did have ressources.
In addition we did not work  on it because a student from delft was planning to work on it but he went to the US.

a) don't have the manpower (this is true pretty much always, so no complaints here)
This one.


b) don't care about this that much (since you lived without it for 45 years)

at least from the lack of complaining to me it seems that b) is more likely scenario...
no
But since I do use it, I get annoyed by it quite a bit, especially since I regularly work in IDEs where this thousand times better.

Now I would like to get things moving a bit (or bury it and forget it), so I have couple of questions and would appreciate if someone could provide some feedback.

1. Methods of core/top classes should be deprioritized

I do not get what you mean


Since Object has almost 500 methods whatever I will start typing Object/TClass/TBehavior/... will have a list of answers...

so let's start typing...





Very often I have to type almost full word to see what I want.
Shouldn't the completion follow the inheritance chain? So first it shows me matches from the class itself (especially since it actually knows the type) and only after then it's parents and so on?

3. Or maybe even show the (closest) class that implements it.
So the last two items would have somewhere (beginning or the end) written '(Object)' and the first two '(yourself)' (or the class's name).


2. The window has fixed size, so if I have longer method (as in picture above) I don't see it all.

3. Is middle-of-the word really that often used? See moseIntere<sti>ngEntity above. It feels to me that it just creates a lot of false positives (I have this problem also with inspector btw, so I often have to prefix it with >># or if I see it already lot of <arrow down>, which is annoying)



4. We write tests, however how often have you manually created an instance of a test class by hand? I think they should be either filtered or deprioritized as they create visual clutter. This is probably also true for many other classes such as ConfigurationOf/Manifest/... Nobody instantiates them by hand.

5. How often do you send #abs to a dictionary? Maybe also deprioritize extension methods?


6. If I have already written part of the selector it's impossible to "continue" and add an extra parameter. This is because it doesn't know if I am code completing for dict, or #key.
Maybe different shortcuts? <tab> to code complete on #key, and <shift+tab> to code complete on the previous one... or maybe cycle through them because this can be nested (the currently code completed item would have to be highlighted somehow).


7. So if I don't want to see the above I have to type it manually; which is fine for #at:put: but not for longer words.. (just to find out ten seconds later that I have a stupid typo there).

8. The code completion doesn't show parameter names. This is very helpful because it often reveals what it actually accepts. Now I have to actually look into the code of the method.

Now we can hardly compete with typed languages, but I think there's a lot lot room for improvement.

For comparison from other languages/IDE's.

PhpStorm/PHP

(notice how it shows the whole method if it's longer than the window and doesn't it just clip)​

NetBeans/C++



In the picture above it ​still provides hinting when typing the parameter.

TypeScript playground


​(similar to NetBeans)

Also they have in their online playground better and nicer code completion than we have in actual env (http://www.typescriptlang.org/Playground )

So if you have any thoughts/feedback/whatnot on this matter, I would greatly appreciate it.

Peter


Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

Nicolai Hess
In reply to this post by Peter Uhnak


Am 04.10.2015 23:53 schrieb "Peter Uhnák" <[hidden email]>:
>
> This is both rant and list of questions/notes/observations...
>
> ...but first of all:
> do Smalltalkers not like code completion? Because the one in Pharo is really poor and not only that nobody is doing anything about it, but also nobody is complaining; this leads me to believe that you either
>
> a) don't have the manpower (this is true pretty much always, so no complaints here)
> b) don't care about this that much (since you lived without it for 45 years)
>
> at least from the lack of complaining to me it seems that b) is more likely scenario...
>
> But since I do use it, I get annoyed by it quite a bit, especially since I regularly work in IDEs where this thousand times better.


Can you Name one, for a dynamic OO -  language?
(Maybe we can borrow some ideas).


>
> Now I would like to get things moving a bit (or bury it and forget it), so I have couple of questions and would appreciate if someone could provide some feedback.
>
> 1. Methods of core/top classes should be deprioritized
>
> Since Object has almost 500 methods whatever I will start typing Object/TClass/TBehavior/... will have a list of answers...

I think this is difficult, even though this classes are big and you don't use most of the methods,

are you sure we dont use some of the methods  *often*.  Morphic, ComposeableModel or many collection classes, for example.

>
> so let's start typing...
>
>
>
>
>
> Very often I have to type almost full word to see what I want.

This is doesn't happen often to me. It is far from perfect but most of the time I only type a small part and find the correct completion.


> Shouldn't the completion follow the inheritance chain? So first it shows me matches from the class itself (especially since it actually knows the type) and only after then it's parents and so on?

Currently, it only collects all selectors into  a set and sorts by matching and length.

We could add the class info and sort by inheritance distance.

This needs some change how sorting is implemented, for now,it is typeless and may need some double dispatching.


>
> 3. Or maybe even show the (closest) class that implements it.
> So the last two items would have somewhere (beginning or the end) written '(Object)' and the first two '(yourself)' (or the class's name).

This needs some additional work too, now the menu text  is the actual completion content. But it

shouldn't be that difficult and some code looks like it was intended to work that way.

>
>
> 2. The window has fixed size, so if I have longer method (as in picture above) I don't see it all.
>
> 3. Is middle-of-the word really that often used? See moseIntere<sti>ngEntity above. It feels to me that it just creates a lot of false positives (I have this problem also with inspector btw, so I often have to prefix it with >># or if I see it already lot of <arrow down>, which is annoying)

I often search for "Dictionary" or "Morph" and expect results even if the typed word is not at the beginning, quite often.


>
>
>
> 4. We write tests, however how often have you manually created an instance of a test class by hand? I think they should be either filtered or deprioritized as they create visual clutter. This is probably also true for many other classes such as ConfigurationOf/Manifest/... Nobody instantiates them by hand.

Be careful will statements like "nobody ...."

I do a lot of reviews for pharo issues, and this involves working in workspace and instantiating classes  (Yes, Tests, Refactoring, LintRules) most people don't use them this way but by the tools (SUnit, CriticBrowser)

But I do.



>
> 5. How often do you send #abs to a dictionary?

seldom, never? but how could a completion framework detect that?


>
>
> 6. If I have already written part of the selector it's impossible to "continue" and add an extra parameter. This is because it doesn't know if I am code completing for dict, or #key.
> Maybe different shortcuts? <tab> to code complete on #key, and <shift+tab> to code complete on the previous one...

good idea!

(did you know, that there is a shortcut to jump from one message send argument to another (not related to completion, but very helpful). Sadly this is gone or I couldn't find

it in rubrics shortcut handling).

> or maybe cycle through them because this can be nested (the currently code completed item would have to be highlighted somehow).
>
>
> 7. So if I don't want to see the above I have to type it manually; which is fine for #at:put: but not for longer words.. (just to find out ten seconds later that I have a stupid typo there).
>
> 8. The code completion doesn't show parameter names. This is very helpful because it often reveals what it actually accepts. Now I have to actually look into the code of the method.

Yes, I tried to change that for issue "10219 Completion: enter on accept awkwardness", but again, the completion only knows about the methodDict keys, the selector,

not the mehod code. But I would like to change that and test if it is much slow.


>
> Now we can hardly compete with typed languages, but I think there's a lot lot room for improvement.
>
> For comparison from other languages/IDE's.
>
> PhpStorm/PHP
>
> (notice how it shows the whole method if it's longer than the window and doesn't it just clip)​
>
> NetBeans/C++
>
>
>
> In the picture above it ​still provides hinting when typing the parameter.
>
> TypeScript playground
>
>
> ​(similar to NetBeans)
>
> Also they have in their online playground better and nicer code completion than we have in actual env (http://www.typescriptlang.org/Playground )
>
> So if you have any thoughts/feedback/whatnot on this matter, I would greatly appreciate it.




>
> Peter
>

Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

Stephan Eggermont-3
In reply to this post by Peter Uhnak
On 04-10-15 23:53, Peter Uhnák wrote:
> 3. Is middle-of-the word really that often used? See
> moseIntere<sti>ngEntity above. It feels to me that it just creates a lot of
> false positives (I have this problem also with inspector btw, so I often
> have to prefix it with >># or if I see it already lot of <arrow down>,
> which is annoying)

One of the things we can do is detect prefixes. If all classes in a
package start with the same two letters...

Stephan


Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

Uko2
In reply to this post by Nicolai Hess

On 06 Oct 2015, at 09:09, Nicolai Hess <[hidden email]> wrote:


Am 04.10.2015 23:53 schrieb "Peter Uhnák" <[hidden email]>:
>
> This is both rant and list of questions/notes/observations...
>
> ...but first of all:
> do Smalltalkers not like code completion? Because the one in Pharo is really poor and not only that nobody is doing anything about it, but also nobody is complaining; this leads me to believe that you either
>
> a) don't have the manpower (this is true pretty much always, so no complaints here)
> b) don't care about this that much (since you lived without it for 45 years)
>
> at least from the lack of complaining to me it seems that b) is more likely scenario...
>
> But since I do use it, I get annoyed by it quite a bit, especially since I regularly work in IDEs where this thousand times better.


Can you Name one, for a dynamic OO -  language?
(Maybe we can borrow some ideas).



Ruby?

I think that RubyMine has to do something with code completion.

Uko


>
> Now I would like to get things moving a bit (or bury it and forget it), so I have couple of questions and would appreciate if someone could provide some feedback.
>
> 1. Methods of core/top classes should be deprioritized
>
> Since Object has almost 500 methods whatever I will start typing Object/TClass/TBehavior/... will have a list of answers...

I think this is difficult, even though this classes are big and you don't use most of the methods,

are you sure we dont use some of the methods  *often*.  Morphic, ComposeableModel or many collection classes, for example.

>
> so let's start typing...
>
>
>
>
>
> Very often I have to type almost full word to see what I want.

This is doesn't happen often to me. It is far from perfect but most of the time I only type a small part and find the correct completion.


> Shouldn't the completion follow the inheritance chain? So first it shows me matches from the class itself (especially since it actually knows the type) and only after then it's parents and so on?

Currently, it only collects all selectors into  a set and sorts by matching and length.

We could add the class info and sort by inheritance distance.

This needs some change how sorting is implemented, for now,it is typeless and may need some double dispatching.


>
> 3. Or maybe even show the (closest) class that implements it.
> So the last two items would have somewhere (beginning or the end) written '(Object)' and the first two '(yourself)' (or the class's name).

This needs some additional work too, now the menu text  is the actual completion content. But it

shouldn't be that difficult and some code looks like it was intended to work that way.

>
>
> 2. The window has fixed size, so if I have longer method (as in picture above) I don't see it all.
>
> 3. Is middle-of-the word really that often used? See moseIntere<sti>ngEntity above. It feels to me that it just creates a lot of false positives (I have this problem also with inspector btw, so I often have to prefix it with >># or if I see it already lot of <arrow down>, which is annoying)

I often search for "Dictionary" or "Morph" and expect results even if the typed word is not at the beginning, quite often.



>
>
>
> 4. We write tests, however how often have you manually created an instance of a test class by hand? I think they should be either filtered or deprioritized as they create visual clutter. This is probably also true for many other classes such as ConfigurationOf/Manifest/... Nobody instantiates them by hand.

Be careful will statements like "nobody ...."

I do a lot of reviews for pharo issues, and this involves working in workspace and instantiating classes  (Yes, Tests, Refactoring, LintRules) most people don't use them this way but by the tools (SUnit, CriticBrowser)

But I do.



>
> 5. How often do you send #abs to a dictionary?

seldom, never? but how could a completion framework detect that?



>
>
> 6. If I have already written part of the selector it's impossible to "continue" and add an extra parameter. This is because it doesn't know if I am code completing for dict, or #key.
> Maybe different shortcuts? <tab> to code complete on #key, and <shift+tab> to code complete on the previous one...

good idea!

(did you know, that there is a shortcut to jump from one message send argument to another (not related to completion, but very helpful). Sadly this is gone or I couldn't find

it in rubrics shortcut handling).

> or maybe cycle through them because this can be nested (the currently code completed item would have to be highlighted somehow).
>
>
> 7. So if I don't want to see the above I have to type it manually; which is fine for #at:put: but not for longer words.. (just to find out ten seconds later that I have a stupid typo there).
>
> 8. The code completion doesn't show parameter names. This is very helpful because it often reveals what it actually accepts. Now I have to actually look into the code of the method.

Yes, I tried to change that for issue "10219 Completion: enter on accept awkwardness", but again, the completion only knows about the methodDict keys, the selector,

not the mehod code. But I would like to change that and test if it is much slow.


>
> Now we can hardly compete with typed languages, but I think there's a lot lot room for improvement.
>
> For comparison from other languages/IDE's.
>
> PhpStorm/PHP
>
> (notice how it shows the whole method if it's longer than the window and doesn't it just clip)​
>
> NetBeans/C++
>
>
>
> In the picture above it ​still provides hinting when typing the parameter.
>
> TypeScript playground
>
>
> ​(similar to NetBeans)
>
> Also they have in their online playground better and nicer code completion than we have in actual env (http://www.typescriptlang.org/Playground )
>
> So if you have any thoughts/feedback/whatnot on this matter, I would greatly appreciate it.




>
> Peter
>


Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

wernerk
In reply to this post by Nicolai Hess
On 10/06/2015 09:09 AM, Nicolai Hess wrote:
>  > Since Object has almost 500 methods whatever I will start typing
> Object/TClass/TBehavior/... will have a list of answers...
>
> I think this is difficult, even though this classes are big and you
> don't use most of the methods,
>

Hi Nicolai,
imagine that code-completion is a game and the computer wins, if the
user mostly uses the first few proposals. perhaps one could program
several different heuristics, that decide, what the user wants.
depending on the user choices, the weights for these heuristics get
updated accordingly and then the choices get sorted with those weights.
this way the code-completion could adapt to the way each user works?
werner

Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

Nicolai Hess
In reply to this post by Uko2


2015-10-06 10:31 GMT+02:00 Yuriy Tymchuk <[hidden email]>:

On 06 Oct 2015, at 09:09, Nicolai Hess <[hidden email]> wrote:


Am 04.10.2015 23:53 schrieb "Peter Uhnák" <[hidden email]>:
>
> This is both rant and list of questions/notes/observations...
>
> ...but first of all:
> do Smalltalkers not like code completion? Because the one in Pharo is really poor and not only that nobody is doing anything about it, but also nobody is complaining; this leads me to believe that you either
>
> a) don't have the manpower (this is true pretty much always, so no complaints here)
> b) don't care about this that much (since you lived without it for 45 years)
>
> at least from the lack of complaining to me it seems that b) is more likely scenario...
>
> But since I do use it, I get annoyed by it quite a bit, especially since I regularly work in IDEs where this thousand times better.


Can you Name one, for a dynamic OO -  language?
(Maybe we can borrow some ideas).



Ruby?

I think that RubyMine has to do something with code completion.

Wow, that looks great, do you work with it?
 

Uko


>
> Now I would like to get things moving a bit (or bury it and forget it), so I have couple of questions and would appreciate if someone could provide some feedback.
>
> 1. Methods of core/top classes should be deprioritized
>
> Since Object has almost 500 methods whatever I will start typing Object/TClass/TBehavior/... will have a list of answers...

I think this is difficult, even though this classes are big and you don't use most of the methods,

are you sure we dont use some of the methods  *often*.  Morphic, ComposeableModel or many collection classes, for example.

>
> so let's start typing...
>
>
>
>
>
> Very often I have to type almost full word to see what I want.

This is doesn't happen often to me. It is far from perfect but most of the time I only type a small part and find the correct completion.


> Shouldn't the completion follow the inheritance chain? So first it shows me matches from the class itself (especially since it actually knows the type) and only after then it's parents and so on?

Currently, it only collects all selectors into  a set and sorts by matching and length.

We could add the class info and sort by inheritance distance.

This needs some change how sorting is implemented, for now,it is typeless and may need some double dispatching.


>
> 3. Or maybe even show the (closest) class that implements it.
> So the last two items would have somewhere (beginning or the end) written '(Object)' and the first two '(yourself)' (or the class's name).

This needs some additional work too, now the menu text  is the actual completion content. But it

shouldn't be that difficult and some code looks like it was intended to work that way.

>
>
> 2. The window has fixed size, so if I have longer method (as in picture above) I don't see it all.
>
> 3. Is middle-of-the word really that often used? See moseIntere<sti>ngEntity above. It feels to me that it just creates a lot of false positives (I have this problem also with inspector btw, so I often have to prefix it with >># or if I see it already lot of <arrow down>, which is annoying)

I often search for "Dictionary" or "Morph" and expect results even if the typed word is not at the beginning, quite often.



>
>
>
> 4. We write tests, however how often have you manually created an instance of a test class by hand? I think they should be either filtered or deprioritized as they create visual clutter. This is probably also true for many other classes such as ConfigurationOf/Manifest/... Nobody instantiates them by hand.

Be careful will statements like "nobody ...."

I do a lot of reviews for pharo issues, and this involves working in workspace and instantiating classes  (Yes, Tests, Refactoring, LintRules) most people don't use them this way but by the tools (SUnit, CriticBrowser)

But I do.



>
> 5. How often do you send #abs to a dictionary?

seldom, never? but how could a completion framework detect that?



>
>
> 6. If I have already written part of the selector it's impossible to "continue" and add an extra parameter. This is because it doesn't know if I am code completing for dict, or #key.
> Maybe different shortcuts? <tab> to code complete on #key, and <shift+tab> to code complete on the previous one...

good idea!

(did you know, that there is a shortcut to jump from one message send argument to another (not related to completion, but very helpful). Sadly this is gone or I couldn't find

it in rubrics shortcut handling).

> or maybe cycle through them because this can be nested (the currently code completed item would have to be highlighted somehow).
>
>
> 7. So if I don't want to see the above I have to type it manually; which is fine for #at:put: but not for longer words.. (just to find out ten seconds later that I have a stupid typo there).
>
> 8. The code completion doesn't show parameter names. This is very helpful because it often reveals what it actually accepts. Now I have to actually look into the code of the method.

Yes, I tried to change that for issue "10219 Completion: enter on accept awkwardness", but again, the completion only knows about the methodDict keys, the selector,

not the mehod code. But I would like to change that and test if it is much slow.


>
> Now we can hardly compete with typed languages, but I think there's a lot lot room for improvement.
>
> For comparison from other languages/IDE's.
>
> PhpStorm/PHP
>
> (notice how it shows the whole method if it's longer than the window and doesn't it just clip)​
>
> NetBeans/C++
>
>
>
> In the picture above it ​still provides hinting when typing the parameter.
>
> TypeScript playground
>
>
> ​(similar to NetBeans)
>
> Also they have in their online playground better and nicer code completion than we have in actual env (http://www.typescriptlang.org/Playground )
>
> So if you have any thoughts/feedback/whatnot on this matter, I would greatly appreciate it.




>
> Peter
>



Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

Nicolai Hess
In reply to this post by wernerk


2015-10-06 11:57 GMT+02:00 Werner Kassens <[hidden email]>:
On 10/06/2015 09:09 AM, Nicolai Hess wrote:
 > Since Object has almost 500 methods whatever I will start typing
Object/TClass/TBehavior/... will have a list of answers...

I think this is difficult, even though this classes are big and you
don't use most of the methods,


Hi Nicolai,
imagine that code-completion is a game and the computer wins, if the user mostly uses the first few proposals. perhaps one could program several different heuristics, that decide, what the user wants. depending on the user choices, the weights for these heuristics get updated accordingly and then the choices get sorted with those weights. this way the code-completion could adapt to the way each user works?


Yes this would be nice, but it is not an easy task.
 
werner


Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

Henrik Sperre Johansen

On 06 Oct 2015, at 1:33 , Nicolai Hess <[hidden email]> wrote:



2015-10-06 11:57 GMT+02:00 Werner Kassens <[hidden email]>:
On 10/06/2015 09:09 AM, Nicolai Hess wrote:
 > Since Object has almost 500 methods whatever I will start typing
Object/TClass/TBehavior/... will have a list of answers...

I think this is difficult, even though this classes are big and you
don't use most of the methods,


Hi Nicolai,
imagine that code-completion is a game and the computer wins, if the user mostly uses the first few proposals. perhaps one could program several different heuristics, that decide, what the user wants. depending on the user choices, the weights for these heuristics get updated accordingly and then the choices get sorted with those weights. this way the code-completion could adapt to the way each user works?


Yes this would be nice, but it is not an easy task.
 
werner



I thought we already had something like that...

Cheers,
Henry

signature.asc (859 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

stepharo
In reply to this post by wernerk
Part of the Phd of Romain Robbes was about comparing completion
algorithms. And NOC/NEC are part of the results
but it needs a real pass.

Stef

>
> Hi Nicolai,
> imagine that code-completion is a game and the computer wins, if the
> user mostly uses the first few proposals. perhaps one could program
> several different heuristics, that decide, what the user wants.
> depending on the user choices, the weights for these heuristics get
> updated accordingly and then the choices get sorted with those
> weights. this way the code-completion could adapt to the way each user
> works?
> werner
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

Nicolai Hess
In reply to this post by Henrik Sperre Johansen


2015-10-06 13:46 GMT+02:00 Henrik Johansen <[hidden email]>:

On 06 Oct 2015, at 1:33 , Nicolai Hess <[hidden email]> wrote:



2015-10-06 11:57 GMT+02:00 Werner Kassens <[hidden email]>:
On 10/06/2015 09:09 AM, Nicolai Hess wrote:
 > Since Object has almost 500 methods whatever I will start typing
Object/TClass/TBehavior/... will have a list of answers...

I think this is difficult, even though this classes are big and you
don't use most of the methods,


Hi Nicolai,
imagine that code-completion is a game and the computer wins, if the user mostly uses the first few proposals. perhaps one could program several different heuristics, that decide, what the user wants. depending on the user choices, the weights for these heuristics get updated accordingly and then the choices get sorted with those weights. this way the code-completion could adapt to the way each user works?


Yes this would be nice, but it is not an easy task.
 
werner



I thought we already had something like that...

I can not load it in a recen pharo image.
Is it used in recent versions of squeak?

 

Cheers,
Henry

Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

EstebanLM

On 06 Oct 2015, at 15:23, Nicolai Hess <[hidden email]> wrote:



2015-10-06 13:46 GMT+02:00 Henrik Johansen <[hidden email]>:

On 06 Oct 2015, at 1:33 , Nicolai Hess <[hidden email]> wrote:



2015-10-06 11:57 GMT+02:00 Werner Kassens <[hidden email]>:
On 10/06/2015 09:09 AM, Nicolai Hess wrote:
 > Since Object has almost 500 methods whatever I will start typing
Object/TClass/TBehavior/... will have a list of answers...

I think this is difficult, even though this classes are big and you
don't use most of the methods,


Hi Nicolai,
imagine that code-completion is a game and the computer wins, if the user mostly uses the first few proposals. perhaps one could program several different heuristics, that decide, what the user wants. depending on the user choices, the weights for these heuristics get updated accordingly and then the choices get sorted with those weights. this way the code-completion could adapt to the way each user works?


Yes this would be nice, but it is not an easy task.
 
werner



I thought we already had something like that...

I can not load it in a recen pharo image.
Is it used in recent versions of squeak?

OCompletion is already in the image (since Pharo 2.0). 
if you check your settings, under "Code Completion”, Controller… it should say NOCController. 
Is a lot better than older NECController, but still far from good enough.

Esteban



 

Cheers,
Henry


Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

Marcus Denker-4
In reply to this post by Nicolai Hess

On 06 Oct 2015, at 15:23, Nicolai Hess <[hidden email]> wrote:



2015-10-06 13:46 GMT+02:00 Henrik Johansen <[hidden email]>:

On 06 Oct 2015, at 1:33 , Nicolai Hess <[hidden email]> wrote:



2015-10-06 11:57 GMT+02:00 Werner Kassens <[hidden email]>:
On 10/06/2015 09:09 AM, Nicolai Hess wrote:
 > Since Object has almost 500 methods whatever I will start typing
Object/TClass/TBehavior/... will have a list of answers...

I think this is difficult, even though this classes are big and you
don't use most of the methods,


Hi Nicolai,
imagine that code-completion is a game and the computer wins, if the user mostly uses the first few proposals. perhaps one could program several different heuristics, that decide, what the user wants. depending on the user choices, the weights for these heuristics get updated accordingly and then the choices get sorted with those weights. this way the code-completion could adapt to the way each user works?


Yes this would be nice, but it is not an easy task.
 
werner



I thought we already had something like that...

I can not load it in a recen pharo image.
Is it used in recent versions of squeak?

This is already in Pharo. It is merged into the one completion package.

Marcus

Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

Marcus Denker-4
In reply to this post by EstebanLM

On 06 Oct 2015, at 15:28, Esteban Lorenzano <[hidden email]> wrote:


On 06 Oct 2015, at 15:23, Nicolai Hess <[hidden email]> wrote:



2015-10-06 13:46 GMT+02:00 Henrik Johansen <[hidden email]>:

On 06 Oct 2015, at 1:33 , Nicolai Hess <[hidden email]> wrote:



2015-10-06 11:57 GMT+02:00 Werner Kassens <[hidden email]>:
On 10/06/2015 09:09 AM, Nicolai Hess wrote:
 > Since Object has almost 500 methods whatever I will start typing
Object/TClass/TBehavior/... will have a list of answers...

I think this is difficult, even though this classes are big and you
don't use most of the methods,


Hi Nicolai,
imagine that code-completion is a game and the computer wins, if the user mostly uses the first few proposals. perhaps one could program several different heuristics, that decide, what the user wants. depending on the user choices, the weights for these heuristics get updated accordingly and then the choices get sorted with those weights. this way the code-completion could adapt to the way each user works?


Yes this would be nice, but it is not an easy task.
 
werner



I thought we already had something like that...

I can not load it in a recen pharo image.
Is it used in recent versions of squeak?

OCompletion is already in the image (since Pharo 2.0). 
if you check your settings, under "Code Completion”, Controller… it should say NOCController. 
Is a lot better than older NECController, but still far from good enough.


and strangely not the default. I remember setting it multiple times as the default, but it was reverted
somehow.

   Marcus

Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

Nicolai Hess
In reply to this post by EstebanLM


2015-10-06 15:28 GMT+02:00 Esteban Lorenzano <[hidden email]>:

On 06 Oct 2015, at 15:23, Nicolai Hess <[hidden email]> wrote:



2015-10-06 13:46 GMT+02:00 Henrik Johansen <[hidden email]>:

On 06 Oct 2015, at 1:33 , Nicolai Hess <[hidden email]> wrote:



2015-10-06 11:57 GMT+02:00 Werner Kassens <[hidden email]>:
On 10/06/2015 09:09 AM, Nicolai Hess wrote:
 > Since Object has almost 500 methods whatever I will start typing
Object/TClass/TBehavior/... will have a list of answers...

I think this is difficult, even though this classes are big and you
don't use most of the methods,


Hi Nicolai,
imagine that code-completion is a game and the computer wins, if the user mostly uses the first few proposals. perhaps one could program several different heuristics, that decide, what the user wants. depending on the user choices, the weights for these heuristics get updated accordingly and then the choices get sorted with those weights. this way the code-completion could adapt to the way each user works?


Yes this would be nice, but it is not an easy task.
 
werner



I thought we already had something like that...

I can not load it in a recen pharo image.
Is it used in recent versions of squeak?

OCompletion is already in the image (since Pharo 2.0). 
if you check your settings, under "Code Completion”, Controller… it should say NOCController. 

Funny, I always thought the NOC-Classes are some kind of "Old" NEC-Classes.
 
Is a lot better than older NECController, but still far from good enough.

Some more information on this? What is missing.

 

Esteban



 

Cheers,
Henry



Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

EstebanLM

On 06 Oct 2015, at 15:53, Nicolai Hess <[hidden email]> wrote:



2015-10-06 15:28 GMT+02:00 Esteban Lorenzano <[hidden email]>:

On 06 Oct 2015, at 15:23, Nicolai Hess <[hidden email]> wrote:



2015-10-06 13:46 GMT+02:00 Henrik Johansen <[hidden email]>:

On 06 Oct 2015, at 1:33 , Nicolai Hess <[hidden email]> wrote:



2015-10-06 11:57 GMT+02:00 Werner Kassens <[hidden email]>:
On 10/06/2015 09:09 AM, Nicolai Hess wrote:
 > Since Object has almost 500 methods whatever I will start typing
Object/TClass/TBehavior/... will have a list of answers...

I think this is difficult, even though this classes are big and you
don't use most of the methods,


Hi Nicolai,
imagine that code-completion is a game and the computer wins, if the user mostly uses the first few proposals. perhaps one could program several different heuristics, that decide, what the user wants. depending on the user choices, the weights for these heuristics get updated accordingly and then the choices get sorted with those weights. this way the code-completion could adapt to the way each user works?


Yes this would be nice, but it is not an easy task.
 
werner



I thought we already had something like that...

I can not load it in a recen pharo image. 
Is it used in recent versions of squeak?

OCompletion is already in the image (since Pharo 2.0). 
if you check your settings, under "Code Completion”, Controller… it should say NOCController. 

Funny, I always thought the NOC-Classes are some kind of "Old" NEC-Classes.
 
Is a lot better than older NECController, but still far from good enough.

Some more information on this? What is missing.

ECompletion was just a list of matching classes/selectors
OCompletion added some candy like showing first last typed entries (with some other heuristic). AFAIR It was scanning changes file to do it so Camilo changed it to do something more “image based” (and fast), but we never got happy with the results. 
IMO older version was a bit better (but do not be mistaken: it was just “a bit” better… we changed it because Marcus hated it, and I think he still does :P) 

So there you have… we need a real completion tool, I agree…  :)

Esteban


 

Esteban



 

Cheers,
Henry

Reply | Threaded
Open this post in threaded view
|

Re: Better Code Completion

stepharo
In reply to this post by Nicolai Hess
About an alternative way to do code completion:

This is the paper: http://macbeth.cs.ucdavis.edu/cacheca.pdf
this is the code repository: https://github.com/christinef/CACHECA
and this is the tool in action: https://www.youtube.com/watch?v=3INk0N3JNtc

This was the student I was in contact with.

Stef

12