Just a heads up that the next dev build will be taking a little longer than normal to come out. I’ve been mostly doing weekly releases (ignoring bug fix versions, anyway) recently, but the next one won’t be out likely until next week, perhaps towards the end of this week.
I was doing some misc work that will make accepting community contributes for the default syntax definitions more practical (e.g., adding support for unit testing syntax defs), but got a little carried away, so the next build will have support for an alternative syntax definition format, .sublime-syntax, in addition to still supporting .tmLanguage files.
At its core, it still uses the same lexing engine that Sublime Text already has, so it’s fundamentally built around lexing tokens using regexes, one line at a time. The main difference is having direct control over the lexer stack, so it’s feasible to recognize compound constructs without having to make the regexes do all the work. This also enables handling syntax spread over multiple lines. For example, it’s now able to recognize this C code as defining a symbol named “point”, which isn’t possible with the current system:
typedef struct
{
int x;
int y
} point;
It also has a cleaner (IMO) way of including languages within one another, and a more friendly surface syntax to work with (currently JSON, but I’m planning on changing that to YAML before release).
NB., for those with exceptional memories, this isn’t related to the .sublime-syntax format that the very first public versions of Sublime Text used, although it does share some concepts, it’s really just reusing the file extension.
I’ll post full details alongside the next build.