Route open providers by request mode

This commit is contained in:
2026-06-27 13:49:09 +08:00
parent f87f8235bd
commit fb68c54409
8 changed files with 71 additions and 6 deletions
+2
View File
@@ -339,8 +339,10 @@
function providerSupports(provider, request) {
var ext = requestExtension(request);
var contextName = requestContextName(request);
var mode = String((request && request.mode) || 'view').toLowerCase();
return (provider.supports || []).some(function (support) {
if (support.kind && support.kind !== request.kind) return false;
if (support.modes && support.modes.length && support.modes.map(function (m) { return String(m).toLowerCase(); }).indexOf(mode) === -1) return false;
if (support.extensions && support.extensions.length && support.extensions.map(function (e) { return String(e).toLowerCase(); }).indexOf(ext) === -1) return false;
if (support.contexts && support.contexts.length && support.contexts.indexOf(contextName) === -1) return false;
return true;
+4 -1
View File
@@ -25,6 +25,7 @@ export namespace api {
mime?: string[];
extensions?: string[];
contexts?: string[];
modes?: string[];
static createFrom(source: any = {}) {
return new FlatOpenProviderSupport(source);
@@ -36,6 +37,7 @@ export namespace api {
this.mime = source["mime"];
this.extensions = source["extensions"];
this.contexts = source["contexts"];
this.modes = source["modes"];
}
}
export class FlatOpenProvider {
@@ -534,6 +536,7 @@ export namespace plugin {
mime?: string[];
extensions?: string[];
contexts?: string[];
modes?: string[];
static createFrom(source: any = {}) {
return new OpenProviderSupport(source);
@@ -545,6 +548,7 @@ export namespace plugin {
this.mime = source["mime"];
this.extensions = source["extensions"];
this.contexts = source["contexts"];
this.modes = source["modes"];
}
}
export class ContributionOpenProvider {
@@ -1159,4 +1163,3 @@ export namespace workspace {
}
}