GROOVY coming to IDEA
Hey the Cat's out of the bag! I found this from our Pal Dmitry Jemerov on a Groovy blog:
"right now the situation regarding Groovy support has changed, which you may have found out from recent forum posts. We are no longer actively developing the Scala plugin, and the team responsible for it is now working on a new Groovy plugin. Right now the work is at a very early stage, and we don’t have any definite release plans or timeline. But the work does proceed quite actively, and just like the Ruby and Scala plugins, the Groovy plugin is developed under an open-source license. I’m sure that the guys working on the plugin will be happy to accept code contributions once the plugin is a bit more mature and stable."
Thanks a lot Jetbrains folks! I can't wait to see something here!!!
Please sign in to leave a comment.
"We are no longer actively developing the Scala plugin" vs. "But the work does proceed quite actively, and just like the Ruby and Scala plugins" ;)
Hello t800t8,
Cutting sentences in the middle usually doesn't make them any more meaningful.
--
Dmitry Jemerov
Software Developer
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"
Scala is indeed not developed at full scale now (sorry for pun), but we definitely would not consider it a dead end and will continue developing it when we find people ready to contribute.
Uggh. We here at palatial Sixth and Red River headquarters were just doing some advance program management work on extending the Scala plugin with intentions/inspections/refactorings, and were set to begin initial development. Open source, naturally. Which would be fine if the Scala plugin were in a state where that made sense, but without some key pieces (Ctrl-B, Alt-F7, XML expressions, run configurations, debugger integration, Scala SDKs working on Mac OS X), there's not a lot of upside. We'd end up with something with great advanced features and extremely limited usability.
Sixth and Red River Software
"Code with Grace and Verve" (and list comprehensions)
Well, debugger integration works, the breakpoints unhit for objects issue has been fixed. As for sdk on Mac OS X I'm not aware of any issues, please give more details. And yes, full resolve does not work, but I would not consider it as one feature, it is simply too large for as complex language as Scala is. We would like contributions to type checking/inference implementation as well, though probably this constributor would not easy to be found.
+And yes, full resolve does not work, but I would not consider it as one feature, it is simply too large for as complex language as Scala is. We would like contributions to type checking/inference implementation as well, though probably this constributor would not easy to be found.
+
Challenge accepted. The last build we have is what's up on the plugin site, claiming to be 1347, but is certainly out of date. (Also, it seems to be missing anything like a top-level build file, which would be handy.)
As to the SDK for Mac OS X issue, here's the stack trace
Error during dispatching of java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=com.intellij.ui.popup.PopupFactoryImpl$ActionPopupStep$1@7e7de2,notifier=null,catchExceptions=false,when=1175187836647] on apple.awt.CToolkit@203669
java.lang.AssertionError
at org.jetbrains.plugins.scala.sdk.ScalaSdkType.setupSdkPaths(Unknown Source)
at com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectJdksModel.doAdd(ProjectJdksModel.java:65)
at com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectJdksModel$4.actionPerformed(ProjectJdksModel.java:1)
at com.intellij.ui.popup.PopupFactoryImpl$ActionPopupStep$1.run(PopupFactoryImpl.java:0)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:66)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:177)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:169)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:180)
at java.awt.Dialog$1.run(Dialog.java:515)
at java.awt.Dialog.show(Dialog.java:536)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:16)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:53)
at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:748)
at com.intellij.openapi.options.ex.ControlPanelSettingsEditor.b(ControlPanelSettingsEditor.java:115)
at com.intellij.openapi.options.ex.ControlPanelSettingsEditor.access$300(ControlPanelSettingsEditor.java:144)
at com.intellij.openapi.options.ex.ControlPanelSettingsEditor$MyActionButton$1.mouseReleased(ControlPanelSettingsEditor.java:0)
at java.awt.Component.processMouseEvent(Component.java:5554)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5319)
at java.awt.Container.processEvent(Container.java:2010)
at java.awt.Component.dispatchEventImpl(Component.java:4021)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3869)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4256)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3936)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3866)
at java.awt.Container.dispatchEventImpl(Container.java:2054)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3869)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:66)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:48)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:169)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:180)
at java.awt.Dialog$1.run(Dialog.java:515)
at java.awt.Dialog.show(Dialog.java:536)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:16)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:53)
at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:748)
at com.intellij.ide.actions.ShowSettingsUtilImpl.showControlPanelOptions(ShowSettingsUtilImpl.java:23)
at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:31)
at com.intellij.ide.actions.ShowSettingsAction.actionPerformed(ShowSettingsAction.java:6)
at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:86)
at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:16)
at java.awt.Component.processEvent(Component.java:5319)
at java.awt.Container.processEvent(Container.java:2010)
at java.awt.Component.dispatchEventImpl(Component.java:4021)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3869)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4256)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3936)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3866)
at java.awt.Container.dispatchEventImpl(Container.java:2054)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3869)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:66)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:48)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:169)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Sixth and Red River Software
"Code with Grace and Verve"
Why don't you just take the latest source code directly from the repository ? :
http://svn.jetbrains.org/idea/Trunk/scala/
Ahmed.
I swear I looked there just yesterday and didn't find anything.
So how about collaboration? Though I'm up quite busy with ReSharper now, and now also Groovy, I would also like to continue development of Scala plugin. Probably we could organize the workflow?
Eugene.
P.S. The build file is called lang-build.xml
P.P.S. I'll update plugin jars tomorrow to reflect the changes in debugger and parser, but you could always get the latest sources from svn.
I really hope development of the Scala plugin continues in some form - I'm far more excited about Scala than I am about Groovy.
And about OS X - I don't get the error you're reporting, and I can successfully build and run Scala programs. JDK 1.5.07, Scala 2.4.0-final, on PPC.
I do get the following error on run, but it doesn't appear to prevent anything from happening:
Assertion failed
java.lang.Throwable
at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:89)
at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:96)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler.parseOutput(Unknown Source)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler.notifyTextAvailable(Unknown Source)
at com.intellij.execution.process.OSProcessHandler$3.textAvailable(OSProcessHandler.java:117)
at com.intellij.execution.process.OSProcessHandler$ReadProcessThread.checkTextAvailable(OSProcessHandler.java:312)
at com.intellij.execution.process.OSProcessHandler$ReadProcessThread.run(OSProcessHandler.java:270)
at com.intellij.openapi.application.impl.ApplicationImpl$4.run(ApplicationImpl.java:0)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:613)
at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:7)
java.lang.Throwable
at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:89)
at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:96)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler.getOutputRoot(Unknown Source)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler.access$100(Unknown Source)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler$1$1.compute(Unknown Source)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler$1$1.compute(Unknown Source)
at com.intellij.openapi.application.impl.ApplicationImpl$14.run(ApplicationImpl.java:1)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:88)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:58)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler$1.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:74)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:29)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:104)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:180)
at java.awt.Dialog$1.run(Dialog.java:517)
at java.awt.Dialog$2.run(Dialog.java:545)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:543)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:72)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:74)
at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:748)
at com.intellij.compiler.progress.CompilerProgressIndicator$3.run(CompilerProgressIndicator.java:4)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:14)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:74)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:29)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:104)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
java.lang.Throwable
at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:89)
at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:96)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler.parseOutput(Unknown Source)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler.notifyTextAvailable(Unknown Source)
at com.intellij.execution.process.OSProcessHandler$3.textAvailable(OSProcessHandler.java:117)
at com.intellij.execution.process.OSProcessHandler$ReadProcessThread.checkTextAvailable(OSProcessHandler.java:312)
at com.intellij.execution.process.OSProcessHandler$ReadProcessThread.run(OSProcessHandler.java:270)
at com.intellij.openapi.application.impl.ApplicationImpl$4.run(ApplicationImpl.java:0)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:613)
at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:7)
java.lang.Throwable
at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:89)
at com.intellij.openapi.diagnostic.Logger.assertTrue(Logger.java:96)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler.getOutputRoot(Unknown Source)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler.access$100(Unknown Source)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler$1$1.compute(Unknown Source)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler$1$1.compute(Unknown Source)
at com.intellij.openapi.application.impl.ApplicationImpl$14.run(ApplicationImpl.java:1)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:88)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:58)
at org.jetbrains.plugins.scala.compiler.ScalacOSProcessHandler$1.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:74)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:29)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:104)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:180)
at java.awt.Dialog$1.run(Dialog.java:517)
at java.awt.Dialog$2.run(Dialog.java:545)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:543)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:72)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:74)
at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:748)
at com.intellij.compiler.progress.CompilerProgressIndicator$3.run(CompilerProgressIndicator.java:4)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:14)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:74)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:29)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:104)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Sounds great. It's going to take me a while to get up-to-date on the state of the plugin, but I think my initial goals will be in references (including Java->Scala references) and type checking/inference. That'll give me enough to start leveraging inspection and intention functionality.
Sixth and Red River Software
"Code with Grace and Verve"
What about adding intentions/inspections/refactorings to the Groovy plugin as well?