LSP Example
Heavily documented sample code for https://code.visualstudio.com/api/language-extensions/language-server-extension-guide
Bundling Miniscript
Download Miniscript
git clone https://github.com/sipa/miniscript
Download Emscripten
git clone https://github.com/emscripten-core/emsdk.git
Add the following lines to ./emsdk/emsdk.py
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
cd emsdk
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
Set ENVIRONMENT=node
in ./miniscript/Makefile
Bundle Miniscript
cd ../miniscript
make miniscript.js
Functionality
This Language Server works for plain text file. It has the following language features:
- Completions
- Diagnostics regenerated on each file change or configuration change
It also includes an End-to-End test.
Structure
.
├── client // Language Client
│ ├── src
│ │ ├── test // End to End tests for Language Client / Server
│ │ └── extension.ts // Language Client entry point
├── package.json // The extension manifest.
└── server // Language Server
└── src
└── server.ts // Language Server entry point
Running the Sample
- Run
npm install
in this folder. This installs all necessary npm modules in both the client and server folder - Open VS Code on this folder.
- Press Ctrl+Shift+B to compile the client and server.
- Switch to the Debug viewlet.
- Select
Launch Client
from the drop down. - Run the launch config.
- If you want to debug the server as well use the launch configuration
Attach to Server
- In the [Extension Development Host] instance of VSCode, open a document in 'plain text' language mode.
- Type
j
ort
to seeJavascript
andTypeScript
completion. - Enter text content such as
AAA aaa BBB
. The extension will emit diagnostics for all words in all-uppercase.
- Type