|
1 | 1 | import * as assert from 'assert'
|
2 | 2 | import path from 'path'
|
3 |
| -import { CallHierarchyIncomingCall, CallHierarchyItem, CallHierarchyOutgoingCall, CallHierarchyPrepareRequest, CancellationToken, CancellationTokenSource, CodeAction, CodeActionRequest, CodeLensRequest, Color, ColorInformation, ColorPresentation, CompletionItem, CompletionRequest, CompletionTriggerKind, ConfigurationRequest, DeclarationRequest, DefinitionRequest, DidChangeConfigurationNotification, DidChangeTextDocumentNotification, DidChangeWatchedFilesNotification, DidCloseTextDocumentNotification, DidCreateFilesNotification, DidDeleteFilesNotification, DidOpenTextDocumentNotification, DidRenameFilesNotification, DidSaveTextDocumentNotification, Disposable, DocumentColorRequest, DocumentDiagnosticReport, DocumentDiagnosticReportKind, DocumentDiagnosticRequest, DocumentFormattingRequest, DocumentHighlight, DocumentHighlightKind, DocumentHighlightRequest, DocumentLink, DocumentLinkRequest, DocumentOnTypeFormattingRequest, DocumentRangeFormattingRequest, DocumentSelector, DocumentSymbolRequest, FoldingRange, FoldingRangeRequest, FullDocumentDiagnosticReport, Hover, HoverRequest, ImplementationRequest, InlayHintKind, InlayHintLabelPart, InlayHintRequest, InlineValueEvaluatableExpression, InlineValueRequest, InlineValueText, InlineValueVariableLookup, LinkedEditingRangeRequest, Location, NotificationType0, ParameterInformation, Position, ProgressToken, ProtocolRequestType, Range, ReferencesRequest, RenameRequest, SelectionRange, SelectionRangeRequest, SemanticTokensRegistrationType, SignatureHelpRequest, SignatureHelpTriggerKind, SignatureInformation, TextDocumentEdit, TextDocumentSyncKind, TextEdit, TypeDefinitionRequest, TypeHierarchyPrepareRequest, WillCreateFilesRequest, WillDeleteFilesRequest, WillRenameFilesRequest, WillSaveTextDocumentNotification, WillSaveTextDocumentWaitUntilRequest, WorkDoneProgressBegin, WorkDoneProgressCreateRequest, WorkDoneProgressEnd, WorkDoneProgressReport, WorkspaceEdit, WorkspaceSymbolRequest } from 'vscode-languageserver-protocol' |
| 3 | +import { CallHierarchyIncomingCall, CallHierarchyItem, CallHierarchyOutgoingCall, CallHierarchyPrepareRequest, CancellationToken, CancellationTokenSource, CodeAction, CodeActionRequest, CodeLensRequest, Color, ColorInformation, ColorPresentation, CompletionItem, CompletionRequest, CompletionTriggerKind, ConfigurationRequest, DeclarationRequest, DefinitionRequest, DidChangeConfigurationNotification, DidChangeTextDocumentNotification, DidChangeWatchedFilesNotification, DidCloseTextDocumentNotification, DidCreateFilesNotification, DidDeleteFilesNotification, DidOpenTextDocumentNotification, DidRenameFilesNotification, DidSaveTextDocumentNotification, Disposable, DocumentColorRequest, DocumentDiagnosticReport, DocumentDiagnosticReportKind, DocumentDiagnosticRequest, DocumentFormattingRequest, DocumentHighlight, DocumentHighlightKind, DocumentHighlightRequest, DocumentLink, DocumentLinkRequest, DocumentOnTypeFormattingRequest, DocumentRangeFormattingRequest, DocumentSelector, DocumentSymbolRequest, FoldingRange, FoldingRangeRequest, FullDocumentDiagnosticReport, Hover, HoverRequest, ImplementationRequest, InlayHintKind, InlayHintLabelPart, InlayHintRequest, InlineCompletionItem, InlineCompletionRequest, InlineValueEvaluatableExpression, InlineValueRequest, InlineValueText, InlineValueVariableLookup, LinkedEditingRangeRequest, Location, NotificationType0, ParameterInformation, Position, ProgressToken, ProtocolRequestType, Range, ReferencesRequest, RenameRequest, SelectionRange, SelectionRangeRequest, SemanticTokensRegistrationType, SignatureHelpRequest, SignatureHelpTriggerKind, SignatureInformation, TextDocumentEdit, TextDocumentSyncKind, TextEdit, TypeDefinitionRequest, TypeHierarchyPrepareRequest, WillCreateFilesRequest, WillDeleteFilesRequest, WillRenameFilesRequest, WillSaveTextDocumentNotification, WillSaveTextDocumentWaitUntilRequest, WorkDoneProgressBegin, WorkDoneProgressCreateRequest, WorkDoneProgressEnd, WorkDoneProgressReport, WorkspaceEdit, WorkspaceSymbolRequest } from 'vscode-languageserver-protocol' |
4 | 4 | import { TextDocument } from 'vscode-languageserver-textdocument'
|
5 | 5 | import { URI } from 'vscode-uri'
|
6 | 6 | import commands from '../../commands'
|
@@ -154,6 +154,7 @@ describe('Client integration', () => {
|
154 | 154 | documentSelector: [{ language: '*' }]
|
155 | 155 | },
|
156 | 156 | selectionRangeProvider: true,
|
| 157 | + inlineCompletionProvider: true, |
157 | 158 | inlineValueProvider: {},
|
158 | 159 | inlayHintProvider: {
|
159 | 160 | resolveProvider: true
|
@@ -270,6 +271,7 @@ describe('Client integration', () => {
|
270 | 271 | testFeature(SemanticTokensRegistrationType.method, 'document')
|
271 | 272 | testFeature(LinkedEditingRangeRequest.method, 'document')
|
272 | 273 | testFeature(TypeHierarchyPrepareRequest.method, 'document')
|
| 274 | + testFeature(InlineCompletionRequest.method, 'document') |
273 | 275 | testFeature(InlineValueRequest.method, 'document')
|
274 | 276 | testFeature(InlayHintRequest.method, 'document')
|
275 | 277 | testFeature(WorkspaceSymbolRequest.method, 'workspace')
|
@@ -1351,6 +1353,27 @@ describe('Client integration', () => {
|
1351 | 1353 | }, true)
|
1352 | 1354 | })
|
1353 | 1355 |
|
| 1356 | + test('Inline Completions', async () => { |
| 1357 | + const provider = client.getFeature(InlineCompletionRequest.method)?.getProvider(document) |
| 1358 | + isDefined(provider) |
| 1359 | + const results = (await provider.provideInlineCompletionItems(document, position, { triggerKind: 1, selectedCompletionInfo: { range, text: 'text' } }, tokenSource.token)) as InlineCompletionItem[] |
| 1360 | + |
| 1361 | + isArray(results, InlineCompletionItem, 1) |
| 1362 | + |
| 1363 | + rangeEqual(results[0].range!, 1, 2, 3, 4) |
| 1364 | + assert.strictEqual(results[0].filterText!, 'te') |
| 1365 | + assert.strictEqual(results[0].insertText, 'text inline') |
| 1366 | + |
| 1367 | + let middlewareCalled = false |
| 1368 | + middleware.provideInlineCompletionItems = (d, r, c, t, n) => { |
| 1369 | + middlewareCalled = true |
| 1370 | + return n(d, r, c, t) |
| 1371 | + } |
| 1372 | + await provider.provideInlineCompletionItems(document, position, { triggerKind: 1, selectedCompletionInfo: undefined }, tokenSource.token) |
| 1373 | + middleware.provideInlineCompletionItems = undefined |
| 1374 | + assert.strictEqual(middlewareCalled, true) |
| 1375 | + }) |
| 1376 | + |
1354 | 1377 | test('Workspace symbols', async () => {
|
1355 | 1378 | const providers = client.getFeature(WorkspaceSymbolRequest.method).getProviders()
|
1356 | 1379 | isDefined(providers)
|
|
0 commit comments