Komodo-CFML v0.2.0 Preview

For the past six months or so, I’ve been working on a new version of my CFML extension for ActiveState’s Komodo Edit and Komodo IDE language editors. Late last fall, I’d reached a point in the development of Komodo-CFML where it became fairly obvious to me that I was going to need to take a different approach to the extension in order to achieve one of my original goals related to supporting CFML: language intelligence. So I started over… “started over” as in a complete re-write. (This actually marks the fourth time I’ve started over on this project since I took this on.)

Komodo-CFML tag intelligence: tags
CFML tag list for Komodo-CFML v0.2.0

What I have at this point is a reasonably complete preview (with the emphasis on “reasonably”) version of Komodo-CFML that achieves most of what is present in what I still think of as the “real” version and adds one big item: language intelligence for CFML tags. If you are interested in trying this new preview out, you are welcome to download and install it. You’ll definitely want to take a quick skim through at least the installation notes below and the list of things that, at this early venture, are not yet complete or close to maturity so that you know what you’re getting into.

Komodo-CFML tag intelligence: attributes
Attribute list for CFML tags in Komodo-CFML v0.2.0

That being said, I’ve been using this version exclusively since mid-January and I’ve had three or four brave souls I work with doing the same — despite some rough areas that still exist, it has proven to be very functional and the benefits of the language intelligence seem to outweigh those other areas. It’s also worth noting that this version should install and function on either Komodo Edit or Komodo IDE v6 or later (including the alphas of v7 ActiveState have released earlier this spring).

Before jumping in, please note there are some areas where I still have work to do:

  • Language intelligence is based on Adobe’s ColdFusion 9.01 version of the language, and is limited to tags: The editor will now attempt to provide (as shown above) lists of known tags and their attributes. At some point in the (distant?) future, I will work on extending this to include function arguments. In the near future, I will broaden coverage to include at least Railo’s version of the CFML tagset. It is also based on HTML 5; I may or may not ever provide these capabilities based on other dialects of HTML. Further, I’m still working on the content model within my HTML + CFML DTD, so there will be times when you are mixing CFML tags within HTML where the CFML tags won’t appear in the list of “valid” tags (note though that the attribute-completion will still work once you have the CFML tag started in these contexts).
  • Language-specific help: Komodo provides the ability to support language-specific help, and at present this works only for CFML functions via the excellent CFQuickDocs site. I’m hoping to find a way to make this also work for CFML tags, but based on implementing CFML as an extension of HTML (in order to get the tag intelligence working) it does not currently work.
  • CFSCRIPT-only components: I’ve not yet refactored this capability in the language parsing portion of the extension. This is one of my next tasks.
  • Miscellaneous rough edges: there are still some rough edges in various portions of the CFSCRIPT and CFML support related to tag matching, auto-indenting, and smart matching of characters that typically come in pairs (quotes, crunches, braces, parens, etc.). Some of those are fairly subtle; others, no so much.

Some things you will want to note as you install this new version of the Komodo-CFML extension:

  1. You can’t have both the “real” v0.1.8 extension and this new version installed simultaneously. If you are interested in trying this preview version, I’d recommend uninstalling the previous version and restarting Komodo before installing the preview version. (Related to this point: if you decide you really don’t want to use this preview version, switching back is as simple as uninstalling this version, restarting, and reinstalling the other version.)
  2. In order to turn on the tag-related language intelligence, you will need to select the appropriate default DOCTYPE for HTML files within Komodo’s preferences. Go to “Preferences > Languages > HTML” and select the “-//WE3GEEKS//DTD HTML 5 + CFML (Adobe ColdFusion 9.01)//EN” entry way down toward the bottom for the “Default HTML Document Type” setting.
  3. If you’ve not tried Komodo-CFML in the past, you’ll also want to install the CFML-specific HTML-Tidy configuration file as described on the Komodo-CFML page.

So, have at it and please let me know via comments below if you stumble into things that just don’t make sense or seem to be broken. I’m still working on those rough areas noted above, and will continue to make previews of this version available as I resolve problems and push this closer to “finished” (whatever that is.).

Finally, a word of thanks to the Eric and Todd at ActiveState for a great platform in Komodo and their occasional support as I’ve asked questions and asked for help. Also a word of thanks to my team at work for their patience and feedback on this project, and their willingness to bravely step into the breach and test this in a production environment. This would never have reached this state without their help.

Download: Komodo-CFML v0.2.0 preview

4 thoughts on “Komodo-CFML v0.2.0 Preview”

  1. @Critter: Thanks; I’ve made some decent progress this week on the content model in the HTML+CFML DTD this week so it is a little closer to providing groups of CFML tags that make sense in most contexts. Not done there yet, but I’ll probably push out another preview somewhere yet this month.

  2. Looks great. What can we do to help?

    With respect to tag completion, it might be an idea to build an XSLT to convert the CFBuilder dictionary file (released to the public and based on the original CFEclipse format) into the relevant format for tag completion in Komodo.

  3. @Geoff: Thanks and thanks for the offer. As to what you can do, I guess I would have to respond with an “I don’t know” at this point. I will look at the CFBuilder dictionary file (can you point me to it?) to see what it brings to the table. Within this context, the tag completion capability for Komodo is driven by the DTD in use. As a result, my work is basically building an HTML + CFML DTD. I’ve used the HTML5 DTD that ships with Komodo as a starting point and am expanding it to include all of the Adobe CFML 9 tags and their attributes (my intent is to do the same with/for Railo). That part is done and seems to work well. My work at this point, which is pretty slow going, is focused on the content model for the HTML and CFML tags which basically defines which tags are available in which contexts, so that the lists of tags available within the tag completion popups in Komodo don’t always contain every CFML tag but only those valid (or likely?) in the current tag context (e.g., CFPROCPARAM only can appear inside CFSTOREDPROC). This part of it is pretty slow going, as I try to fold CFML into HTML but also come with a reasonably sane approach to the content model for the CFML tags themselves.

Comments are closed.