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
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
On 05 Oct 2015, at 08:39, Stephan Eggermont <stephan@stack.nl> 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
On 04 Oct 2015, at 23:53, Peter Uhnák <i.uhnak@gmail.com> 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
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
Am 04.10.2015 23:53 schrieb "Peter Uhnák" <i.uhnak@gmail.com>:
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 <https://pharo.fogbugz.com/f/cases/10219/Completion-enter-on-accept-awkwardne...> 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
On 06 Oct 2015, at 09:09, Nicolai Hess <nicolaihess@web.de> wrote:
Am 04.10.2015 23:53 schrieb "Peter Uhnák" <i.uhnak@gmail.com <mailto:i.uhnak@gmail.com>>:
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 <https://pharo.fogbugz.com/f/cases/10219/Completion-enter-on-accept-awkwardne...> 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 <http://www.typescriptlang.org/Playground> )
So if you have any thoughts/feedback/whatnot on this matter, I would greatly appreciate it.
Peter
2015-10-06 10:31 GMT+02:00 Yuriy Tymchuk <yuriy.tymchuk@me.com>:
On 06 Oct 2015, at 09:09, Nicolai Hess <nicolaihess@web.de> wrote:
Am 04.10.2015 23:53 schrieb "Peter Uhnák" <i.uhnak@gmail.com>:
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 <https://pharo.fogbugz.com/f/cases/10219/Completion-enter-on-accept-awkwardne...> 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
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
2015-10-06 11:57 GMT+02:00 Werner Kassens <wkassens@libello.com>:
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
On 06 Oct 2015, at 1:33 , Nicolai Hess <nicolaihess@web.de> wrote:
2015-10-06 11:57 GMT+02:00 Werner Kassens <wkassens@libello.com <mailto:wkassens@libello.com>>: 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... http://www.squeaksource.com/OCompletion/ Cheers, Henry
2015-10-06 13:46 GMT+02:00 Henrik Johansen <henrik.s.johansen@veloxit.no>:
On 06 Oct 2015, at 1:33 , Nicolai Hess <nicolaihess@web.de> wrote:
2015-10-06 11:57 GMT+02:00 Werner Kassens <wkassens@libello.com>:
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... http://www.squeaksource.com/OCompletion/
I can not load it in a recen pharo image. Is it used in recent versions of squeak?
Cheers, Henry
On 06 Oct 2015, at 15:23, Nicolai Hess <nicolaihess@web.de> wrote:
2015-10-06 13:46 GMT+02:00 Henrik Johansen <henrik.s.johansen@veloxit.no <mailto:henrik.s.johansen@veloxit.no>>:
On 06 Oct 2015, at 1:33 , Nicolai Hess <nicolaihess@web.de <mailto:nicolaihess@web.de>> wrote:
2015-10-06 11:57 GMT+02:00 Werner Kassens <wkassens@libello.com <mailto:wkassens@libello.com>>: 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... http://www.squeaksource.com/OCompletion/ <http://www.squeaksource.com/OCompletion/>
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
On 06 Oct 2015, at 15:28, Esteban Lorenzano <estebanlm@gmail.com> wrote:
On 06 Oct 2015, at 15:23, Nicolai Hess <nicolaihess@web.de <mailto:nicolaihess@web.de>> wrote:
2015-10-06 13:46 GMT+02:00 Henrik Johansen <henrik.s.johansen@veloxit.no <mailto:henrik.s.johansen@veloxit.no>>:
On 06 Oct 2015, at 1:33 , Nicolai Hess <nicolaihess@web.de <mailto:nicolaihess@web.de>> wrote:
2015-10-06 11:57 GMT+02:00 Werner Kassens <wkassens@libello.com <mailto:wkassens@libello.com>>: 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... http://www.squeaksource.com/OCompletion/ <http://www.squeaksource.com/OCompletion/>
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
2015-10-06 15:28 GMT+02:00 Esteban Lorenzano <estebanlm@gmail.com>:
On 06 Oct 2015, at 15:23, Nicolai Hess <nicolaihess@web.de> wrote:
2015-10-06 13:46 GMT+02:00 Henrik Johansen <henrik.s.johansen@veloxit.no>:
On 06 Oct 2015, at 1:33 , Nicolai Hess <nicolaihess@web.de> wrote:
2015-10-06 11:57 GMT+02:00 Werner Kassens <wkassens@libello.com>:
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... http://www.squeaksource.com/OCompletion/
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
On 06 Oct 2015, at 15:53, Nicolai Hess <nicolaihess@web.de> wrote:
2015-10-06 15:28 GMT+02:00 Esteban Lorenzano <estebanlm@gmail.com <mailto:estebanlm@gmail.com>>:
On 06 Oct 2015, at 15:23, Nicolai Hess <nicolaihess@web.de <mailto:nicolaihess@web.de>> wrote:
2015-10-06 13:46 GMT+02:00 Henrik Johansen <henrik.s.johansen@veloxit.no <mailto:henrik.s.johansen@veloxit.no>>:
On 06 Oct 2015, at 1:33 , Nicolai Hess <nicolaihess@web.de <mailto:nicolaihess@web.de>> wrote:
2015-10-06 11:57 GMT+02:00 Werner Kassens <wkassens@libello.com <mailto:wkassens@libello.com>>: 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... http://www.squeaksource.com/OCompletion/ <http://www.squeaksource.com/OCompletion/>
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
In fact NOC is the code of romain robbes (we took the best version that he described in his phd) Now the code needs some love. Stef Le 6/10/15 15:53, Nicolai Hess a écrit :
2015-10-06 15:28 GMT+02:00 Esteban Lorenzano <estebanlm@gmail.com <mailto:estebanlm@gmail.com>>:
On 06 Oct 2015, at 15:23, Nicolai Hess <nicolaihess@web.de <mailto:nicolaihess@web.de>> wrote:
2015-10-06 13:46 GMT+02:00 Henrik Johansen <henrik.s.johansen@veloxit.no <mailto:henrik.s.johansen@veloxit.no>>:
On 06 Oct 2015, at 1:33 , Nicolai Hess <nicolaihess@web.de <mailto:nicolaihess@web.de>> wrote:
2015-10-06 11:57 GMT+02:00 Werner Kassens <wkassens@libello.com <mailto:wkassens@libello.com>>:
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... http://www.squeaksource.com/OCompletion/
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
On 06 Oct 2015, at 15:23, Nicolai Hess <nicolaihess@web.de> wrote:
2015-10-06 13:46 GMT+02:00 Henrik Johansen <henrik.s.johansen@veloxit.no <mailto:henrik.s.johansen@veloxit.no>>:
On 06 Oct 2015, at 1:33 , Nicolai Hess <nicolaihess@web.de <mailto:nicolaihess@web.de>> wrote:
2015-10-06 11:57 GMT+02:00 Werner Kassens <wkassens@libello.com <mailto:wkassens@libello.com>>: 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... http://www.squeaksource.com/OCompletion/ <http://www.squeaksource.com/OCompletion/>
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
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
(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).
maybe this is related to Settings > Code Browsing > AST navigation? (I've never actually tried to use this.) On Tue, Oct 6, 2015 at 8:00 PM, stepharo <stepharo@free.fr> wrote:
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
Well I tried to understand how NECompletion works , after a month of reading and rereading code still could not figure out how it works. I understood the basics, but the details were so difficult to really track down. Its very spagetified, a usual pharo issue, and of course undocumented. I decided to move to things that I could be more productive with. This is an area that requires the touch of a Pharo expert. On Tue, Oct 6, 2015 at 10:21 PM Peter Uhnák <i.uhnak@gmail.com> wrote:
(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).
maybe this is related to Settings > Code Browsing > AST navigation? (I've never actually tried to use this.)
On Tue, Oct 6, 2015 at 8:00 PM, stepharo <stepharo@free.fr> wrote:
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
just fwiw, i looked at http://www.squeaksource.com/OCompletion/ and there was a paper about ocompletion mentioned, but the access to this paper was forbidden - at least for me. but at http://users.dcc.uchile.cl/~rrobbes/p/JASE-completion.pdf there is a paper about ocompletion by the same author that explains ocompletion and with that paper ocompletion is easily understandable. werner
On Wed, Oct 7, 2015 at 2:49 PM, Werner Kassens <wkassens@libello.com> wrote:
just fwiw, i looked at http://www.squeaksource.com/OCompletion/ and there was a paper about ocompletion mentioned, but the access to this paper was forbidden - at least for me. but at http://users.dcc.uchile.cl/~rrobbes/p/JASE-completion.pdf there is a paper about ocompletion by the same author that explains ocompletion and with that paper ocompletion is easily understandable. werner
This is different paper, I've posted accessible link earlier: On Mon, Oct 5, 2015 at 9:59 PM, Peter Uhnák <i.uhnak@gmail.com> wrote:
I'm currently going through http://users.dcc.uchile.cl/~rrobbes/p/ASE2008-completion.pdf and http://link.springer.com/article/10.1007/s10515-010-0064-x (dunno if there's non-paywalled link) to get better idea of how it works... and I can already see why there's limited progress :)
But your link provides access to the other (paywalled) paper. :) Peter
thanks Peter werner On 10/07/2015 05:28 PM, Peter Uhnák wrote:
This is different paper, I've posted accessible link earlier:
On Mon, Oct 5, 2015 at 9:59 PM, Peter Uhnák <i.uhnak@gmail.com <mailto:i.uhnak@gmail.com>> wrote:
I'm currently going through http://users.dcc.uchile.cl/~rrobbes/p/ASE2008-completion.pdf and http://link.springer.com/article/10.1007/s10515-010-0064-x (dunno if there's non-paywalled link) to get better idea of how it works... and I can already see why there's limited progress :)
But your link provides access to the other (paywalled) paper. :)
Peter
Hi Peter, the difference between the paper i mentioned (JASE-completion) and ASE2008-completion (both accessible) is, i think, that in the first one also the class-level code completion of ocompletion is explained. (i think that part was later added to ocompletion or so) werner
the code should be in the image :) Le 7/10/15 18:31, Werner Kassens a écrit :
Hi Peter, the difference between the paper i mentioned (JASE-completion) and ASE2008-completion (both accessible) is, i think, that in the first one also the class-level code completion of ocompletion is explained. (i think that part was later added to ocompletion or so) werner
On 10/10/2015 09:50 AM, stepharo wrote:
the code should be in the image :)
Hi Stephane, of course. but sometimes i only discover some nice pharo code by reading a paper. i discovered ocompletion in the image only after having read that paper mentioned by Peter, and - thinking "yes, that should work" - after trying out ocompletion i noticed that it is indeed better than the default setting <g>. werner
But we should improve. It would be good to have someone taking that challenge because he would impact our all lives :) Le 10/10/15 12:22, Werner Kassens a écrit :
On 10/10/2015 09:50 AM, stepharo wrote:
the code should be in the image :)
Hi Stephane, of course. but sometimes i only discover some nice pharo code by reading a paper. i discovered ocompletion in the image only after having read that paper mentioned by Peter, and - thinking "yes, that should work" - after trying out ocompletion i noticed that it is indeed better than the default setting <g>. werner
On 06 Oct 2015, at 21:20, Peter Uhnák <i.uhnak@gmail.com> wrote:
(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).
maybe this is related to Settings > Code Browsing > AST navigation? (I've never actually tried to use this.)
We never used it as we could not use a good key-combination (ctr-arrow keys) due to the VM⦠Now I think it is not in the new editor. We should revisit that: I still like the idea to do navigation by AST structure instead of text. Marcus
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
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
participants (10)
-
Dimitris Chloupis -
Esteban Lorenzano -
Henrik Johansen -
Marcus Denker -
Nicolai Hess -
Peter Uhnák -
Stephan Eggermont -
stepharo -
Werner Kassens -
Yuriy Tymchuk