I am relatively new to ReSharper, but since I worked on some C++ projects with VisualAssistX in the past, I am missing some nice IntelliSense features VAX provides. Now I am aware of the fact that not everyone likes dynamic interfaces (Microsoft's dynamic menus in their 2003 products failed because most people prefere a stable interface), but after some settling in period I found VAX' extended IntelliSense to actually increase my coding efficiency. In fact its almost annoying sometimes to work with a 'dumb' IntelliSense without these abilities, so I want to share some ideas for possible IntelliSense improvements based on VAX and some of my own ideas:
- the order of suggested code is not sorted alphabetically but instead context aware
- the preselected suggestion not only depends on the datatype of a member but also on similarities of their identifiers
- eg.: if I have two int parameters and I want to copy one to a different variable (eg.: constructor parameter to local member) then if the identifyer is similar to one of the two int parameter it would preselect that one
- eg.: if I call a method and pass parameters to it, it would prefer members from the context whose identifyers are similar to the name of the method
- when I am in a code block for initializing members, the members which already got initialize should not be preselected or sorted on top of the IntelliSense list, instead those which are not initialized yet should be on top
- IntelliSense not only suggests terminal symbols, classes, methods and members, but also assignments or other code fragments from similar context
- eg.: if I have initialized a member of a certain type with zero in the constructor before, this gets suggested when I type the identifyer for member of the same type or similar identifyer in a different constructor
- eg.: when I write a Linq query the next suggestion could be a foreach loop already initialized to loop through it
These are just a few example to a get a basic idea for a more intelligent IntelliSense. It can be very convenient to work with such an intelligent tool, but as I already said, not everyone may like such a 'unstable' interface so it should be a functionality that can be activated or deactivated.
Thank you for taking the time to read my suggestion. I really appreciate the effort you put into this great development tool and I would be glad if I could contribute some value as well.
WIth best regards,