feat: select the folding provider to use (#157434)

* feat: support extension id in property `editor.foldingStrategy`

* work in progress

* use new setting 'editor.defaultFoldingRangeProvider' defined in workspace

* revert editorOptions changes

Co-authored-by: Martin Aeschlimann <martinae@microsoft.com>
This commit is contained in:
Baptiste Augrain
2022-10-23 15:45:34 +02:00
committed by GitHub
parent 66953830a2
commit 6e76e0e1b7
6 changed files with 116 additions and 7 deletions

View File

@@ -695,8 +695,9 @@ export class MainThreadLanguageFeatures extends Disposable implements MainThread
// --- folding
$registerFoldingRangeProvider(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void {
$registerFoldingRangeProvider(handle: number, selector: IDocumentFilterDto[], extensionId: ExtensionIdentifier, eventHandle: number | undefined): void {
const provider = <languages.FoldingRangeProvider>{
id: extensionId.value,
provideFoldingRanges: (model, context, token) => {
return this._proxy.$provideFoldingRanges(handle, model.uri, context, token);
}

View File

@@ -389,7 +389,7 @@ export interface MainThreadLanguageFeaturesShape extends IDisposable {
$emitInlayHintsEvent(eventHandle: number): void;
$registerDocumentLinkProvider(handle: number, selector: IDocumentFilterDto[], supportsResolve: boolean): void;
$registerDocumentColorProvider(handle: number, selector: IDocumentFilterDto[]): void;
$registerFoldingRangeProvider(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void;
$registerFoldingRangeProvider(handle: number, selector: IDocumentFilterDto[], extensionId: ExtensionIdentifier, eventHandle: number | undefined): void;
$emitFoldingRangeEvent(eventHandle: number, event?: any): void;
$registerSelectionRangeProvider(handle: number, selector: IDocumentFilterDto[]): void;
$registerCallHierarchyProvider(handle: number, selector: IDocumentFilterDto[]): void;

View File

@@ -2358,7 +2358,7 @@ export class ExtHostLanguageFeatures implements extHostProtocol.ExtHostLanguageF
const eventHandle = typeof provider.onDidChangeFoldingRanges === 'function' ? this._nextHandle() : undefined;
this._adapter.set(handle, new AdapterData(new FoldingProviderAdapter(this._documents, provider), extension));
this._proxy.$registerFoldingRangeProvider(handle, this._transformDocumentSelector(selector), eventHandle);
this._proxy.$registerFoldingRangeProvider(handle, this._transformDocumentSelector(selector), extension.identifier, eventHandle);
let result = this._createDisposable(handle);
if (eventHandle !== undefined) {