diff --git a/package.json b/package.json index 0b1b36786..f2d121a8e 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "prettier": "^1.19.1", "ts-jest": "^25.2.1", "typescript": "^3.8.3", - "vscode-languageserver": "^5.2.1" + "vscode-languageserver": "^6.1.1" }, "dependencies": {}, "resolutions": { diff --git a/server/package.json b/server/package.json index 1fef46b38..33ca38dc3 100644 --- a/server/package.json +++ b/server/package.json @@ -24,7 +24,8 @@ "request-promise-native": "^1.0.5", "turndown": "^4.0.2", "urijs": "^1.19.1", - "vscode-languageserver": "^5.2.1", + "vscode-languageserver": "^6.1.1", + "vscode-languageserver-textdocument": "^1.0.1", "web-tree-sitter": "^0.16.2" }, "scripts": { diff --git a/server/src/__tests__/server.test.ts b/server/src/__tests__/server.test.ts index 9a77efd83..f436c230d 100644 --- a/server/src/__tests__/server.test.ts +++ b/server/src/__tests__/server.test.ts @@ -64,6 +64,7 @@ describe('server', () => { }, }, {} as any, + {} as any, ) expect(result).toBeDefined() @@ -93,6 +94,7 @@ describe('server', () => { }, }, {} as any, + {} as any, ) // TODO: there is a superfluous range here on line 0: @@ -149,6 +151,7 @@ describe('server', () => { }, }, {} as any, + {} as any, ) expect(result2).toMatchInlineSnapshot(`Array []`) @@ -166,6 +169,7 @@ describe('server', () => { query, }, {} as any, + {} as any, ) expect(result).toEqual([ @@ -217,6 +221,7 @@ describe('server', () => { }, }, {} as any, + {} as any, ) // Limited set (not using snapshot due to different executables on CI and locally) @@ -253,6 +258,7 @@ describe('server', () => { }, }, {} as any, + {} as any, ) // Entire list @@ -277,6 +283,7 @@ describe('server', () => { }, }, {} as any, + {} as any, ) expect(result).toEqual([]) @@ -300,6 +307,7 @@ describe('server', () => { }, }, {} as any, + {} as any, ) expect(resultVariable).toMatchInlineSnapshot(` @@ -328,6 +336,7 @@ describe('server', () => { }, }, {} as any, + {} as any, ) expect(resultFunction).toMatchInlineSnapshot(` @@ -363,6 +372,7 @@ describe('server', () => { }, }, {} as any, + {} as any, ) expect(result).toMatchInlineSnapshot(` diff --git a/server/src/index.ts b/server/src/index.ts index 1d8f345d6..d723bccc8 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -15,17 +15,16 @@ export function listen() { ) connection.onInitialize( - (params: LSP.InitializeParams): Promise => { + async (params: LSP.InitializeParams): Promise => { connection.console.log(`Initialized server v. ${pkg.version} for ${params.rootUri}`) - return BashServer.initialize(connection, params) - .then(server => { - server.register(connection) - return server - }) - .then(server => ({ - capabilities: server.capabilities(), - })) + const server = await BashServer.initialize(connection, params) + + server.register(connection) + + return { + capabilities: server.capabilities(), + } }, ) diff --git a/server/src/server.ts b/server/src/server.ts index d6aa1a086..306003ea1 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -1,6 +1,7 @@ import * as path from 'path' import * as TurndownService from 'turndown' import * as LSP from 'vscode-languageserver' +import { TextDocument } from 'vscode-languageserver-textdocument' import Analyzer from './analyser' import * as Builtins from './builtins' @@ -39,7 +40,7 @@ export default class BashServer { private executables: Executables private analyzer: Analyzer - private documents: LSP.TextDocuments = new LSP.TextDocuments() + private documents: LSP.TextDocuments = new LSP.TextDocuments(TextDocument) private connection: LSP.Connection private constructor( @@ -89,7 +90,7 @@ export default class BashServer { return { // For now we're using full-sync even though tree-sitter has great support // for partial updates. - textDocumentSync: this.documents.syncKind, + textDocumentSync: LSP.TextDocumentSyncKind.Full, completionProvider: { resolveProvider: true, }, diff --git a/server/yarn.lock b/server/yarn.lock index dfc2405ed..158324070 100644 --- a/server/yarn.lock +++ b/server/yarn.lock @@ -740,36 +740,35 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vscode-jsonrpc@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz#a7bf74ef3254d0a0c272fab15c82128e378b3be9" - integrity sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg== +vscode-jsonrpc@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz#9bab9c330d89f43fc8c1e8702b5c36e058a01794" + integrity sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A== -vscode-languageserver-protocol@3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz#b8aab6afae2849c84a8983d39a1cf742417afe2f" - integrity sha512-IL66BLb2g20uIKog5Y2dQ0IiigW0XKrvmWiOvc0yXw80z3tMEzEnHjaGAb3ENuU7MnQqgnYJ1Cl2l9RvNgDi4g== +vscode-languageserver-protocol@^3.15.3: + version "3.15.3" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz#3fa9a0702d742cf7883cb6182a6212fcd0a1d8bb" + integrity sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw== dependencies: - vscode-jsonrpc "^4.0.0" - vscode-languageserver-types "3.14.0" + vscode-jsonrpc "^5.0.1" + vscode-languageserver-types "3.15.1" + +vscode-languageserver-textdocument@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz#178168e87efad6171b372add1dea34f53e5d330f" + integrity sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA== -vscode-languageserver-types@3.14.0: - version "3.14.0" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz#d3b5952246d30e5241592b6dde8280e03942e743" - integrity sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A== +vscode-languageserver-types@3.15.1: + version "3.15.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de" + integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ== -vscode-languageserver@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-5.2.1.tgz#0d2feddd33f92aadf5da32450df498d52f6f14eb" - integrity sha512-GuayqdKZqAwwaCUjDvMTAVRPJOp/SLON3mJ07eGsx/Iq9HjRymhKWztX41rISqDKhHVVyFM+IywICyZDla6U3A== +vscode-languageserver@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-6.1.1.tgz#d76afc68172c27d4327ee74332b468fbc740d762" + integrity sha512-DueEpkUAkD5XTR4MLYNr6bQIp/UFR0/IPApgXU3YfCBCB08u2sm9hRCs6DxYZELkk++STPjpcjksR2H8qI3cDQ== dependencies: - vscode-languageserver-protocol "3.14.1" - vscode-uri "^1.0.6" - -vscode-uri@^1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.8.tgz#9769aaececae4026fb6e22359cb38946580ded59" - integrity sha512-obtSWTlbJ+a+TFRYGaUumtVwb+InIUVI0Lu0VBUAPmj2cU5JutEXg3xUE0c2J5Tcy7h2DEKVJBFi+Y9ZSFzzPQ== + vscode-languageserver-protocol "^3.15.3" w3c-hr-time@^1.0.1: version "1.0.1" diff --git a/testing/mocks.ts b/testing/mocks.ts index a9e2da49f..0f398315e 100644 --- a/testing/mocks.ts +++ b/testing/mocks.ts @@ -12,6 +12,7 @@ export function getMockConnection(): jest.Mocked { client: {} as any, console, dispose: jest.fn(), + languages: {} as any, listen: jest.fn(), onCodeAction: jest.fn(), onCodeLens: jest.fn(), @@ -44,9 +45,11 @@ export function getMockConnection(): jest.Mocked { onInitialized: jest.fn(), onNotification: jest.fn(), onPrepareRename: jest.fn(), + onProgress: jest.fn(), onReferences: jest.fn(), onRenameRequest: jest.fn(), onRequest: jest.fn(), + onSelectionRanges: jest.fn(), onShutdown: jest.fn(), onSignatureHelp: jest.fn(), onTypeDefinition: jest.fn(), @@ -55,6 +58,7 @@ export function getMockConnection(): jest.Mocked { onWorkspaceSymbol: jest.fn(), sendDiagnostics: jest.fn(), sendNotification: jest.fn(), + sendProgress: jest.fn(), sendRequest: jest.fn(), telemetry: {} as any, tracer: {} as any, diff --git a/vscode-client/src/extension.ts b/vscode-client/src/extension.ts index ab8b9d99b..d2ede6f34 100644 --- a/vscode-client/src/extension.ts +++ b/vscode-client/src/extension.ts @@ -55,8 +55,6 @@ export async function activate(context: ExtensionContext) { const client = new LanguageClient('Bash IDE', 'Bash IDE', serverOptions, clientOptions) - // client.registerProposedFeatures(); - // Push the disposable to the context's subscriptions so that the // client can be deactivated on extension deactivation context.subscriptions.push(client.start()) diff --git a/yarn.lock b/yarn.lock index d32ae40d3..54a0c808c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3833,36 +3833,30 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vscode-jsonrpc@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz#a7bf74ef3254d0a0c272fab15c82128e378b3be9" - integrity sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg== +vscode-jsonrpc@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-5.0.1.tgz#9bab9c330d89f43fc8c1e8702b5c36e058a01794" + integrity sha512-JvONPptw3GAQGXlVV2utDcHx0BiY34FupW/kI6mZ5x06ER5DdPG/tXWMVHjTNULF5uKPOUUD0SaXg5QaubJL0A== -vscode-languageserver-protocol@3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz#b8aab6afae2849c84a8983d39a1cf742417afe2f" - integrity sha512-IL66BLb2g20uIKog5Y2dQ0IiigW0XKrvmWiOvc0yXw80z3tMEzEnHjaGAb3ENuU7MnQqgnYJ1Cl2l9RvNgDi4g== +vscode-languageserver-protocol@^3.15.3: + version "3.15.3" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.3.tgz#3fa9a0702d742cf7883cb6182a6212fcd0a1d8bb" + integrity sha512-zrMuwHOAQRhjDSnflWdJG+O2ztMWss8GqUUB8dXLR/FPenwkiBNkMIJJYfSN6sgskvsF0rHAoBowNQfbyZnnvw== dependencies: - vscode-jsonrpc "^4.0.0" - vscode-languageserver-types "3.14.0" + vscode-jsonrpc "^5.0.1" + vscode-languageserver-types "3.15.1" -vscode-languageserver-types@3.14.0: - version "3.14.0" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz#d3b5952246d30e5241592b6dde8280e03942e743" - integrity sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A== +vscode-languageserver-types@3.15.1: + version "3.15.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de" + integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ== -vscode-languageserver@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-5.2.1.tgz#0d2feddd33f92aadf5da32450df498d52f6f14eb" - integrity sha512-GuayqdKZqAwwaCUjDvMTAVRPJOp/SLON3mJ07eGsx/Iq9HjRymhKWztX41rISqDKhHVVyFM+IywICyZDla6U3A== +vscode-languageserver@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-6.1.1.tgz#d76afc68172c27d4327ee74332b468fbc740d762" + integrity sha512-DueEpkUAkD5XTR4MLYNr6bQIp/UFR0/IPApgXU3YfCBCB08u2sm9hRCs6DxYZELkk++STPjpcjksR2H8qI3cDQ== dependencies: - vscode-languageserver-protocol "3.14.1" - vscode-uri "^1.0.6" - -vscode-uri@^1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.8.tgz#9769aaececae4026fb6e22359cb38946580ded59" - integrity sha512-obtSWTlbJ+a+TFRYGaUumtVwb+InIUVI0Lu0VBUAPmj2cU5JutEXg3xUE0c2J5Tcy7h2DEKVJBFi+Y9ZSFzzPQ== + vscode-languageserver-protocol "^3.15.3" w3c-hr-time@^1.0.1: version "1.0.1"