dart-archive / eclipse3

DEPRECATED - NO LONGER maintained/supported - Eclipse plugins and Dart Editor
8 stars 6 forks source link

Analyzer should always display the completition dropdown menu if the user is typing #39

Open DartBot opened 9 years ago

DartBot commented 9 years ago

Originally opened as https://github.com/dart-lang/sdk/issues/22159

This issue was originally filed by @Emasoft


Analyzer should always display the completition dropdown menu if the user is typing.

Currently there are big delays in the display of the completition dropdown menu because of the index that is currently updating. But the dropdown menu should always be displayed even if the index is under update. The partial completition dropdown should just display an "updating" message or animated icon to communicate its partial and "in progress" state to the user. Also if a dropdown menu is shown too early, because the index is not being updated yet, the user receive an erroneus information about the current available members. Forcing him to press ctrl-space again and again after some intervals is NOT the correct way to handle this. The completition dropdown menu be updated in realtime and should display to the user the current state of the index update. Otherwise it's just impossible for the user to know what is going on, and he ends thinking that if a method or a member is not listed it doesn't exist. It should NEVER be necessary to press ctrl-space, for two reasons:

1 - Because if the user have no clue that a completition dropdown list is incomplete, he almost certainly don't know that he need to press ctrl-space a second time. He would just assume that the first completition list is complete and start coding accordingly.

2 - Because the autocompletition system objective is to allow a quicker typing, and forcing the user to stop the current word he is typing and change the hands position to press a key combination would invalidate the very reason d'etre of the autocompletition system, making it an hindrance instead of an help.

For this reasons the best way is to ALWAYS update the dropdown completition menu in realtime, while it is open floating above the word that is being typed. An animated icon and a message like "updating.." should be always visible at the bottom or at the top of the menu if the index is currently incomplete.

Also,for the same reasons mentioned, the dropdown completition menu should ALWAYS appear instantly while the user is typing, even if the index has not been updated yet or the list is still empty. In this way the feedback of the response will be fast and responsive, and at the same time the user will be able to know the current state of the indexing process. It should always be shown, even when we start typing an empty line. For example if I start typing "v", the menu should appear and "void" should be suggested together with all methods, keywords or classes beginning with v.

Always for the same reasons, the auto completition option for some very common code structures (like declaring a class, a method, writing a property getter/setter, adding a switch or a while or if loop) should not require the user to use some contextual menu, but they should be suggested as the first entries of the completition dropdown menu together with all the other entries. Many refactoring options can also be easily integrated in the same completition dropdown menu, avoiding to the user to stop his typing streak to search for some obscure menu option.

The slow performance of eclipse is already hindering the coding process. Anticipating the display of the completition options means anticipating the needs of the user, and consequently make the coding environment much more responsive than an environment that waits the user input to act.

DartBot commented 9 years ago

Comment by floitschG


Added Area-Analyzer, Triaged labels.

DartBot commented 9 years ago

Comment by bwilkerson


Removed Area-Analyzer label. Added Area-Editor label.

DartBot commented 9 years ago

Comment by clayberg


Set owner to @danrubel. Removed Type-Defect, Priority-Unassigned labels. Added Type-Enhancement, Priority-Medium labels.