getOptions()/updateOptions() only in workbench
This commit is contained in:
parent
5b2d612db3
commit
686646039b
|
@ -28,8 +28,7 @@ import {IMessageService} from 'vs/platform/message/common/message';
|
||||||
import {IProgressService} from 'vs/platform/progress/common/progress';
|
import {IProgressService} from 'vs/platform/progress/common/progress';
|
||||||
import {IStorageService, NullStorageService} from 'vs/platform/storage/common/storage';
|
import {IStorageService, NullStorageService} from 'vs/platform/storage/common/storage';
|
||||||
import {ITelemetryService, NullTelemetryService} from 'vs/platform/telemetry/common/telemetry';
|
import {ITelemetryService, NullTelemetryService} from 'vs/platform/telemetry/common/telemetry';
|
||||||
import {BaseWorkspaceContextService} from 'vs/platform/workspace/common/workspaceContextService';
|
import {IWorkspaceContextService, BaseWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
|
||||||
import {IWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
|
|
||||||
import {ICodeEditorService} from 'vs/editor/common/services/codeEditorService';
|
import {ICodeEditorService} from 'vs/editor/common/services/codeEditorService';
|
||||||
import {IEditorWorkerService} from 'vs/editor/common/services/editorWorkerService';
|
import {IEditorWorkerService} from 'vs/editor/common/services/editorWorkerService';
|
||||||
import {EditorWorkerServiceImpl} from 'vs/editor/common/services/editorWorkerServiceImpl';
|
import {EditorWorkerServiceImpl} from 'vs/editor/common/services/editorWorkerServiceImpl';
|
||||||
|
@ -244,7 +243,7 @@ export function getOrCreateStaticServices(services?: IEditorOverrideServices): I
|
||||||
name: null,
|
name: null,
|
||||||
uid: null,
|
uid: null,
|
||||||
mtime: null
|
mtime: null
|
||||||
}, {});
|
});
|
||||||
serviceCollection.set(IWorkspaceContextService, contextService);
|
serviceCollection.set(IWorkspaceContextService, contextService);
|
||||||
|
|
||||||
let telemetryService = services.telemetryService || NullTelemetryService;
|
let telemetryService = services.telemetryService || NullTelemetryService;
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
import URI from 'vs/base/common/uri';
|
import URI from 'vs/base/common/uri';
|
||||||
import {createDecorator} from 'vs/platform/instantiation/common/instantiation';
|
import {createDecorator} from 'vs/platform/instantiation/common/instantiation';
|
||||||
|
import paths = require('vs/base/common/paths');
|
||||||
|
|
||||||
export const IWorkspaceContextService = createDecorator<IWorkspaceContextService>('contextService');
|
export const IWorkspaceContextService = createDecorator<IWorkspaceContextService>('contextService');
|
||||||
|
|
||||||
|
@ -18,11 +19,6 @@ export interface IWorkspaceContextService {
|
||||||
*/
|
*/
|
||||||
getWorkspace(): IWorkspace;
|
getWorkspace(): IWorkspace;
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides access to the options object the platform is running with.
|
|
||||||
*/
|
|
||||||
getOptions(): any;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns iff the provided resource is inside the workspace or not.
|
* Returns iff the provided resource is inside the workspace or not.
|
||||||
*/
|
*/
|
||||||
|
@ -70,4 +66,47 @@ export interface IWorkspace {
|
||||||
* is just derived from the workspace name.
|
* is just derived from the workspace name.
|
||||||
*/
|
*/
|
||||||
uid?: number;
|
uid?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple IWorkspaceContextService implementation to allow sharing of this service implementation
|
||||||
|
* between different layers of the platform.
|
||||||
|
*/
|
||||||
|
export class BaseWorkspaceContextService implements IWorkspaceContextService {
|
||||||
|
|
||||||
|
public _serviceBrand: any;
|
||||||
|
|
||||||
|
private workspace: IWorkspace;
|
||||||
|
|
||||||
|
constructor(workspace: IWorkspace) {
|
||||||
|
this.workspace = workspace;
|
||||||
|
}
|
||||||
|
|
||||||
|
public getWorkspace(): IWorkspace {
|
||||||
|
return this.workspace;
|
||||||
|
}
|
||||||
|
|
||||||
|
public isInsideWorkspace(resource: URI): boolean {
|
||||||
|
if (resource && this.workspace) {
|
||||||
|
return paths.isEqualOrParent(resource.fsPath, this.workspace.resource.fsPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public toWorkspaceRelativePath(resource: URI): string {
|
||||||
|
if (this.isInsideWorkspace(resource)) {
|
||||||
|
return paths.normalize(paths.relative(this.workspace.resource.fsPath, resource.fsPath));
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public toResource(workspaceRelativePath: string): URI {
|
||||||
|
if (typeof workspaceRelativePath === 'string' && this.workspace) {
|
||||||
|
return URI.file(paths.join(this.workspace.resource.fsPath, workspaceRelativePath));
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,59 +0,0 @@
|
||||||
/*---------------------------------------------------------------------------------------------
|
|
||||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
||||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
||||||
*--------------------------------------------------------------------------------------------*/
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
import URI from 'vs/base/common/uri';
|
|
||||||
import paths = require('vs/base/common/paths');
|
|
||||||
import {IWorkspaceContextService, IWorkspace} from 'vs/platform/workspace/common/workspace';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Simple IWorkspaceContextService implementation to allow sharing of this service implementation
|
|
||||||
* between different layers of the platform.
|
|
||||||
*/
|
|
||||||
export class BaseWorkspaceContextService implements IWorkspaceContextService {
|
|
||||||
|
|
||||||
public _serviceBrand: any;
|
|
||||||
|
|
||||||
protected options: any;
|
|
||||||
|
|
||||||
private workspace: IWorkspace;
|
|
||||||
|
|
||||||
constructor(workspace: IWorkspace, options: any = {}) {
|
|
||||||
this.workspace = workspace;
|
|
||||||
this.options = options;
|
|
||||||
}
|
|
||||||
|
|
||||||
public getWorkspace(): IWorkspace {
|
|
||||||
return this.workspace;
|
|
||||||
}
|
|
||||||
|
|
||||||
public getOptions(): any {
|
|
||||||
return this.options;
|
|
||||||
}
|
|
||||||
|
|
||||||
public isInsideWorkspace(resource: URI): boolean {
|
|
||||||
if (resource && this.workspace) {
|
|
||||||
return paths.isEqualOrParent(resource.fsPath, this.workspace.resource.fsPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public toWorkspaceRelativePath(resource: URI): string {
|
|
||||||
if (this.isInsideWorkspace(resource)) {
|
|
||||||
return paths.normalize(paths.relative(this.workspace.resource.fsPath, resource.fsPath));
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public toResource(workspaceRelativePath: string): URI {
|
|
||||||
if (typeof workspaceRelativePath === 'string' && this.workspace) {
|
|
||||||
return URI.file(paths.join(this.workspace.resource.fsPath, workspaceRelativePath));
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -18,7 +18,7 @@ import {DiffEditorInput} from 'vs/workbench/common/editor/diffEditorInput';
|
||||||
import nls = require('vs/nls');
|
import nls = require('vs/nls');
|
||||||
import {IMessageService, Severity} from 'vs/platform/message/common/message';
|
import {IMessageService, Severity} from 'vs/platform/message/common/message';
|
||||||
import {IWindowConfiguration} from 'vs/workbench/electron-browser/window';
|
import {IWindowConfiguration} from 'vs/workbench/electron-browser/window';
|
||||||
import {IWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
|
import {IWorkspaceContextService} from 'vs/workbench/services/workspace/common/contextService';
|
||||||
import {IEnvironmentService} from 'vs/platform/environment/common/environment';
|
import {IEnvironmentService} from 'vs/platform/environment/common/environment';
|
||||||
import {IQuickOpenService, IPickOpenEntry} from 'vs/workbench/services/quickopen/common/quickOpenService';
|
import {IQuickOpenService, IPickOpenEntry} from 'vs/workbench/services/quickopen/common/quickOpenService';
|
||||||
import {KeyMod} from 'vs/base/common/keyCodes';
|
import {KeyMod} from 'vs/base/common/keyCodes';
|
||||||
|
|
|
@ -21,9 +21,8 @@ import {IMainProcessExtHostIPC} from 'vs/platform/extensions/common/ipcRemoteCom
|
||||||
import {ExtHostExtensionService} from 'vs/workbench/api/node/extHostExtensionService';
|
import {ExtHostExtensionService} from 'vs/workbench/api/node/extHostExtensionService';
|
||||||
import {ExtHostThreadService} from 'vs/workbench/services/thread/common/extHostThreadService';
|
import {ExtHostThreadService} from 'vs/workbench/services/thread/common/extHostThreadService';
|
||||||
import {RemoteTelemetryService} from 'vs/workbench/api/node/extHostTelemetry';
|
import {RemoteTelemetryService} from 'vs/workbench/api/node/extHostTelemetry';
|
||||||
import {BaseWorkspaceContextService} from 'vs/platform/workspace/common/workspaceContextService';
|
|
||||||
import {ExtensionScanner, MessagesCollector} from 'vs/workbench/node/extensionPoints';
|
import {ExtensionScanner, MessagesCollector} from 'vs/workbench/node/extensionPoints';
|
||||||
import {IWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
|
import {IWorkspaceContextService, BaseWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
|
||||||
import {Client} from 'vs/base/parts/ipc/node/ipc.net';
|
import {Client} from 'vs/base/parts/ipc/node/ipc.net';
|
||||||
import {IExtensionManagementChannel, ExtensionManagementChannelClient} from 'vs/platform/extensionManagement/common/extensionManagementIpc';
|
import {IExtensionManagementChannel, ExtensionManagementChannelClient} from 'vs/platform/extensionManagement/common/extensionManagementIpc';
|
||||||
|
|
||||||
|
@ -73,7 +72,7 @@ export class ExtensionHostMain {
|
||||||
|
|
||||||
this._environment = initData.environment;
|
this._environment = initData.environment;
|
||||||
|
|
||||||
this._contextService = new BaseWorkspaceContextService(initData.contextService.workspace, initData.contextService.options);
|
this._contextService = new BaseWorkspaceContextService(initData.contextService.workspace);
|
||||||
const workspaceStoragePath = this._getOrCreateWorkspaceStoragePath();
|
const workspaceStoragePath = this._getOrCreateWorkspaceStoragePath();
|
||||||
|
|
||||||
const threadService = new ExtHostThreadService(remoteCom);
|
const threadService = new ExtHostThreadService(remoteCom);
|
||||||
|
|
|
@ -28,6 +28,8 @@ export class ConfigurationService extends CommonConfigurationService {
|
||||||
|
|
||||||
public _serviceBrand: any;
|
public _serviceBrand: any;
|
||||||
|
|
||||||
|
protected contextService: IWorkspaceContextService;
|
||||||
|
|
||||||
private toDispose: IDisposable;
|
private toDispose: IDisposable;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
|
|
|
@ -21,7 +21,7 @@ import {IContextKeyService} from 'vs/platform/contextkey/common/contextkey';
|
||||||
import {IKeybindingRule, KeybindingsRegistry} from 'vs/platform/keybinding/common/keybindingsRegistry';
|
import {IKeybindingRule, KeybindingsRegistry} from 'vs/platform/keybinding/common/keybindingsRegistry';
|
||||||
import {Registry} from 'vs/platform/platform';
|
import {Registry} from 'vs/platform/platform';
|
||||||
import {ITelemetryService} from 'vs/platform/telemetry/common/telemetry';
|
import {ITelemetryService} from 'vs/platform/telemetry/common/telemetry';
|
||||||
import {IWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
|
import {IWorkspaceContextService} from 'vs/workbench/services/workspace/common/contextService';
|
||||||
import {EventType, OptionsChangeEvent} from 'vs/workbench/common/events';
|
import {EventType, OptionsChangeEvent} from 'vs/workbench/common/events';
|
||||||
import {getNativeLabelProvider, getNativeAriaLabelProvider} from 'vs/workbench/services/keybinding/electron-browser/nativeKeymap';
|
import {getNativeLabelProvider, getNativeAriaLabelProvider} from 'vs/workbench/services/keybinding/electron-browser/nativeKeymap';
|
||||||
import {IMessageService} from 'vs/platform/message/common/message';
|
import {IMessageService} from 'vs/platform/message/common/message';
|
||||||
|
|
|
@ -176,9 +176,8 @@ class ExtensionHostProcessManager {
|
||||||
extensionTestsPath: this.environmentService.extensionTestsPath
|
extensionTestsPath: this.environmentService.extensionTestsPath
|
||||||
},
|
},
|
||||||
contextService: {
|
contextService: {
|
||||||
workspace: this.contextService.getWorkspace(),
|
workspace: this.contextService.getWorkspace()
|
||||||
options: this.contextService.getOptions()
|
}
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
this.extensionHostProcessHandle.send(initPayload);
|
this.extensionHostProcessHandle.send(initPayload);
|
||||||
|
|
|
@ -8,8 +8,7 @@ import {IOptions} from 'vs/workbench/common/options';
|
||||||
import {EventType, OptionsChangeEvent} from 'vs/workbench/common/events';
|
import {EventType, OptionsChangeEvent} from 'vs/workbench/common/events';
|
||||||
import {IEventService} from 'vs/platform/event/common/event';
|
import {IEventService} from 'vs/platform/event/common/event';
|
||||||
import {createDecorator} from 'vs/platform/instantiation/common/instantiation';
|
import {createDecorator} from 'vs/platform/instantiation/common/instantiation';
|
||||||
import {IWorkspace, IWorkspaceContextService as IBaseWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
|
import {IWorkspace, IWorkspaceContextService as IBaseWorkspaceContextService, BaseWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
|
||||||
import {BaseWorkspaceContextService} from 'vs/platform/workspace/common/workspaceContextService';
|
|
||||||
|
|
||||||
export const IWorkspaceContextService = createDecorator<IWorkspaceContextService>('contextService');
|
export const IWorkspaceContextService = createDecorator<IWorkspaceContextService>('contextService');
|
||||||
|
|
||||||
|
@ -28,14 +27,19 @@ export interface IWorkspaceContextService extends IBaseWorkspaceContextService {
|
||||||
}
|
}
|
||||||
|
|
||||||
export class WorkspaceContextService extends BaseWorkspaceContextService implements IWorkspaceContextService {
|
export class WorkspaceContextService extends BaseWorkspaceContextService implements IWorkspaceContextService {
|
||||||
|
|
||||||
public _serviceBrand: any;
|
public _serviceBrand: any;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private eventService: IEventService,
|
private eventService: IEventService,
|
||||||
workspace: IWorkspace,
|
workspace: IWorkspace,
|
||||||
options: any = {}
|
private options: IOptions
|
||||||
) {
|
) {
|
||||||
super(workspace, options);
|
super(workspace);
|
||||||
|
}
|
||||||
|
|
||||||
|
public getOptions(): IOptions {
|
||||||
|
return this.options;
|
||||||
}
|
}
|
||||||
|
|
||||||
public updateOptions(key: string, value: any): void {
|
public updateOptions(key: string, value: any): void {
|
||||||
|
|
|
@ -10,8 +10,7 @@ import {Build, Builder} from 'vs/base/browser/builder';
|
||||||
import {Part} from 'vs/workbench/browser/part';
|
import {Part} from 'vs/workbench/browser/part';
|
||||||
import * as Types from 'vs/base/common/types';
|
import * as Types from 'vs/base/common/types';
|
||||||
import * as TestUtils from 'vs/test/utils/servicesTestUtils';
|
import * as TestUtils from 'vs/test/utils/servicesTestUtils';
|
||||||
import {BaseWorkspaceContextService} from 'vs/platform/workspace/common/workspaceContextService';
|
import {IWorkspaceContextService, BaseWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
|
||||||
import {IWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
|
|
||||||
import {IStorageService} from 'vs/platform/storage/common/storage';
|
import {IStorageService} from 'vs/platform/storage/common/storage';
|
||||||
import {Storage, InMemoryLocalStorage} from 'vs/workbench/common/storage';
|
import {Storage, InMemoryLocalStorage} from 'vs/workbench/common/storage';
|
||||||
|
|
||||||
|
@ -105,7 +104,7 @@ suite('Workbench Part', () => {
|
||||||
fixture = document.createElement('div');
|
fixture = document.createElement('div');
|
||||||
fixture.id = fixtureId;
|
fixture.id = fixtureId;
|
||||||
document.body.appendChild(fixture);
|
document.body.appendChild(fixture);
|
||||||
context = new BaseWorkspaceContextService(TestUtils.TestWorkspace, null);
|
context = new BaseWorkspaceContextService(TestUtils.TestWorkspace);
|
||||||
storage = new Storage(new InMemoryLocalStorage(), null, context);
|
storage = new Storage(new InMemoryLocalStorage(), null, context);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
import 'vs/workbench/parts/search/browser/search.contribution'; // load contributions
|
import 'vs/workbench/parts/search/browser/search.contribution'; // load contributions
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import {BaseWorkspaceContextService} from 'vs/platform/workspace/common/workspaceContextService';
|
import {BaseWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
|
||||||
import {createSyncDescriptor} from 'vs/platform/instantiation/common/descriptors';
|
import {createSyncDescriptor} from 'vs/platform/instantiation/common/descriptors';
|
||||||
import {ensureStaticPlatformServices, IEditorOverrideServices} from 'vs/editor/browser/standalone/standaloneServices';
|
import {ensureStaticPlatformServices, IEditorOverrideServices} from 'vs/editor/browser/standalone/standaloneServices';
|
||||||
import {IEditorGroupService} from 'vs/workbench/services/group/common/groupService';
|
import {IEditorGroupService} from 'vs/workbench/services/group/common/groupService';
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import * as assert from 'assert';
|
import * as assert from 'assert';
|
||||||
import {BaseWorkspaceContextService} from 'vs/platform/workspace/common/workspaceContextService';
|
import {BaseWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
|
||||||
import {StorageScope} from 'vs/platform/storage/common/storage';
|
import {StorageScope} from 'vs/platform/storage/common/storage';
|
||||||
import * as TestUtils from 'vs/test/utils/servicesTestUtils';
|
import * as TestUtils from 'vs/test/utils/servicesTestUtils';
|
||||||
import {Memento, Scope} from 'vs/workbench/common/memento';
|
import {Memento, Scope} from 'vs/workbench/common/memento';
|
||||||
|
@ -17,7 +17,7 @@ suite('Workbench Memento', () => {
|
||||||
let storage;
|
let storage;
|
||||||
|
|
||||||
setup(() => {
|
setup(() => {
|
||||||
context = new BaseWorkspaceContextService(TestUtils.TestWorkspace, null);
|
context = new BaseWorkspaceContextService(TestUtils.TestWorkspace);
|
||||||
storage = new Storage(new InMemoryLocalStorage(), null, context);
|
storage = new Storage(new InMemoryLocalStorage(), null, context);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue