2025-05-28 02:31:02 +00:00
|
|
|
# Newton LSP Server Bridge
|
2025-05-28 02:13:44 +00:00
|
|
|
|
2025-05-28 02:31:02 +00:00
|
|
|
## Overview
|
|
|
|
This script provides a WebSocket bridge to interface with multiple Language Servers through clients via a single WebSocket connection.
|
|
|
|
It supports various language servers concurrently and handles language-specific file extensions and initialization parameters.
|
|
|
|
|
|
|
|
## Features
|
|
|
|
- Utilizes `vscode-jsonrpc` for LSP message handling.
|
|
|
|
- Supports multiple language servers concurrently.
|
|
|
|
- Support for IPC and stdio communication with language servers.
|
|
|
|
- Easy language server configuration and initialization parameter modification.
|
|
|
|
- Error handling and logging for language server processes.
|
|
|
|
- Automatic file URI translation between server and client paths.
|
|
|
|
- Temporary file creation for `textDocument/didOpen` events.
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
1. Install Node.js.
|
|
|
|
2. Run 'npm install'.
|
|
|
|
3. Configure the desired language servers in `defaultServers.js`.
|
|
|
|
4. Run the script: `npm run start || start-verbose`.
|
|
|
|
5. Connect to the WebSocket server on `ws://localhost:9999/<language_endpoint>`.
|
|
|
|
6. Transmit LSP messages via the WebSocket connection.
|
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
Add or modify language server configurations in `languageServers.js`:
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
exports.servers = [
|
|
|
|
{
|
|
|
|
endpointName: "language_endpoint", // WebSocket endpoint name
|
|
|
|
args: ['executable_path', ['arg1', 'arg2', ...]],
|
|
|
|
connectionType: "ipc" | "stdio", // Communication type
|
|
|
|
relativePath: true | false, // Whether to use relative paths
|
|
|
|
serverFileNameReplacePattern: { // Server file name regex replacements
|
|
|
|
from: /pattern/,
|
|
|
|
to: "replacement"
|
|
|
|
},
|
|
|
|
clientFileNameReplacePattern: { // Client file name regex replacements
|
|
|
|
from: /pattern/,
|
|
|
|
to: "replacement"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
...
|
|
|
|
];
|
|
|
|
```
|