Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/chat/common/ignoredFiles.ts
3296 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 { CancellationToken } from '../../../../base/common/cancellation.js';
7
import { IDisposable, toDisposable } from '../../../../base/common/lifecycle.js';
8
import { URI } from '../../../../base/common/uri.js';
9
import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';
10
11
export interface ILanguageModelIgnoredFileProvider {
12
isFileIgnored(uri: URI, token: CancellationToken): Promise<boolean>;
13
}
14
15
export const ILanguageModelIgnoredFilesService = createDecorator<ILanguageModelIgnoredFilesService>('languageModelIgnoredFilesService');
16
export interface ILanguageModelIgnoredFilesService {
17
_serviceBrand: undefined;
18
19
fileIsIgnored(uri: URI, token: CancellationToken): Promise<boolean>;
20
registerIgnoredFileProvider(provider: ILanguageModelIgnoredFileProvider): IDisposable;
21
}
22
23
export class LanguageModelIgnoredFilesService implements ILanguageModelIgnoredFilesService {
24
_serviceBrand: undefined;
25
26
private readonly _providers = new Set<ILanguageModelIgnoredFileProvider>();
27
28
async fileIsIgnored(uri: URI, token: CancellationToken): Promise<boolean> {
29
// Just use the first provider
30
const provider = this._providers.values().next().value;
31
return provider ?
32
provider.isFileIgnored(uri, token) :
33
false;
34
}
35
36
registerIgnoredFileProvider(provider: ILanguageModelIgnoredFileProvider): IDisposable {
37
this._providers.add(provider);
38
return toDisposable(() => {
39
this._providers.delete(provider);
40
});
41
}
42
}
43
44