TypeScript IDE Syndicate plugin: good news and bad news
Because the TypeScript implementation has been moving on along its own roadmap, the IDE-support (Language Server Protocol, LSP) part of the TypeScript compiler plugin that I wrote (npm, git) has stopped working properly with recent TypeScript releases.
ts-plugin versions older than 0.15.2 don’t work well with TypeScript 4.9; it’s possible they
haven’t worked well since TypeScript 4.5.
The good news
The good news is that
@syndicate-lang/ts-plugin version 0.15.2 includes a
few changes that make it work much better with TypeScript 4.9. So if you update to 0.15.2, you
should see good support for the Syndicate DSL overlaid atop the normal TypeScript support in
Emacs, VSCode, etc.
The bad news
The bad news is that the monkeypatching I’ve been doing to hook into the necessary parts of the
tsserver will no longer work for TypeScript versions 5.0 and higher. The problem
is that, in
tsserver 4.9, simple properties were used for values like
ts.server.ScriptInfo, so the
ts-plugin was able to hook them to insert the Syndicate
DSL expansion process. In 5.0, by contrast,
is used to define a non-writable, non-configurable property. It’s essentially game over for the
ts-plugin approach at this point.
So what now?
ts-plugin IDE support is really nice for Syndicate programming. So I feel compelled
to find some kind of solution.
Perhaps I need to write a real LSP implementation, backing into a captive
I’ve opened an issue on the
ts-plugin repository about this.