Work on the Komodo-CFML front

Things on the Komodo-CFML front have been pretty quiet here of late, but that’s not because nothing has been going on. Several months ago, as I wrestled with some odd behavior I was seeing with the extension under then-new Komodo v9, I came to the conclusion that there were a couple of fundamental problems with the approach I had taken in tokenizing CFML (used in Komodo to provide syntax colorizing). Furthermore, that approach appeared to make it nearly¬†impossible to do much in terms of any sort of code intelligence-type help.

So… I started over. Completely. Threw everything out and started from the ground up, building an entirely new version of the extension. (Actually, I started over three times, trying to make sure I had a better approach.) At one point, I got stuck waiting for resolution of a bug relating to how Komodo creates the skeletons of extensions.

At this point, I am very close to having this completely-rebuilt version ready to release (probably as a v0.2.5). I’ve tried to make sure it provides everything the current v0.2.4 does in terms of syntax highlighting, but it also has a couple¬†additions:

  • completely reworked DTDs for CFML + HTML5 (for both CFML v10 and v11), with content models that provide better and more consistent access to CFML tag and attribute completion
  • CFML language keyword, scope, and function name completion (this is what I started working on and ended up heading down the rabbit-hole that led me to scrap everything and start over)
  • macros for CFML help for the word under the current caret position and for CFML comment/uncomment region that work in a manner consistent with Komodo’s built-in comment/uncomment region (more on this at some later date)

So… I’m close. Close enough that I have been using this new (still evolving) version for my daily development work for several weeks. I’m waiting for one additional Komodo bug to be resolved (hoping it will be included in Komodo v9.3, which is in the nightly-build prerelease stage at this point). I will post something here when I release it, as well as making it available through the Komodo packages repository.