17 August 2012

GSoC Update #2 - XQMode for Processing

This post is a continuation of my previous post on my GSoC project. It’s been more than month since the last post. A lot of progress has been made with XQMode. I’ve completed all of my project goals and have added a couple of interesting features too.

XQMode in action

Here’s a brief description of what has been accomplished since the last update:
  • Error Underlining: Just like in eclipse, now errors in code are underlined in red as you type. Warnings are also underlined in yellow. A marker is also shown on the left of an error line which scrolls along with the line.
  • Errors List integrated into the PDE: Earlier the table of errors was being displayed in a separate window. Now the table has been integrated into the PDE window where the console resides. I’ve added a tab like view where one can switch between the console and errors list. The Problem window can still be launched from the XQMode menu.
  • A New Preprocessor:  This change is under the hood. I’m now using my own custom preprocessor that converts Processing code into compilable java code. It doesn’t make use of Processing’s pre-processor. So, confusing internal error messages from the Processing preprocessor are no longer displayed in the console. And this also provides a noticeable decrease in time required to perform error checking.
  • Default libraries that come with Processing are now fully supported
  • Import statements are now checked correctly for errors.
  • Imports from the code folder of a sketch are now correctly detected.
  • User can manually disable error checking as well as warnings.
  • Lots of minor improvements and bug fixes.

XQMode currently needs some modifications to Processing 2.0a8 in order to run. After discussions with Ben Fry, it’s been decided that XQMode will be launched in a few months after the incompatibilities are sorted out.

This was a pretty amazing GSoC for me. I was lucky to not have faced any major technical difficulties or heisenbugs and development was quiet smooth. Daniel Shiffman's (my mentor) guidance has been instrumental in developing XQMode. He used to regularly come up with interesting ideas and tweaks. Other members of the Processing team – Martin Leopold, Florian Jenett and Andres Colubri also provided valuable inputs and helped with internal testing.

It feels great to have made a cool little contribution to Processing! :)

XQMode on Github: https://github.com/Manindra29/XQMode


P.S: Returning readers may notice - I've got my own domain now, mkmoharana.com! :D