general direction of development of scala support

hi everyone,

in the last ~4-5 years that i and people around me have used intellij for scala development, i have noticed that what we use, need and want is, sorted by priority

* code completion/goto declaration/show docs & parameters and types
* fast and reliable error highlighting/type checking
* rename things
* find usages
* responsiveness
* implicit helper stuff


* debugging

<large void here>

* extract value/def

<very large void here>

any other refactoring feature

does this align with your experiences and the direction the plugin is going?



In my oppinion priority list should be something like:

1. Editing experience (typing lags, annoying editing problems). It includes completion feature, some formatting cases and so on.
2. SBT support. Generally every project should be correctly imported
3. Error highlighting (performance and quality)
4. Debugger
5. All other stuff.

Reality is a bit more interesting. As our team is not just a single person, then we can cover more than one thing. And we also have to do such non-related to this list things like business processes, which we improved recentely. So now we have automatic scripts, which publish updates into three channels, updates git tags and collects list of fixed bugs for every update. We also improved our repository, so now the only thing you need to start plugin development is just SBT import. And I hope all of this is good news.
Right now we are going in the following directions:
1. SBT support
2. Macros/Meta support including improving plugin API to add other IntelliJ IDEA plugin to support some compiler plugin
3. Improving editing experience
4. Debugger (Akka debugger, lambda breakpoints for parts of line, not only for the whole line)
5. Error highlighting is the last in this list, but I hope it will become the first one soon.
6. Other stuff.

I appreciate for your list and probably it's a good idea to make some poll to better understand what is our user experience.

Best regards,
Alexander Podkhalyuin.


And what is your vision? Are we going in wrong direction?

Best regards,
Alexander Podkhalyuzin.


i don't know enough about macros/don't use macros to say anything about them

for the rest, i think the priorities should be community driven because while you can perfectly guess what the users want, you cannot know without a representative number of votes what they want the most.
everybody has specific needs, but many share common requirements like SBT support, correct error highlighting and debugger improvements

you could make a simple poll like
"which is most important to you" (SBT, play, lift etc.) and assign resources aka development time accordingly, break down the most important and big chunks into smaller ones -
for example if debugging turned out to be the favorite, you could break that down into
+ part of line breakpoints
+ evaluate expression
+ ...

if it was error highlighting, you could ask about which libraries are giving the community the most red code


It's kind of community driven as we are collecting information on library usage information. We also use issue tracker, which shows us actual information (however as you said sometimes it's hard to understand what is most wantd). But I'm not sure simple poll will be enough as not everybody reads forums/blogs.
I'll think a bit more about such great possibility to redistribute our resources like a poll. Technically I think we can make it as plugin part after 1 month usage, but I need to consult about it with our PMM. Also I need to think more about poll content, probably your suggestion can be implemented.

Best regards,
Alexander Podkhalyuzin.


Improving editing experience is very important.
For example making basic code completion smarter - still when it offers me to import a type, most of the time the right one is at the bottom of the list, despite the fact it is used all over the project, while the first one is something I didn't even know existed.