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

debug: adopt configurationResolverService

上级 67549490
......@@ -8,8 +8,8 @@ import objects = require('vs/base/common/objects');
import paths = require('vs/base/common/paths');
import platform = require('vs/base/common/platform');
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 {IConfigurationResolverService} from 'vs/workbench/services/configurationResolver/common/configurationResolver';
export class Adapter {
......@@ -25,7 +25,7 @@ export class Adapter {
public enableBreakpointsFor: { languageIds: 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) {
rawAdapter.win = rawAdapter.windows;
}
......@@ -58,11 +58,11 @@ export class Adapter {
this.args = this.args || rawAdapter.args;
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);
}
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);
}
......
......@@ -29,9 +29,8 @@ import {Adapter} from 'vs/workbench/parts/debug/node/debugAdapter';
import {IWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
import {IWorkbenchEditorService} from 'vs/workbench/services/editor/common/editorService';
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 {IConfigurationResolverService} from 'vs/workbench/services/configurationResolver/common/configurationResolver';
// debuggers extension point
export const debuggersExtPoint = extensionsRegistry.ExtensionsRegistry.registerExtensionPoint<debug.IRawAdapter[]>('debuggers', {
......@@ -172,7 +171,6 @@ jsonRegistry.registerSchema(schemaId, schema);
export class ConfigurationManager implements debug.IConfigurationManager {
public configuration: debug.IConfig;
private systemVariables: ISystemVariables;
private adapters: Adapter[];
private allModeIdsForBreakpoints: { [key: string]: boolean };
private _onDidConfigurationChange: Emitter<debug.IConfig>;
......@@ -186,9 +184,9 @@ export class ConfigurationManager implements debug.IConfigurationManager {
@IConfigurationService private configurationService: IConfigurationService,
@IEnvironmentService private environmentService: IEnvironmentService,
@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.setConfiguration(configName);
this.adapters = [];
......@@ -201,7 +199,7 @@ export class ConfigurationManager implements debug.IConfigurationManager {
extensions.forEach(extension => {
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];
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'."));
......@@ -358,11 +356,9 @@ export class ConfigurationManager implements debug.IConfigurationManager {
}
// massage configuration attributes - append workspace path to relatvie paths, substitute variables in paths.
if (this.systemVariables) {
Object.keys(this.configuration).forEach(key => {
this.configuration[key] = this.systemVariables.resolveAny(this.configuration[key]);
});
}
Object.keys(this.configuration).forEach(key => {
this.configuration[key] = this.configurationResolverService.resolveAny(this.configuration[key]);
});
}
}).then(() => this._onDidConfigurationChange.fire(this.configuration));
}
......
......@@ -49,7 +49,7 @@ suite('Debug - Adapter', () => {
};
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(() => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册