Skip to content

Commit 12a0abe

Browse files
MariaSolOsdbaeumer
andauthored
Add capability information to the metamodel (#1591)
Co-authored-by: Dirk Bäumer <dirkb@microsoft.com>
1 parent c44abfc commit 12a0abe

26 files changed

+328
-38
lines changed

protocol/metaModel.json

Lines changed: 126 additions & 0 deletions
Large diffs are not rendered by default.

protocol/metaModel.schema.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,10 @@
362362
"additionalProperties": false,
363363
"description": "Represents a LSP notification",
364364
"properties": {
365+
"clientCapability": {
366+
"description": "The client capability property path if any.",
367+
"type": "string"
368+
},
365369
"deprecated": {
366370
"description": "Whether the notification is deprecated or not. If deprecated the property contains the deprecation message.",
367371
"type": "string"
@@ -404,6 +408,10 @@
404408
"$ref": "#/definitions/Type",
405409
"description": "Optional registration options if the notification supports dynamic registration."
406410
},
411+
"serverCapability": {
412+
"description": "The server capability property path if any.",
413+
"type": "string"
414+
},
407415
"since": {
408416
"description": "Since when (release number) this notification is available. Is undefined if not known.",
409417
"type": "string"
@@ -515,6 +523,10 @@
515523
"additionalProperties": false,
516524
"description": "Represents a LSP request",
517525
"properties": {
526+
"clientCapability": {
527+
"description": "The client capability property path if any.",
528+
"type": "string"
529+
},
518530
"deprecated": {
519531
"description": "Whether the request is deprecated or not. If deprecated the property contains the deprecation message.",
520532
"type": "string"
@@ -569,6 +581,10 @@
569581
"$ref": "#/definitions/Type",
570582
"description": "The result type."
571583
},
584+
"serverCapability": {
585+
"description": "The server capability property path if any.",
586+
"type": "string"
587+
},
572588
"since": {
573589
"description": "Since when (release number) this request is available. Is undefined if not known.",
574590
"type": "string"

protocol/src/common/protocol.callHierarchy.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import { RequestHandler } from 'vscode-jsonrpc';
77
import { CallHierarchyItem, CallHierarchyIncomingCall, CallHierarchyOutgoingCall } from 'vscode-languageserver-types';
88

99
import { MessageDirection, ProtocolRequestType } from './messages';
10-
import type {
11-
TextDocumentRegistrationOptions, StaticRegistrationOptions, TextDocumentPositionParams, PartialResultParams,
12-
WorkDoneProgressParams, WorkDoneProgressOptions
10+
import {
11+
type TextDocumentRegistrationOptions, type StaticRegistrationOptions, type TextDocumentPositionParams, type PartialResultParams,
12+
type WorkDoneProgressParams, type WorkDoneProgressOptions,
13+
CM
1314
} from './protocol';
1415

1516
/**
@@ -59,6 +60,7 @@ export namespace CallHierarchyPrepareRequest {
5960
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
6061
export const type = new ProtocolRequestType<CallHierarchyPrepareParams, CallHierarchyItem[] | null, never, void, CallHierarchyRegistrationOptions>(method);
6162
export type HandlerSignature = RequestHandler<CallHierarchyPrepareParams, CallHierarchyItem[] | null, void>;
63+
export const capabilities = CM.create('textDocument.callHierarchy', 'callHierarchyProvider');
6264
}
6365

6466
/**

protocol/src/common/protocol.colorProvider.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ import { RequestHandler } from 'vscode-jsonrpc';
77
import { TextDocumentIdentifier, Range, Color, ColorInformation, ColorPresentation } from 'vscode-languageserver-types';
88

99
import { MessageDirection, ProtocolRequestType } from './messages';
10-
import type {
11-
TextDocumentRegistrationOptions, StaticRegistrationOptions, PartialResultParams, WorkDoneProgressParams, WorkDoneProgressOptions
10+
import {
11+
type TextDocumentRegistrationOptions, type StaticRegistrationOptions, type PartialResultParams, type WorkDoneProgressParams, type WorkDoneProgressOptions,
12+
CM
1213
} from './protocol';
1314

1415
//---- Client capability ----
@@ -51,6 +52,7 @@ export namespace DocumentColorRequest {
5152
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
5253
export const type = new ProtocolRequestType<DocumentColorParams, ColorInformation[], ColorInformation[], void, DocumentColorRegistrationOptions>(method);
5354
export type HandlerSignature = RequestHandler<DocumentColorParams, ColorInformation[], void>;
55+
export const capabilities = CM.create('textDocument.colorProvider', 'colorProvider');
5456
}
5557

5658
/**

protocol/src/common/protocol.configuration.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { RequestHandler, HandlerResult, CancellationToken } from 'vscode-jsonrpc
77
import { LSPAny, URI } from 'vscode-languageserver-types';
88

99
import { MessageDirection, ProtocolRequestType } from './messages';
10+
import { CM } from './protocol';
1011

1112
//---- Get Configuration request ----
1213

@@ -25,6 +26,7 @@ export namespace ConfigurationRequest {
2526
export const type = new ProtocolRequestType<ConfigurationParams, LSPAny[], never, void, void>(method);
2627
export type HandlerSignature = RequestHandler<ConfigurationParams, LSPAny[], void>;
2728
export type MiddlewareSignature = (params: ConfigurationParams, token: CancellationToken, next: HandlerSignature) => HandlerResult<LSPAny[], void>;
29+
export const capabilities = CM.create('workspace.configuration', undefined);
2830
}
2931

3032

protocol/src/common/protocol.declaration.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import { RequestHandler } from 'vscode-jsonrpc';
77
import { Declaration, DeclarationLink, Location, LocationLink } from 'vscode-languageserver-types';
88

99
import { MessageDirection, ProtocolRequestType } from './messages';
10-
import type {
11-
TextDocumentRegistrationOptions, StaticRegistrationOptions, TextDocumentPositionParams, PartialResultParams, WorkDoneProgressParams,
12-
WorkDoneProgressOptions
10+
import {
11+
type TextDocumentRegistrationOptions, type StaticRegistrationOptions, type TextDocumentPositionParams, type PartialResultParams, type WorkDoneProgressParams,
12+
type WorkDoneProgressOptions,
13+
CM
1314
} from './protocol';
1415

1516
// @ts-ignore: to avoid inlining LocationLink as dynamic import
@@ -52,4 +53,5 @@ export namespace DeclarationRequest {
5253
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
5354
export const type = new ProtocolRequestType<DeclarationParams, Declaration | DeclarationLink[] | null, Location[] | DeclarationLink[], void, DeclarationRegistrationOptions>(method);
5455
export type HandlerSignature = RequestHandler<DeclarationParams, Declaration | DeclarationLink[] | null, void>;
56+
export const capabilities = CM.create('textDocument.declaration', 'declarationProvider');
5557
}

protocol/src/common/protocol.diagnostic.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import { TextDocumentIdentifier, Diagnostic, DocumentUri, integer } from 'vscode
88

99
import * as Is from './utils/is';
1010
import { MessageDirection, ProtocolRequestType0, ProtocolRequestType } from './messages';
11-
import type {
12-
PartialResultParams, StaticRegistrationOptions, WorkDoneProgressParams, TextDocumentRegistrationOptions, WorkDoneProgressOptions,
13-
DiagnosticsCapabilities
11+
import {
12+
type PartialResultParams, type StaticRegistrationOptions, type WorkDoneProgressParams, type TextDocumentRegistrationOptions, type WorkDoneProgressOptions,
13+
type DiagnosticsCapabilities,
14+
CM
1415
} from './protocol';
1516

16-
1717
/**
1818
* Client capabilities specific to diagnostic pull requests.
1919
*
@@ -269,6 +269,7 @@ export namespace DocumentDiagnosticRequest {
269269
export const type = new ProtocolRequestType<DocumentDiagnosticParams, DocumentDiagnosticReport, DocumentDiagnosticReportPartialResult, DiagnosticServerCancellationData, DiagnosticRegistrationOptions>(method);
270270
export const partialResult = new ProgressType<DocumentDiagnosticReportPartialResult>();
271271
export type HandlerSignature = RequestHandler<DocumentDiagnosticParams, DocumentDiagnosticReport, void>;
272+
export const capabilities = CM.create('textDocument.diagnostic', 'diagnosticProvider');
272273
}
273274

274275
/**
@@ -382,6 +383,7 @@ export namespace WorkspaceDiagnosticRequest {
382383
export const type = new ProtocolRequestType<WorkspaceDiagnosticParams, WorkspaceDiagnosticReport, WorkspaceDiagnosticReportPartialResult, DiagnosticServerCancellationData, void>(method);
383384
export const partialResult = new ProgressType<WorkspaceDiagnosticReportPartialResult>();
384385
export type HandlerSignature = RequestHandler<WorkspaceDiagnosticParams, WorkspaceDiagnosticReport | null, void>;
386+
export const capabilities = CM.create('workspace.diagnostics', 'diagnosticProvider.workspaceDiagnostics');
385387
}
386388

387389
/**
@@ -394,4 +396,5 @@ export namespace DiagnosticRefreshRequest {
394396
export const messageDirection: MessageDirection = MessageDirection.serverToClient;
395397
export const type = new ProtocolRequestType0<void, void, void, void>(method);
396398
export type HandlerSignature = RequestHandler0<void, void>;
399+
export const capabilities = CM.create('workspace.diagnostics.refreshSupport', undefined);
397400
}

protocol/src/common/protocol.fileOperations.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import { NotificationHandler, RequestHandler } from 'vscode-jsonrpc';
77
import { WorkspaceEdit } from 'vscode-languageserver-types';
88
import { MessageDirection, ProtocolNotificationType, ProtocolRequestType } from './messages';
9+
import { CM } from './protocol';
910

1011
/**
1112
* Options for notifications/requests for user operations on files.
@@ -292,6 +293,7 @@ export namespace WillCreateFilesRequest {
292293
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
293294
export const type = new ProtocolRequestType<CreateFilesParams, WorkspaceEdit | null, never, void, FileOperationRegistrationOptions>(method);
294295
export type HandlerSignature = RequestHandler<CreateFilesParams, WorkspaceEdit | undefined | null, void>;
296+
export const capabilities = CM.create('workspace.fileOperations.willCreate', 'workspace.fileOperations.willCreate');
295297
}
296298

297299
/**
@@ -305,6 +307,7 @@ export namespace DidCreateFilesNotification {
305307
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
306308
export const type = new ProtocolNotificationType<CreateFilesParams, FileOperationRegistrationOptions>(method);
307309
export type HandlerSignature = NotificationHandler<CreateFilesParams>;
310+
export const capabilities = CM.create('workspace.fileOperations.didCreate', 'workspace.fileOperations.didCreate');
308311
}
309312

310313
/**
@@ -318,6 +321,7 @@ export namespace WillRenameFilesRequest {
318321
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
319322
export const type = new ProtocolRequestType<RenameFilesParams, WorkspaceEdit | null, never, void, FileOperationRegistrationOptions>(method);
320323
export type HandlerSignature = RequestHandler<RenameFilesParams, WorkspaceEdit | undefined | null, void>;
324+
export const capabilities = CM.create('workspace.fileOperations.willRename', 'workspace.fileOperations.willRename');
321325
}
322326

323327
/**
@@ -331,6 +335,7 @@ export namespace DidRenameFilesNotification {
331335
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
332336
export const type = new ProtocolNotificationType<RenameFilesParams, FileOperationRegistrationOptions>(method);
333337
export type HandlerSignature = NotificationHandler<RenameFilesParams>;
338+
export const capabilities = CM.create('workspace.fileOperations.didRename', 'workspace.fileOperations.didRename');
334339
}
335340

336341
/**
@@ -344,6 +349,7 @@ export namespace DidDeleteFilesNotification {
344349
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
345350
export const type = new ProtocolNotificationType<DeleteFilesParams, FileOperationRegistrationOptions>(method);
346351
export type HandlerSignature = NotificationHandler<DeleteFilesParams>;
352+
export const capabilities = CM.create('workspace.fileOperations.didDelete', 'workspace.fileOperations.didDelete');
347353
}
348354

349355
/**
@@ -357,4 +363,5 @@ export namespace WillDeleteFilesRequest {
357363
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
358364
export const type = new ProtocolRequestType<DeleteFilesParams, WorkspaceEdit | null, never, void, FileOperationRegistrationOptions>(method);
359365
export type HandlerSignature = RequestHandler<DeleteFilesParams, WorkspaceEdit | undefined | null, void>;
366+
export const capabilities = CM.create('workspace.fileOperations.willDelete', 'workspace.fileOperations.willDelete');
360367
}

protocol/src/common/protocol.foldingRange.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ import { RequestHandler, RequestHandler0 } from 'vscode-jsonrpc';
77
import { TextDocumentIdentifier, uinteger, FoldingRange, FoldingRangeKind } from 'vscode-languageserver-types';
88

99
import { MessageDirection, ProtocolRequestType, ProtocolRequestType0 } from './messages';
10-
import type {
11-
TextDocumentRegistrationOptions, StaticRegistrationOptions, PartialResultParams, WorkDoneProgressParams, WorkDoneProgressOptions
10+
import {
11+
type TextDocumentRegistrationOptions, type StaticRegistrationOptions, type PartialResultParams, type WorkDoneProgressParams, type WorkDoneProgressOptions,
12+
CM
1213
} from './protocol';
1314

1415
// ---- capabilities
@@ -128,6 +129,7 @@ export namespace FoldingRangeRequest {
128129
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
129130
export const type = new ProtocolRequestType<FoldingRangeParams, FoldingRange[] | null, FoldingRange[], void, FoldingRangeRegistrationOptions>(method);
130131
export type HandlerSignature = RequestHandler<FoldingRangeParams, FoldingRange[] | null, void>;
132+
export const capabilities = CM.create('textDocument.foldingRange', 'foldingRangeProvider');
131133
}
132134

133135
/**
@@ -139,4 +141,5 @@ export namespace FoldingRangeRefreshRequest {
139141
export const messageDirection: MessageDirection = MessageDirection.serverToClient;
140142
export const type = new ProtocolRequestType0<void, void, void, void>(method);
141143
export type HandlerSignature = RequestHandler0<void, void>;
144+
export const capabilities = CM.create('workspace.foldingRange.refreshSupport', undefined);
142145
}

protocol/src/common/protocol.implementation.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import { RequestHandler } from 'vscode-jsonrpc';
77
import { Definition, DefinitionLink, Location, LocationLink } from 'vscode-languageserver-types';
88

99
import { MessageDirection, ProtocolRequestType } from './messages';
10-
import type {
11-
TextDocumentRegistrationOptions, StaticRegistrationOptions, TextDocumentPositionParams, PartialResultParams, WorkDoneProgressParams,
12-
WorkDoneProgressOptions
10+
import {
11+
type TextDocumentRegistrationOptions, type StaticRegistrationOptions, type TextDocumentPositionParams, type PartialResultParams, type WorkDoneProgressParams,
12+
type WorkDoneProgressOptions,
13+
CM
1314
} from './protocol';
1415

1516
// @ts-ignore: to avoid inlining LocationLink as dynamic import
@@ -53,4 +54,5 @@ export namespace ImplementationRequest {
5354
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
5455
export const type = new ProtocolRequestType<ImplementationParams, Definition | DefinitionLink[] | null, Location[] | DefinitionLink[], void, ImplementationRegistrationOptions>(method);
5556
export type HandlerSignature = RequestHandler<ImplementationParams, Definition | DefinitionLink[] | null, void>;
57+
export const capabilities = CM.create('textDocument.implementation', 'implementationProvider');
5658
}

protocol/src/common/protocol.inlayHint.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { RequestHandler, RequestHandler0 } from 'vscode-jsonrpc';
77
import { Range, TextDocumentIdentifier, InlayHint } from 'vscode-languageserver-types';
88
import { MessageDirection, ProtocolRequestType, ProtocolRequestType0 } from './messages';
99

10-
import type { StaticRegistrationOptions, TextDocumentRegistrationOptions, WorkDoneProgressOptions, WorkDoneProgressParams } from './protocol';
10+
import { CM, type StaticRegistrationOptions, type TextDocumentRegistrationOptions, type WorkDoneProgressOptions, type WorkDoneProgressParams } from './protocol';
1111

1212
/**
1313
* @since 3.18.0
@@ -105,6 +105,7 @@ export namespace InlayHintRequest {
105105
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
106106
export const type = new ProtocolRequestType<InlayHintParams, InlayHint[] | null, InlayHint[], void, InlayHintRegistrationOptions>(method);
107107
export type HandlerSignature = RequestHandler<InlayHintParams, InlayHint[] | null, void>;
108+
export const capabilities = CM.create('textDocument.inlayHint', 'inlayHintProvider');
108109
}
109110

110111
/**
@@ -119,6 +120,7 @@ export namespace InlayHintResolveRequest {
119120
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
120121
export const type = new ProtocolRequestType<InlayHint, InlayHint, never, void, void>(method);
121122
export type HandlerSignature = RequestHandler<InlayHint, InlayHint, void>;
123+
export const capabilities = CM.create('textDocument.inlayHint.resolveSupport', 'inlayHintProvider.resolveProvider');
122124
}
123125

124126
/**
@@ -129,4 +131,5 @@ export namespace InlayHintRefreshRequest {
129131
export const messageDirection: MessageDirection = MessageDirection.serverToClient;
130132
export const type = new ProtocolRequestType0<void, void, void, void>(method);
131133
export type HandlerSignature = RequestHandler0<void, void>;
134+
export const capabilities = CM.create('workspace.inlayHint.refreshSupport', undefined);
132135
}

protocol/src/common/protocol.inlineCompletion.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { InlineCompletionItem, InlineCompletionContext, InlineCompletionList } f
77
import { RequestHandler } from 'vscode-jsonrpc';
88

99
import { MessageDirection, ProtocolRequestType } from './messages';
10-
import type { TextDocumentRegistrationOptions, WorkDoneProgressOptions, StaticRegistrationOptions, WorkDoneProgressParams, TextDocumentPositionParams } from './protocol';
10+
import { type TextDocumentRegistrationOptions, type WorkDoneProgressOptions, type StaticRegistrationOptions, type WorkDoneProgressParams, type TextDocumentPositionParams, CM } from './protocol';
1111

1212
// ---- capabilities
1313

@@ -67,4 +67,5 @@ export namespace InlineCompletionRequest {
6767
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
6868
export const type = new ProtocolRequestType<InlineCompletionParams, InlineCompletionList | InlineCompletionItem[] | null, InlineCompletionItem[], void, InlineCompletionRegistrationOptions>(method);
6969
export type HandlerSignature = RequestHandler<InlineCompletionParams, InlineCompletionList | InlineCompletionItem[] | null, void>;
70+
export const capabilities = CM.create('textDocument.inlineCompletion', 'inlineCompletionProvider');
7071
}

protocol/src/common/protocol.inlineValue.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { TextDocumentIdentifier, Range, InlineValue, InlineValueContext } from '
77
import { RequestHandler, RequestHandler0 } from 'vscode-jsonrpc';
88

99
import { MessageDirection, ProtocolRequestType, ProtocolRequestType0 } from './messages';
10-
import type { TextDocumentRegistrationOptions, WorkDoneProgressOptions, StaticRegistrationOptions, WorkDoneProgressParams } from './protocol';
10+
import { type TextDocumentRegistrationOptions, type WorkDoneProgressOptions, type StaticRegistrationOptions, type WorkDoneProgressParams, CM } from './protocol';
1111

1212
// ---- capabilities
1313

@@ -90,6 +90,7 @@ export namespace InlineValueRequest {
9090
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
9191
export const type = new ProtocolRequestType<InlineValueParams, InlineValue[] | null, InlineValue[], void, InlineValueRegistrationOptions>(method);
9292
export type HandlerSignature = RequestHandler<InlineValueParams, InlineValue[] | null, void>;
93+
export const capabilities = CM.create('textDocument.inlineValue', 'inlineValueProvider');
9394
}
9495

9596
/**
@@ -100,4 +101,5 @@ export namespace InlineValueRefreshRequest {
100101
export const messageDirection: MessageDirection = MessageDirection.serverToClient;
101102
export const type = new ProtocolRequestType0<void, void, void, void>(method);
102103
export type HandlerSignature = RequestHandler0<void, void>;
104+
export const capabilities = CM.create('workspace.inlineValue.refreshSupport', undefined);
103105
}

protocol/src/common/protocol.linkedEditingRange.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import { RequestHandler } from 'vscode-jsonrpc';
77
import { Range } from 'vscode-languageserver-types';
88

99
import { MessageDirection, ProtocolRequestType } from './messages';
10-
import type {
11-
StaticRegistrationOptions, TextDocumentPositionParams, TextDocumentRegistrationOptions, WorkDoneProgressOptions,
12-
WorkDoneProgressParams
10+
import {
11+
type StaticRegistrationOptions, type TextDocumentPositionParams, type TextDocumentRegistrationOptions, type WorkDoneProgressOptions,
12+
type WorkDoneProgressParams,
13+
CM
1314
} from './protocol';
1415

1516
/**
@@ -65,4 +66,5 @@ export namespace LinkedEditingRangeRequest {
6566
export const messageDirection: MessageDirection = MessageDirection.clientToServer;
6667
export const type = new ProtocolRequestType<LinkedEditingRangeParams, LinkedEditingRanges | null, void, void, LinkedEditingRangeRegistrationOptions>(method);
6768
export type HandlerSignature = RequestHandler<LinkedEditingRangeParams, LinkedEditingRanges | null, void>;
69+
export const capabilities = CM.create('textDocument.linkedEditingRange', 'linkedEditingRangeProvider');
6870
}

0 commit comments

Comments
 (0)