typescript-language-server
Version:
Language Server Protocol (LSP) implementation for TypeScript using tsserver
55 lines • 3.25 kB
JavaScript
/*
* Copyright (C) 2017, 2018 TypeFox and others.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*/
import * as lsp from 'vscode-languageserver/node.js';
import * as lspcalls from './lsp-protocol.calls.proposed.js';
import * as lspinlayHints from './lsp-protocol.inlayHints.proposed.js';
import { LspClientLogger } from './logger.js';
import { LspServer } from './lsp-server.js';
import { LspClientImpl } from './lsp-client.js';
export function createLspConnection(options) {
const connection = lsp.createConnection(lsp.ProposedFeatures.all);
const lspClient = new LspClientImpl(connection);
const logger = new LspClientLogger(lspClient, options.showMessageLevel);
const server = new LspServer({
logger,
lspClient,
tsserverPath: options.tsserverPath,
tsserverLogFile: options.tsserverLogFile,
tsserverLogVerbosity: options.tsserverLogVerbosity,
});
connection.onInitialize(server.initialize.bind(server));
connection.onDidChangeConfiguration(server.didChangeConfiguration.bind(server));
connection.onDidOpenTextDocument(server.didOpenTextDocument.bind(server));
connection.onDidSaveTextDocument(server.didSaveTextDocument.bind(server));
connection.onDidCloseTextDocument(server.didCloseTextDocument.bind(server));
connection.onDidChangeTextDocument(server.didChangeTextDocument.bind(server));
connection.onCodeAction(server.codeAction.bind(server));
connection.onCompletion(server.completion.bind(server));
connection.onCompletionResolve(server.completionResolve.bind(server));
connection.onDefinition(server.definition.bind(server));
connection.onImplementation(server.implementation.bind(server));
connection.onTypeDefinition(server.typeDefinition.bind(server));
connection.onDocumentFormatting(server.documentFormatting.bind(server));
connection.onDocumentRangeFormatting(server.documentRangeFormatting.bind(server));
connection.onDocumentHighlight(server.documentHighlight.bind(server));
connection.onDocumentSymbol(server.documentSymbol.bind(server));
connection.onExecuteCommand(server.executeCommand.bind(server));
connection.onHover(server.hover.bind(server));
connection.onReferences(server.references.bind(server));
connection.onRenameRequest(server.rename.bind(server));
connection.onSignatureHelp(server.signatureHelp.bind(server));
connection.onWorkspaceSymbol(server.workspaceSymbol.bind(server));
connection.onFoldingRanges(server.foldingRanges.bind(server));
connection.languages.inlayHint.on(server.inlayHints.bind(server));
// proposed `textDocument/calls` request
connection.onRequest(lspcalls.CallsRequest.type, server.calls.bind(server));
connection.onRequest(lspinlayHints.type, server.inlayHintsLegacy.bind(server));
connection.onRequest(lsp.SemanticTokensRequest.type, server.semanticTokensFull.bind(server));
connection.onRequest(lsp.SemanticTokensRangeRequest.type, server.semanticTokensRange.bind(server));
return connection;
}
//# sourceMappingURL=lsp-connection.js.map