# Newton LSP Server Bridge ## 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/`. 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" } }, ... ]; ```