sequitur / ink-vscode

Ink support in Visual Studio Code
MIT License
26 stars 10 forks source link

Language server integration #2

Closed ephread closed 4 years ago

ephread commented 6 years ago

Tracking integration of the language server, follow up to this comment on #1.

Great news! I have successfully created a simple language server around Ink. The server is independent, so that it can theoretically be use with any editor supporting LSP. The code is available here. I've also made a couple of changes in the language-server branch of my fork, to integrate the server with your extension.

The server has been quickly tested on macOS, Windows and Ubuntu, so regardless of the platform you work on, you should be able to review the changes easily. On macOS, the server will try to download a native binary. On Linux, mono needs to be installed manually.

At the moment, the server only feature is to compile as you type and report any errors returned by inklecate. I'd like to include completion and codelenses as well in the future and base the features on the great work you've already done, but this will come later.

I'm going to make a PR, so you can take a look and give me your thoughts.

ephread commented 6 years ago

Starting with 0.1.4, the server will notify the client on each successful compilation and provide it with the URI of the resulting JSON. The client can also trigger a compilation outside of any file change, using the compile-story command exposed by the server.

Starting with 0.1.5, the server will download the optional mac inklecate dependency during the first launch, rather than during the npm install. I wrongly thought that vscode extensions performed a npm resolution during their installation, which they don't.

This change will prevent the mac inklecate from being included in the vsix package by mistake and will also ensure that it is downloaded if required.

ephread commented 6 years ago

Starting with 0.2.0, the server supports previewing the current story using the preview-story command. During a preview, the server will notify the client every time the runtime outputs new content. After a prompt, the client can call the select-option command with the desired index as an argument.

The server will also now accept an absolute path for ink.runThroughMono, in addition to boolean values.

ephread commented 4 years ago

I don't know when I'll resume working on the language server, but it's on hold for the moment. To keep things tight, I'm closing this issue.

tiagojdf commented 3 years ago

Hi! Thanks for this vs code plugin. I was looking for this feature, to avoid having to have inky running on parallel of my vs code. I saw you have another repo but it seems you've archived it. I also didn't see any other branch in here that integrated it. I was wondering what is the status on this? GG on your work so far.