|
1 | | -import { |
2 | | - createConnection, |
3 | | - DidChangeConfigurationNotification, |
4 | | - InitializeParams, |
5 | | - InitializeResult, |
6 | | - ProposedFeatures, |
7 | | - TextDocumentSyncKind, |
8 | | -} from 'vscode-languageserver/node.js'; |
9 | | -import { BitloopsServer } from './server.js'; |
10 | | -let hasConfigurationCapability = false; |
11 | | -let hasWorkspaceFolderCapability = false; |
12 | | -let hasDiagnosticRelatedInformationCapability = false; |
| 1 | +import { LspConnection } from './lsp-connection.js'; |
13 | 2 |
|
14 | | -const connection = createConnection(ProposedFeatures.all); |
15 | | -connection.onInitialize(onInitialize); |
16 | | -connection.onInitialized(onInitialized); |
17 | | -const server = new BitloopsServer( |
18 | | - connection, |
19 | | - hasConfigurationCapability, |
20 | | - hasWorkspaceFolderCapability, |
21 | | - hasDiagnosticRelatedInformationCapability |
22 | | -); |
23 | | -server.register(); |
24 | | - |
25 | | -function onInitialize(params: InitializeParams): InitializeResult { |
26 | | - const capabilities = params.capabilities; |
27 | | - hasConfigurationCapability = !!(capabilities.workspace && !!capabilities.workspace.configuration); |
28 | | - hasWorkspaceFolderCapability = !!(capabilities.workspace && !!capabilities.workspace.workspaceFolders); |
29 | | - hasDiagnosticRelatedInformationCapability = !!( |
30 | | - capabilities.textDocument && |
31 | | - capabilities.textDocument.publishDiagnostics && |
32 | | - capabilities.textDocument.publishDiagnostics.relatedInformation |
33 | | - ); |
34 | | - |
35 | | - const result: InitializeResult = { |
36 | | - capabilities: { |
37 | | - textDocumentSync: TextDocumentSyncKind.Incremental, |
38 | | - // Tell the client that this server supports code completion. |
39 | | - completionProvider: { |
40 | | - resolveProvider: true, |
41 | | - }, |
42 | | - }, |
43 | | - }; |
44 | | - if (hasWorkspaceFolderCapability) { |
45 | | - result.capabilities.workspace = { |
46 | | - workspaceFolders: { |
47 | | - supported: true, |
48 | | - }, |
49 | | - }; |
50 | | - } |
51 | | - return result; |
52 | | -} |
53 | | -function onInitialized() { |
54 | | - if (hasConfigurationCapability) { |
55 | | - // Register for all configuration changes. |
56 | | - connection.client.register(DidChangeConfigurationNotification.type, undefined); |
57 | | - } |
58 | | - if (hasWorkspaceFolderCapability) { |
59 | | - connection.workspace.onDidChangeWorkspaceFolders((_event) => { |
60 | | - connection.console.log('Workspace folder change event received.'); |
61 | | - }); |
62 | | - } |
63 | | -} |
| 3 | +new LspConnection().registerLspEvents().listen(); |
0 commit comments