The XSL content assist refactoring work went pretty well. I now have a nice set of unit tests that are in place to help verify that content assistance is giving what I would expect it to give. The completion is now smart enough to know where it is within the XPath and determine what the appropriate match strings should be. The match string is based on where the last known XPath token started so it should work fairly well for single-line XPaths. Testing still needs to occur on XPath’s that occur over multiple lines.
There are still other features that I would like to add eventually, like:
- Hover Help
- Smart Content Completion – i.e. only show the options that are valid for that particular position in an XPath (i.e. node values, boolean, string, etc).
- Custom function detection – for extension based functions for specific parsers.
An Odd JFace Content Assist “Feature”.
I’ve noticed an odd thing at times with the platforms content assistance. Sometimes the icons will appear about 3 times as big as they normally do. I’m not sure what causes this to happen, and it only occurs in certain scenarios. Anybody that has insight or has seen this on other implementations, if you could point me to what might be causing it, it would be appreciated.
Eating our own “dog food”.
One of the things I think that makes the JDT editor so nice, is the fact that the developer’s eat their own dog food. Meaning that they use what they write. XSL Tooling from an editing stand point is slowly getting to that point, because it is what I use now as my main xsl editing tool. There are areas where it still needs work. Particularly in the debugging support. At the moment we have some very basic debugging but still need the following:
- Ability to see the output generated as it it is being stepped through.
- Ability to set a break point on the XML Input file as well as the XSLT
- Ability to view the contents of Node-Sets in a tree hiearchy.
- Ability to set an XPath watch expression on a debug point.
Is there anything else that the community feels needs to be added? Post a comment here or open a bug report in the incubator project.