diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 661237ffc2091439837a8f201156d9b65d53d07e..d7d4923b2df2cd8f871ea4fae34d25952605f6f5 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -353,6 +353,15 @@ declare module 'vscode' { * @return A [disposable](#Disposable) that unregisters this provider when being disposed. */ export function registerTaskProvider(type: string, provider: TaskProvider): Disposable; + + + export function getConfiguration2(section?: string, resource?: Uri): WorkspaceConfiguration2; + } + + export interface WorkspaceConfiguration2 extends WorkspaceConfiguration { + + inspect(section: string): { key: string; defaultValue?: T; globalValue?: T; workspaceValue?: T, folderValue?: T } | undefined; + } export namespace window { diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index 6fa4d07407c9ffebfc5bd729f5fc1e11c34edf3f..468ce5da5fd5bd47ba0ee887cf334da69393e4e0 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -429,6 +429,9 @@ export function createApiFactory( getConfiguration: (section?: string): vscode.WorkspaceConfiguration => { return extHostConfiguration.getConfiguration(section); }, + getConfiguration2: proposedApiFunction(extension, (section?: string, resource?: vscode.Uri): vscode.WorkspaceConfiguration => { + return extHostConfiguration.getConfiguration(section, resource); + }), registerTaskProvider: proposedApiFunction(extension, (type: string, provider: vscode.TaskProvider) => { return extHostTask.registerTaskProvider(extension, provider); }) diff --git a/src/vs/workbench/api/node/extHostConfiguration.ts b/src/vs/workbench/api/node/extHostConfiguration.ts index 2deff83f11afa5e81db50ee0adf4400da1ab02fb..884983954328c220cd8ced10450385a64fb13dd1 100644 --- a/src/vs/workbench/api/node/extHostConfiguration.ts +++ b/src/vs/workbench/api/node/extHostConfiguration.ts @@ -5,6 +5,7 @@ 'use strict'; import { mixin } from 'vs/base/common/objects'; +import URI from 'vs/base/common/uri'; import Event, { Emitter } from 'vs/base/common/event'; import { WorkspaceConfiguration } from 'vscode'; import { ExtHostWorkspace } from 'vs/workbench/api/node/extHostWorkspace'; @@ -46,11 +47,11 @@ export class ExtHostConfiguration extends ExtHostConfigurationShape { this._onDidChangeConfiguration.fire(undefined); } - getConfiguration(section?: string): WorkspaceConfiguration { + getConfiguration(section?: string, resource?: URI): WorkspaceConfiguration { const config = section - ? lookUp(this._configuration.getValue(), section) - : this._configuration.getValue(); + ? lookUp(this._configuration.getValue(null, { resource }), section) + : this._configuration.getValue(null, { resource }); const result: WorkspaceConfiguration = { has(key: string): boolean { @@ -72,7 +73,7 @@ export class ExtHostConfiguration extends ExtHostConfigurationShape { return this._proxy.$removeConfigurationOption(target, key); } }, - inspect: (key: string): { key: string; defaultValue?: T; globalValue?: T; workspaceValue?: T } => { + inspect: (key: string): { key: string; defaultValue?: T; globalValue?: T; workspaceValue?: T, folderValue?: T } => { key = section ? `${section}.${key}` : key; const config = this._configuration.values()[key]; if (config) { @@ -80,7 +81,8 @@ export class ExtHostConfiguration extends ExtHostConfigurationShape { key, defaultValue: config.default, globalValue: config.user, - workspaceValue: config.workspace + workspaceValue: config.workspace, + folderValue: config.folder }; } return undefined;