提交 724c4ce2 编写于 作者: I isidor

debug: adopt configurationResolverService

上级 67549490
...@@ -8,8 +8,8 @@ import objects = require('vs/base/common/objects'); ...@@ -8,8 +8,8 @@ import objects = require('vs/base/common/objects');
import paths = require('vs/base/common/paths'); import paths = require('vs/base/common/paths');
import platform = require('vs/base/common/platform'); import platform = require('vs/base/common/platform');
import debug = require('vs/workbench/parts/debug/common/debug'); import debug = require('vs/workbench/parts/debug/common/debug');
import {ISystemVariables} from 'vs/base/common/parsers';
import {IExtensionDescription} from 'vs/platform/extensions/common/extensions'; import {IExtensionDescription} from 'vs/platform/extensions/common/extensions';
import {IConfigurationResolverService} from 'vs/workbench/services/configurationResolver/common/configurationResolver';
export class Adapter { export class Adapter {
...@@ -25,7 +25,7 @@ export class Adapter { ...@@ -25,7 +25,7 @@ export class Adapter {
public enableBreakpointsFor: { languageIds: string[] }; public enableBreakpointsFor: { languageIds: string[] };
public aiKey: string; public aiKey: string;
constructor(rawAdapter: debug.IRawAdapter, systemVariables: ISystemVariables, public extensionDescription: IExtensionDescription) { constructor(rawAdapter: debug.IRawAdapter, public extensionDescription: IExtensionDescription, configurationResolverService: IConfigurationResolverService) {
if (rawAdapter.windows) { if (rawAdapter.windows) {
rawAdapter.win = rawAdapter.windows; rawAdapter.win = rawAdapter.windows;
} }
...@@ -58,11 +58,11 @@ export class Adapter { ...@@ -58,11 +58,11 @@ export class Adapter {
this.args = this.args || rawAdapter.args; this.args = this.args || rawAdapter.args;
if (this.program) { if (this.program) {
this.program = systemVariables ? systemVariables.resolve(this.program) : this.program; this.program = configurationResolverService.resolve(this.program);
this.program = paths.join(extensionDescription.extensionFolderPath, this.program); this.program = paths.join(extensionDescription.extensionFolderPath, this.program);
} }
if (this.runtime && this.runtime.indexOf('./') === 0) { if (this.runtime && this.runtime.indexOf('./') === 0) {
this.runtime = systemVariables ? systemVariables.resolve(this.runtime) : this.runtime; this.runtime = configurationResolverService.resolve(this.runtime);
this.runtime = paths.join(extensionDescription.extensionFolderPath, this.runtime); this.runtime = paths.join(extensionDescription.extensionFolderPath, this.runtime);
} }
......
...@@ -29,9 +29,8 @@ import {Adapter} from 'vs/workbench/parts/debug/node/debugAdapter'; ...@@ -29,9 +29,8 @@ import {Adapter} from 'vs/workbench/parts/debug/node/debugAdapter';
import {IWorkspaceContextService} from 'vs/platform/workspace/common/workspace'; import {IWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
import {IWorkbenchEditorService} from 'vs/workbench/services/editor/common/editorService'; import {IWorkbenchEditorService} from 'vs/workbench/services/editor/common/editorService';
import {IQuickOpenService} from 'vs/workbench/services/quickopen/common/quickOpenService'; import {IQuickOpenService} from 'vs/workbench/services/quickopen/common/quickOpenService';
import {ConfigVariables} from 'vs/workbench/parts/lib/node/configVariables';
import {ISystemVariables} from 'vs/base/common/parsers';
import {IEnvironmentService} from 'vs/platform/environment/common/environment'; import {IEnvironmentService} from 'vs/platform/environment/common/environment';
import {IConfigurationResolverService} from 'vs/workbench/services/configurationResolver/common/configurationResolver';
// debuggers extension point // debuggers extension point
export const debuggersExtPoint = extensionsRegistry.ExtensionsRegistry.registerExtensionPoint<debug.IRawAdapter[]>('debuggers', { export const debuggersExtPoint = extensionsRegistry.ExtensionsRegistry.registerExtensionPoint<debug.IRawAdapter[]>('debuggers', {
...@@ -172,7 +171,6 @@ jsonRegistry.registerSchema(schemaId, schema); ...@@ -172,7 +171,6 @@ jsonRegistry.registerSchema(schemaId, schema);
export class ConfigurationManager implements debug.IConfigurationManager { export class ConfigurationManager implements debug.IConfigurationManager {
public configuration: debug.IConfig; public configuration: debug.IConfig;
private systemVariables: ISystemVariables;
private adapters: Adapter[]; private adapters: Adapter[];
private allModeIdsForBreakpoints: { [key: string]: boolean }; private allModeIdsForBreakpoints: { [key: string]: boolean };
private _onDidConfigurationChange: Emitter<debug.IConfig>; private _onDidConfigurationChange: Emitter<debug.IConfig>;
...@@ -186,9 +184,9 @@ export class ConfigurationManager implements debug.IConfigurationManager { ...@@ -186,9 +184,9 @@ export class ConfigurationManager implements debug.IConfigurationManager {
@IConfigurationService private configurationService: IConfigurationService, @IConfigurationService private configurationService: IConfigurationService,
@IEnvironmentService private environmentService: IEnvironmentService, @IEnvironmentService private environmentService: IEnvironmentService,
@IQuickOpenService private quickOpenService: IQuickOpenService, @IQuickOpenService private quickOpenService: IQuickOpenService,
@ICommandService private commandService: ICommandService @ICommandService private commandService: ICommandService,
@IConfigurationResolverService private configurationResolverService: IConfigurationResolverService
) { ) {
this.systemVariables = this.contextService.getWorkspace() ? new ConfigVariables(this.configurationService, this.editorService, this.contextService, this.environmentService) : null;
this._onDidConfigurationChange = new Emitter<debug.IConfig>(); this._onDidConfigurationChange = new Emitter<debug.IConfig>();
this.setConfiguration(configName); this.setConfiguration(configName);
this.adapters = []; this.adapters = [];
...@@ -201,7 +199,7 @@ export class ConfigurationManager implements debug.IConfigurationManager { ...@@ -201,7 +199,7 @@ export class ConfigurationManager implements debug.IConfigurationManager {
extensions.forEach(extension => { extensions.forEach(extension => {
extension.value.forEach(rawAdapter => { extension.value.forEach(rawAdapter => {
const adapter = new Adapter(rawAdapter, this.systemVariables, extension.description); const adapter = new Adapter(rawAdapter, extension.description, this.configurationResolverService);
const duplicate = this.adapters.filter(a => a.type === adapter.type)[0]; const duplicate = this.adapters.filter(a => a.type === adapter.type)[0];
if (!rawAdapter.type || (typeof rawAdapter.type !== 'string')) { if (!rawAdapter.type || (typeof rawAdapter.type !== 'string')) {
extension.collector.error(nls.localize('debugNoType', "Debug adapter 'type' can not be omitted and must be of type 'string'.")); extension.collector.error(nls.localize('debugNoType', "Debug adapter 'type' can not be omitted and must be of type 'string'."));
...@@ -358,12 +356,10 @@ export class ConfigurationManager implements debug.IConfigurationManager { ...@@ -358,12 +356,10 @@ export class ConfigurationManager implements debug.IConfigurationManager {
} }
// massage configuration attributes - append workspace path to relatvie paths, substitute variables in paths. // massage configuration attributes - append workspace path to relatvie paths, substitute variables in paths.
if (this.systemVariables) {
Object.keys(this.configuration).forEach(key => { Object.keys(this.configuration).forEach(key => {
this.configuration[key] = this.systemVariables.resolveAny(this.configuration[key]); this.configuration[key] = this.configurationResolverService.resolveAny(this.configuration[key]);
}); });
} }
}
}).then(() => this._onDidConfigurationChange.fire(this.configuration)); }).then(() => this._onDidConfigurationChange.fire(this.configuration));
} }
......
...@@ -49,7 +49,7 @@ suite('Debug - Adapter', () => { ...@@ -49,7 +49,7 @@ suite('Debug - Adapter', () => {
}; };
setup(() => { setup(() => {
adapter = new Adapter(rawAdapter, null, { extensionFolderPath, id: 'adapter', name: 'myAdapter', version: '1.0.0', publisher: 'vscode', isBuiltin: false, engines: null }); adapter = new Adapter(rawAdapter, { extensionFolderPath, id: 'adapter', name: 'myAdapter', version: '1.0.0', publisher: 'vscode', isBuiltin: false, engines: null }, null);
}); });
teardown(() => { teardown(() => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册