1 |
|
2 |
|
3 |
|
4 |
|
5 | 'use strict';
|
6 | Object.defineProperty(exports, "__esModule", { value: true });
|
7 | exports.WorkspaceFoldersFeature = void 0;
|
8 | const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
|
9 | const WorkspaceFoldersFeature = (Base) => {
|
10 | return class extends Base {
|
11 | constructor() {
|
12 | super();
|
13 | this._notificationIsAutoRegistered = false;
|
14 | }
|
15 | initialize(capabilities) {
|
16 | super.initialize(capabilities);
|
17 | let workspaceCapabilities = capabilities.workspace;
|
18 | if (workspaceCapabilities && workspaceCapabilities.workspaceFolders) {
|
19 | this._onDidChangeWorkspaceFolders = new vscode_languageserver_protocol_1.Emitter();
|
20 | this.connection.onNotification(vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type, (params) => {
|
21 | this._onDidChangeWorkspaceFolders.fire(params.event);
|
22 | });
|
23 | }
|
24 | }
|
25 | fillServerCapabilities(capabilities) {
|
26 | super.fillServerCapabilities(capabilities);
|
27 | const changeNotifications = capabilities.workspace?.workspaceFolders?.changeNotifications;
|
28 | this._notificationIsAutoRegistered = changeNotifications === true || typeof changeNotifications === 'string';
|
29 | }
|
30 | getWorkspaceFolders() {
|
31 | return this.connection.sendRequest(vscode_languageserver_protocol_1.WorkspaceFoldersRequest.type);
|
32 | }
|
33 | get onDidChangeWorkspaceFolders() {
|
34 | if (!this._onDidChangeWorkspaceFolders) {
|
35 | throw new Error('Client doesn\'t support sending workspace folder change events.');
|
36 | }
|
37 | if (!this._notificationIsAutoRegistered && !this._unregistration) {
|
38 | this._unregistration = this.connection.client.register(vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type);
|
39 | }
|
40 | return this._onDidChangeWorkspaceFolders.event;
|
41 | }
|
42 | };
|
43 | };
|
44 | exports.WorkspaceFoldersFeature = WorkspaceFoldersFeature;
|