LSP server that communicates over `stdio`
The problem
Currently for the following editors (as far as I know of):
-
neovim -
helix -
Zed
The LSP requires a program such as nc. Specifically for Zed and helix, this as of know, makes it so that there isn't an 'easy'/1-click way to use the LSP.
Zed is blocked by: https://github.com/zed-industries/zed/issues/8498
And for helix, the maintainers dislike hardcoding a program such as nc.
What I would like to see is some standalone server that speaks over stdio so that users of the other editors can (more easily) start with Unison. For example:
ucm --lsp
# Or...
ucm-lsp
To me the tricky part seems to be that ucm is tied to the context of which project/namespace you are in. If you start a standalone server, which project is it in? You could do something like ucm --lsp --path httpclient/main, but what about when you want to branch, switch projects, etc? Also I think that currently the assumption is that you have a single instance of ucm running and managing a codebase at a time (which is enforced by a lock file).
Having said that, I totally agree that this would be nice.
We could have a "project" pragma in the file to select which one the LSP works out of.