> On 06 Oct 2015, at 09:09, Nicolai Hess <nicolaih...@web.de> wrote: > > > Am 04.10.2015 23:53 schrieb "Peter Uhnák" <i.uh...@gmail.com > <mailto:i.uh...@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-awkwardness> > 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 > >