Scala plugin for Diana is available now

Hello all!

First EAP of renewed Scala plugin for Diana (IDEA 8) can be downloaded now from our plugin repository (see http://plugins.intellij.net/plugin/?id=1347).
By time of this message we implemented common go-to functionalities, structure view for Scala files, support for Scala SDK and basic completion and resolve functionalities for keywords, local variables and classes. There is no special run configuration, Scala applications can bu launched as common Java applications.
To use this plugin you must have Diana EAP (available at http://www.jetbrains.net/confluence/display/IDEADEV/Diana+EAP) and Scala SDK (see http://www.scala-lang.org/downloads/).

We wait for your comments and observations.

11 comments
Comment actions Permalink

Haven't tried it yet but... Thank You!!!

0
Comment actions Permalink

This is really great news, finally, we'll be able to move off Eclipse!

I gave it a quick try, and when I ran a file (a class with a main(Array[String]) method) it crashed IDEA. There is also no error checking in file, but I think you already know this.

I'd also like to see a decent way to move/rename classes and objects independently of the file they reside in (this was a problem with early Groovy plugin versions, not sure if it's fixed yet). For example, suppose I have a file Css.scala with content:

object Css {
// some implicit defs
}

sealed trait CssElement
case class Id extends CssElement
case class Element extends CssElement
case class Class extends CssElement

This gets shown (correctly) in the tree as (with appropriate icons, etc.):

+ CssElement
+ Id
+ Element
+ Class


But, I should be able to move any of these classes/objects/traits out of the file they're currently in, be it into a new file, or into a different file.

I understand that a lot of the code in IDEA assumed Java specific behaviour (i.e. one public top level class per file), but these assumptions no longer hold for Scala, Groovy, Ruby, etc. The move, copy, rename, etc. refactorings should be made aware of this, and cater accordingly.

Another example, the Ruby plugin has a "ruby specific tree view" or such, that shows class names for rails controllers, models, etc. If the class name is different to the file name (i.e. doesn't match the class_name.rb -> ClassName convention), it renders the filename in the tree. This is silly, the class name should always be rendered.

Happy to log this as a bug if it helps.

I'm planning on doing some more scala hacking in the next few days, so I may have more to add, thanks again.

0
Comment actions Permalink

Agreed, this is great news!

0
Comment actions Permalink

Tom,

Thanks for your interest and so exhaustive comment. We realize that our plugin is far from perfection and we work on it. It aould be excellent if you post stacktarces of all crashes in our bugtracker.
Consistent rename refactoring needs implemented type inference and name binding which we have not yet. Specific structure view is already provided. It contains type declarations (classes, traits, etc.), fields and functions (including nested functions).

0
Comment actions Permalink

We do have full find usages for classes as opposed to objects and local vars/parameters. So part rename could be implemented. Not a big deal actually:)

0
Comment actions Permalink

Oops, I mean we do have usages for locals/parameters of course.

0
Comment actions Permalink

Hi,

I wasn't meaning to imply that there was something wrong with what you'd done, I certainly support your efforts. I will try to post some stack traces, etc. soon.

Thanks,
Tom

0
Comment actions Permalink

Of course, I didn't jeer in my last comment. We really need for any feedback.
Thanks. :)

0
Comment actions Permalink

New Scala plugin v0.2 build is available now in plugin repository.

0
Comment actions Permalink

Just updated on Diana 8418 and get:
Plugin org.intellij.scala failed to initialize:
com.intellij.codeInsight.completion.CompletionVarient.setItemProperty (can't get the rest because I cant find the bloody log file!)

I've updated to 8445 and it works, so it seems the new plugin has some dependency on the new EAP.
The plugins updater should not show a new update for Scala unless you are running a compatible version of Intellij! This is extremely frustrating to the end user.

Also it would be nice to have some update notes for what has changed in the plugins page.

0
Comment actions Permalink

Unfortunately, Diana API changes quickly. So, we can't to guarantee that newer versions will work with old EAPs of Diana.
There are no new features in the last version. Only bugfixes, you can read about it on the plugin page.
Thank you for your notes.

0

Please sign in to leave a comment.