()
| 94 | ); |
| 95 | |
| 96 | const tcpServerOptions = () => new Promise<DisposableProcess | StreamInfo>((resolve, reject) => { |
| 97 | // Use a TCP socket because of problems with blocking STDIO |
| 98 | const server = net.createServer(socket => { |
| 99 | // 'connection' listener |
| 100 | console.log('R process connected'); |
| 101 | socket.on('end', () => { |
| 102 | console.log('R process disconnected'); |
| 103 | }); |
| 104 | socket.on('error', (e: Error) => { |
| 105 | console.log(`R process error: ${e.message}`); |
| 106 | reject(e); |
| 107 | }); |
| 108 | server.close(); |
| 109 | resolve({ reader: socket, writer: socket }); |
| 110 | }); |
| 111 | // Listen on random port |
| 112 | server.listen(0, '127.0.0.1', () => { |
| 113 | const port = (server.address() as net.AddressInfo).port; |
| 114 | env.VSCR_LSP_PORT = String(port); |
| 115 | return this.spawnServer(client, rPath, args, options); |
| 116 | }); |
| 117 | }); |
| 118 | |
| 119 | // Options to control the language client |
| 120 | const clientOptions: LanguageClientOptions = { |
nothing calls this directly
no test coverage detected