Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/platform/languages/common/languageFeaturesService.ts
13401 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import type * as vscode from 'vscode';
7
import { createServiceIdentifier } from '../../../util/common/services';
8
9
10
export const ILanguageFeaturesService = createServiceIdentifier<ILanguageFeaturesService>('ILanguageFeaturesService');
11
12
export interface ILanguageFeaturesService {
13
_serviceBrand: undefined;
14
getDefinitions(uri: vscode.Uri, position: vscode.Position): Promise<(vscode.LocationLink | vscode.Location)[]>;
15
getImplementations(uri: vscode.Uri, position: vscode.Position): Promise<(vscode.LocationLink | vscode.Location)[]>;
16
getReferences(uri: vscode.Uri, position: vscode.Position): Promise<vscode.Location[]>;
17
getWorkspaceSymbols(query: string): Promise<vscode.SymbolInformation[]>;
18
getDocumentSymbols(uri: vscode.Uri): Promise<vscode.DocumentSymbol[]>;
19
getDiagnostics(uri: vscode.Uri): vscode.Diagnostic[];
20
}
21
22
export class NoopLanguageFeaturesService implements ILanguageFeaturesService {
23
_serviceBrand: undefined;
24
getDocumentSymbols(uri: vscode.Uri): Promise<vscode.DocumentSymbol[]> {
25
return Promise.resolve([]);
26
}
27
getDefinitions(uri: vscode.Uri, position: vscode.Position): Promise<(vscode.LocationLink | vscode.Location)[]> {
28
return Promise.resolve([]);
29
}
30
getImplementations(uri: vscode.Uri, position: vscode.Position): Promise<(vscode.LocationLink | vscode.Location)[]> {
31
return Promise.resolve([]);
32
}
33
getReferences(uri: vscode.Uri, position: vscode.Position): Promise<vscode.Location[]> {
34
return Promise.resolve([]);
35
}
36
getWorkspaceSymbols(query: string): Promise<vscode.SymbolInformation[]> {
37
return Promise.resolve([]);
38
}
39
getDiagnostics(uri: vscode.Uri): vscode.Diagnostic[] {
40
return [];
41
}
42
}
43
44
export function isLocationLink(thing: unknown): thing is vscode.LocationLink {
45
return typeof thing === 'object' && thing !== null && 'targetUri' in thing;
46
}
47
48