1
>
/*---------------------------------------------------------------------------------------------
search.ts
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 { onUnexpectedExternalError } from '../../../../base/common/errors.js';
7
>
import { IDisposable } from '../../../../base/common/lifecycle.js';
8
>
import { ISearchConfiguration, ISearchConfigurationProperties } from '../../../services/search/common/search.js';
9
>
import { SymbolKind, Location, ProviderResult, SymbolTag } from '../../../../editor/common/languages.js';
10
>
import { IWorkspaceContextService } from '../../../../platform/workspace/common/workspace.js';
11
>
import { URI } from '../../../../base/common/uri.js';
12
>
import { EditorResourceAccessor, SideBySideEditor } from '../../../common/editor.js';
13
>
import { IEditorService } from '../../../services/editor/common/editorService.js';
14
>
import { CancellationToken } from '../../../../base/common/cancellation.js';
15
>
import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';
16
>
import { IFileService } from '../../../../platform/files/common/files.js';
17
>
import { IRange, Range } from '../../../../editor/common/core/range.js';
18
>
import { isNumber } from '../../../../base/common/types.js';
19
>
import { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';
20
>
import { compare } from '../../../../base/common/strings.js';
21
>
import { groupBy } from '../../../../base/common/arrays.js';
22
>
import * as nls from '../../../../nls.js';
23
>
import type { IConfigurationNode } from '../../../../platform/configuration/common/configurationRegistry.js';
24
>
25
>
export interface IWorkspaceSymbol {
26
>
name: string;
27
>
containerName?: string;
28
>
kind: SymbolKind;
29
>
tags?: SymbolTag[];
30
>
location: Location;
31
>
}
32
>
33
>
export interface IWorkspaceSymbolProvider {
34
>
provideWorkspaceSymbols(search: string, token: CancellationToken): ProviderResult<IWorkspaceSymbol[]>;
35
>
resolveWorkspaceSymbol?(item: IWorkspaceSymbol, token: CancellationToken): ProviderResult<IWorkspaceSymbol>;
36
>
}
37
>
38
>
export namespace WorkspaceSymbolProviderRegistry {
39
>
40
>
const _supports: IWorkspaceSymbolProvider[] = [];
41
>
42
>
export function register(provider: IWorkspaceSymbolProvider): IDisposable {
43
let support: IWorkspaceSymbolProvider | undefined = provider;
44
if (support) {