Configuring a client
Acknowledgement
Thanks to texter
crate, the client can send text in any encoding to the server.
texter
also provides an efficient way to update documents incrementally.
File extensions
The LSP server must know how each file extensions are associated with a parser.
The client is responsible for sending this information to the server.
Using VScode
LSP client, this is done via providing perFileParser
object in the initializationOptions
of LanguageClientOptions
.
import { LanguageClient, LanguageClientOptions, ServerOptions, RequestType } from 'vscode-languageclient/node';
// We tell the server that .py files are associated with the python parser defined via the configure_parsers! macro.
const initializationOptions = {
perFileParser: {
"py": "python"
}
}
const clientOptions: LanguageClientOptions = {
documentSelector: [{ language: 'python' }],
synchronize: {
fileEvents: workspace.createFileSystemWatcher('**/*.py')
},
outputChannel: channel,
uriConverters: createUriConverters(),
initializationOptions
};
You have an example in the vscode-python-wasi-lsp
folder in the auto-lsp
repository.