The author contacted me a few weeks up with a heads up that he had a Moai friendly Lua IDE in development and I said I would look into it… and well, I didn’t. Things came up, then something else and something else and frankly it got pushed into the back of my mind. In the end, that was a good thing too, as since that point in time the author has added auto-completion… a critical feature.
As of writing though, this feature is only available from the github sources. So long as you have cygwin configured ( assuming you are working with Moai, you should already ), and git installed, the process is fairly simple:
git clone https://github.com/pkulchenko/ZeroBraneStudio.git
This will create a folder ZeroBraneStudio with all the appropriate files.
EDIT (29/09/2012): Author made update, should no longer need to set permissions described below
There is another catch, git mangles the executable permissions on Windows. The long answer is well… long, the hackishly easy answer is to run:
chmod a+x –R ZeroBraneStudio
There is one last catch, you need to set the MOAI_BIN environment variable to point to your MOAI host folder, either that or add it to your PATH variable. ( I suggest the former ). To set the MOAI_BIN path, simply open a command prompt and type:
setx MOAI_BIN c:/path/to/moai/host
You can of course set the environment variables using the System control panel, but this will require you to reboot your computer for the change to take effect. SetX simply requires you close the console to take effect.
Now you should be able to run the Studio, just double click zbstudio.exe to start it. Hopefully the author will have a new release soon, that prevents all of this ( except the MOAI_BIN environment variable that is ). Finally run ZeroBrane and this is what you see:
So then… why? What does ZeroBraneStudio bring to the table that SublimeText or IntelliJ don’t have?
That’s an easy one. I mentioned the first one earlier:
Auto-completion! After years of using Visual Studio, this one is a gigantic must for me. Granted as I covered earlier, IntelliJ can be configured to supported auto completion. But ZeroBrane Studio has a massive head up on IntelliJ, watch this!
This you cannot do with IntelliJ, and it is a gigantic advantage. But auto-completion isn’t the only thing ZB brings to the table, ZeroBrane Studio has the ability to debug running code! You can set breakpoints, step in/over and out, set watches and do dynamic expression evaluations, pretty much most of what you expect to see in a debugger. Oddly enough, this needed a Windows Firewall exception.
To debug your code, select a line of text to set a breakpoint then hit F9 to create a breakpoint ( a red stop sign will appear in the margin ). Then select Project->Start Debugging Server. Then select Project->Start Debugging or hit F5 to run your code and voila:
Code execution stops at your breakpoint. Use F10, Ctrl+F10 and Shift+F10 enable you to navigate through your code. You can hover your mouse over a variable to inspect it’s value. You can also right-click a variable and create a watch window like this:
Unfortunately you can’t drill down into an individual Lua table, but hopefully this feature gets added soon!
Perhaps coolest of all, ZeroBrane Studio enables REPL interaction. You can open the console and interact with your code directly:
As you can see, you can interact with your values in real time, and here are the results in the output:
It also has the ability to analyze your code, and show you the plethora of stupid mistakes you are making:
Not everything is perfect. As mentioned earlier, watch expressions cant drill down into Lua tables, hopefully something that will change soon. Additionally, it would be nice if the Moai host could be added using a configuration setting instead of using MOAI_BIN, as it makes it difficult to change between runtimes ( moai, moai-untz, release, debug, etc… ), but this is a minor point. It would also be nice to be able to control more via context menu’s ( add breakpoint, step over/in, etc ). The code syntax highlighting could be improved a bit as well. Of course, as a straight code editor, it isn’t going to give IntelliJ or SublimeText a run for it’s money just yet.
That said, this is an absolutely invaluable tool for people working with Moai or LOVE, the debugger and full auto-completion guarantee that this is going to be a stable part of my toolset going forward. Hopefully the author is able to add more detailed debugging information soon. If you are working in Moai or LOVE, you owe it to yourself to check out ZeroBrane Studio.
Speaking of which, you can get more information here. Keep in mind, MOAI auto-completion is currently only available in the source distribution, at least as of version 0.32. Hopefully the new release is bundled soon.
I have spoken with the author, and it appears a few of my issues aren’t issues after all.
The system will check for Moai executable in your PATH environment
variable. You can also set "path.moai = 'd:/lua/moai/moai'" in
cfg/user.lua (see cfg/user-sample.lua for example).
ZeroBrane actually can drill down details into a Lua table, in my relative Lua newbishness, I made a pair of mistakes. First off, it only works on local variables. Second, Moai does not return tables, it returns Userdata, which ZeroBrane currently can’t parse ( fingers crossed he figures out a way! ).
Here is the behaviour I was expecting to see, and exactly what I got once I defined the table as a local.