Fantom IDE - FantomIDE
Netbeans based Standalone IDE / Plugin for the Fantom Language
This can be installed as a plugin to an existing Netbeans installation or as a standalone IDE for the
It contains out of the box support for Fantom as well as Java, Javascript, CSS, HTML, XML, Subversion, Mercurial.
Also any other features you need, say hudson support are just a few clicks away under tools/plugins.
Screen shot
You can also check a demo "screencast("movie") in the demo section.

Infos
I have written the Grammar/Lexer/Parser using the
Update: Replaced ANTLR with parboiled (Mrach 2010)
On the Netbeans Side i'm using the brand new (NB 6.7) CSL API (Language support).
Learning ANTLR has been a challenge as well as the new CSL API, which is not yet much documented.
However
Many thanks to Geertjan Wielenga as well, for all the
And all the authors of the other NB plugins I've been looking at.
Used Libraries
The following opensource libraries are bundled:
ANTLR-runtime : Used to parse source files (grammar)
- Parboiled: Used to parse source files (grammar)
- JavaOnTracks: My own java frameworks. I use some templating and database features.
- H2: I use this database for Indexing source code (completion etc...)

Back to top
Title: NetBeans 7.1
Will this plugin get NetBeans 7.1 support? I'd love to try Fantom with full IDE support, but I'd rather not downgrade to NetBeans 7.0. With NetBeans 7.1, I was able to successfully install, but the source parsing/highlighting is clearly not working.
Title: "semi" bug
When I run the fan fwt hello world example, with a couple of trivial lines inserted prior to the Window creation, I get the following error message:
Not able to submit breakpoint LineBreakpoint Main.fan : 19, reason: No executable location available at line 19 in class fan.FanTest1.Main$main$0.
The thing is, it does break at line 19...in general, executes just fine except for the error message.Here's the program:
class Main
{
Void main()
{
a := 1
b := 1
Window
{
size = Size(300,200)
Label { text = "Hello world"; halign=Halign.center },
}.open
}
}
Line 19 where I put the breakpoint is: b := 1
Title: Netbeans FantomIDE with Netbeans 7.0
Hi,
This is from NB 7.0 IDE log:
WARNING [org.netbeans.modules.autoupdate.updateprovider.AutoupdateCatalogParser]: http://www.colar.net/fantomide/plugin/7.0/:1:55: White spaces are required between publicId and systemId.
INFO [org.netbeans.modules.autoupdate.services.UpdateUnitFactory]: Cannot read UpdateItem from UpdateProvider Fantom[Fantom] to http://www.colar.net/fantomide/plugin/7.0/
org.xml.sax.SAXParseException: White spaces are required between publicId and systemId.
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
at org.netbeans.modules.autoupdate.updateprovider.AutoupdateCatalogParser.getUpdateItems(AutoupdateCatalogParser.java:187)
Caused: java.io.IOException: Failed to parse http://www.colar.net/fantomide/plugin/7.0/
at org.netbeans.modules.autoupdate.updateprovider.AutoupdateCatalogParser.getUpdateItems(AutoupdateCatalogParser.java:189)
at org.netbeans.modules.autoupdate.updateprovider.AutoupdateCatalogProvider.getUpdateItems(AutoupdateCatalogProvider.java:126)
[catch] at org.netbeans.modules.autoupdate.services.UpdateUnitFactory.appendUpdateItems(UpdateUnitFactory.java:173)
at org.netbeans.modules.autoupdate.services.UpdateUnitFactory.getUpdateUnits(UpdateUnitFactory.java:143)
at org.netbeans.modules.autoupdate.services.UpdateManagerImpl$Cache.<init>(UpdateManagerImpl.java:225)
at org.netbeans.modules.autoupdate.services.UpdateManagerImpl.getCache(UpdateManagerImpl.java:199)
at org.netbeans.modules.autoupdate.services.UpdateManagerImpl.getUpdateUnits(UpdateManagerImpl.java:96)
at org.netbeans.api.autoupdate.UpdateManager.getUpdateUnits(UpdateManager.java:103)
at org.netbeans.modules.autoupdate.ui.PluginManagerUI.updateUnitsChanged(PluginManagerUI.java:665)
at org.netbeans.modules.autoupdate.ui.UnitTab$3.updateUnitsChanged(UnitTab.java:195)
at org.netbeans.modules.autoupdate.ui.UnitCategoryTableModel.fireUpdataUnitChange(UnitCategoryTableModel.java:286)
at org.netbeans.modules.autoupdate.ui.UnitTab.fireUpdataUnitChange(UnitTab.java:599)
at org.netbeans.modules.autoupdate.ui.UnitTab$13$1.run(UnitTab.java:764)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:596)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:148)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Vladimir Kokovic, DP senior, Belgrade, Serbia
Title: Happy to give it a run
I am commercially developing products and learn new structures quickly. I like what you have done so am very happy to give it a look. Tried out JavaFX and liked that. Yours looks great but still to try it in implementations. Pay commercial usage when published too. :)