Merge VS Code 1.23.1 (#1520)

This commit is contained in:
Matt Irvine
2018-06-05 11:24:51 -07:00
committed by GitHub
parent e3baf5c443
commit 0c58f09e59
3651 changed files with 74249 additions and 48599 deletions

View File

@@ -96,21 +96,21 @@ Registry.add(Extensions.WorkbenchActions, new class implements IWorkbenchActionR
}
private _triggerAndDisposeAction(instantitationService: IInstantiationService, lifecycleService: ILifecycleService, descriptor: SyncActionDescriptor, args: any): Thenable<void> {
const actionInstance = instantitationService.createInstance(descriptor.syncDescriptor);
actionInstance.label = descriptor.label || actionInstance.label;
// don't run the action when not enabled
if (!actionInstance.enabled) {
actionInstance.dispose();
return void 0;
}
const from = args && args.from || 'keybinding';
// run action when workbench is created
return lifecycleService.when(LifecyclePhase.Running).then(() => {
const actionInstance = instantitationService.createInstance(descriptor.syncDescriptor);
try {
actionInstance.label = descriptor.label || actionInstance.label;
// don't run the action when not enabled
if (!actionInstance.enabled) {
actionInstance.dispose();
return void 0;
}
const from = args && args.from || 'keybinding';
return TPromise.as(actionInstance.run(undefined, { from })).then(() => {
actionInstance.dispose();
}, (err) => {
@@ -124,4 +124,3 @@ Registry.add(Extensions.WorkbenchActions, new class implements IWorkbenchActionR
});
}
});

View File

@@ -5,9 +5,9 @@
'use strict';
import { TPromise } from 'vs/base/common/winjs.base';
import Event, { Emitter, once } from 'vs/base/common/event';
import { Event, Emitter, once } from 'vs/base/common/event';
import * as objects from 'vs/base/common/objects';
import types = require('vs/base/common/types');
import * as types from 'vs/base/common/types';
import URI from 'vs/base/common/uri';
import { IDisposable, dispose, Disposable } from 'vs/base/common/lifecycle';
import { IEditor, IEditorViewState, ScrollType } from 'vs/editor/common/editorCommon';
@@ -17,6 +17,7 @@ import { RawContextKey } from 'vs/platform/contextkey/common/contextkey';
import { Registry } from 'vs/platform/registry/common/platform';
import { ITextModel } from 'vs/editor/common/model';
import { Schemas } from 'vs/base/common/network';
import { LRUCache } from 'vs/base/common/map';
export const TextCompareEditorVisible = new RawContextKey<boolean>('textCompareEditorVisible', false);
@@ -31,8 +32,6 @@ export enum ConfirmResult {
*/
export const TEXT_DIFF_EDITOR_ID = 'workbench.editors.textDiffEditor';
export const PREFERENCES_EDITOR_ID = 'workbench.editor.preferencesEditor';
/**
* Binary diff editor id.
*/
@@ -96,7 +95,7 @@ export interface IEditorInputFactory {
* Each editor input is mapped to an editor that is capable of opening it through the Platform facade.
*/
export abstract class EditorInput implements IEditorInput {
private _onDispose: Emitter<void>;
private readonly _onDispose: Emitter<void>;
protected _onDidChangeDirty: Emitter<void>;
protected _onDidChangeLabel: Emitter<void>;
@@ -486,7 +485,7 @@ export interface ITextEditorModel extends IEditorModel {
* are typically cached for some while because they are expensive to construct.
*/
export class EditorModel extends Disposable implements IEditorModel {
private _onDispose: Emitter<void>;
private readonly _onDispose: Emitter<void>;
constructor() {
super();
@@ -919,6 +918,114 @@ export function toResource(editor: IEditorInput, options?: IResourceOptions): UR
return null;
}
export interface IEditorViewStates<T> {
[Position.ONE]?: T;
[Position.TWO]?: T;
[Position.THREE]?: T;
}
export class EditorViewStateMemento<T> {
private cache: LRUCache<string, IEditorViewStates<T>>;
constructor(private memento: object, private key: string, private limit: number = 10) { }
public saveState(resource: URI, position: Position, state: T): void;
public saveState(editor: EditorInput, position: Position, state: T): void;
public saveState(resourceOrEditor: URI | EditorInput, position: Position, state: T): void {
if (typeof position !== 'number') {
return; // we need a position at least
}
const resource = this.doGetResource(resourceOrEditor);
if (resource) {
const cache = this.doLoad();
let viewStates = cache.get(resource.toString());
if (!viewStates) {
viewStates = Object.create(null) as IEditorViewStates<T>;
cache.set(resource.toString(), viewStates);
}
viewStates[position] = state;
// Automatically clear when editor input gets disposed if any
if (resourceOrEditor instanceof EditorInput) {
once(resourceOrEditor.onDispose)(() => {
this.clearState(resource);
});
}
}
}
public loadState(resource: URI, position: Position): T;
public loadState(editor: EditorInput, position: Position): T;
public loadState(resourceOrEditor: URI | EditorInput, position: Position): T {
if (typeof position !== 'number') {
return void 0; // we need a position at least
}
const resource = this.doGetResource(resourceOrEditor);
if (resource) {
const cache = this.doLoad();
const viewStates = cache.get(resource.toString());
if (viewStates) {
return viewStates[position];
}
}
return void 0;
}
public clearState(resource: URI): void;
public clearState(editor: EditorInput): void;
public clearState(resourceOrEditor: URI | EditorInput): void {
const resource = this.doGetResource(resourceOrEditor);
if (resource) {
const cache = this.doLoad();
cache.delete(resource.toString());
}
}
private doGetResource(resourceOrEditor: URI | EditorInput): URI {
if (resourceOrEditor instanceof EditorInput) {
return resourceOrEditor.getResource();
}
return resourceOrEditor;
}
private doLoad(): LRUCache<string, IEditorViewStates<T>> {
if (!this.cache) {
this.cache = new LRUCache<string, T>(this.limit);
// Restore from serialized map state
const rawViewState = this.memento[this.key];
if (Array.isArray(rawViewState)) {
this.cache.fromJSON(rawViewState);
}
// Migration from old object state
else if (rawViewState) {
const keys = Object.keys(rawViewState);
keys.forEach((key, index) => {
if (index < this.limit) {
this.cache.set(key, rawViewState[key]);
}
});
}
}
return this.cache;
}
public save(): void {
const cache = this.doLoad();
this.memento[this.key] = cache.toJSON();
}
}
class EditorInputFactoryRegistry implements IEditorInputFactoryRegistry {
private instantiationService: IInstantiationService;
private fileInputFactory: IFileInputFactory;

View File

@@ -5,7 +5,7 @@
'use strict';
import Event, { Emitter, once } from 'vs/base/common/event';
import { Event, Emitter, once } from 'vs/base/common/event';
import { Extensions, IEditorInputFactoryRegistry, EditorInput, toResource, IEditorStacksModel, IEditorGroup, IEditorIdentifier, IEditorCloseEvent, GroupIdentifier, IStacksModelChangeEvent, EditorOpenPositioning, SideBySideEditorInput, OPEN_POSITIONING_CONFIG } from 'vs/workbench/common/editor';
import URI from 'vs/base/common/uri';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
@@ -65,17 +65,17 @@ export class EditorGroup implements IEditorGroup {
private toDispose: IDisposable[];
private editorOpenPositioning: 'left' | 'right' | 'first' | 'last';
private _onEditorActivated: Emitter<EditorInput>;
private _onEditorOpened: Emitter<EditorInput>;
private _onEditorClosed: Emitter<EditorCloseEvent>;
private _onEditorDisposed: Emitter<EditorInput>;
private _onEditorDirty: Emitter<EditorInput>;
private _onEditorLabelChange: Emitter<EditorInput>;
private _onEditorMoved: Emitter<EditorInput>;
private _onEditorPinned: Emitter<EditorInput>;
private _onEditorUnpinned: Emitter<EditorInput>;
private _onEditorStateChanged: Emitter<EditorInput>;
private _onEditorsStructureChanged: Emitter<EditorInput>;
private readonly _onEditorActivated: Emitter<EditorInput>;
private readonly _onEditorOpened: Emitter<EditorInput>;
private readonly _onEditorClosed: Emitter<EditorCloseEvent>;
private readonly _onEditorDisposed: Emitter<EditorInput>;
private readonly _onEditorDirty: Emitter<EditorInput>;
private readonly _onEditorLabelChange: Emitter<EditorInput>;
private readonly _onEditorMoved: Emitter<EditorInput>;
private readonly _onEditorPinned: Emitter<EditorInput>;
private readonly _onEditorUnpinned: Emitter<EditorInput>;
private readonly _onEditorStateChanged: Emitter<EditorInput>;
private readonly _onEditorsStructureChanged: Emitter<EditorInput>;
constructor(
arg1: string | ISerializedEditorGroup,
@@ -732,22 +732,22 @@ export class EditorStacksModel implements IEditorStacksModel {
private _activeGroup: EditorGroup;
private groupToIdentifier: { [id: number]: EditorGroup };
private _onGroupOpened: Emitter<EditorGroup>;
private _onGroupClosed: Emitter<EditorGroup>;
private _onGroupMoved: Emitter<EditorGroup>;
private _onGroupActivated: Emitter<EditorGroup>;
private _onGroupDeactivated: Emitter<EditorGroup>;
private _onGroupRenamed: Emitter<EditorGroup>;
private readonly _onGroupOpened: Emitter<EditorGroup>;
private readonly _onGroupClosed: Emitter<EditorGroup>;
private readonly _onGroupMoved: Emitter<EditorGroup>;
private readonly _onGroupActivated: Emitter<EditorGroup>;
private readonly _onGroupDeactivated: Emitter<EditorGroup>;
private readonly _onGroupRenamed: Emitter<EditorGroup>;
private _onEditorDisposed: Emitter<EditorIdentifier>;
private _onEditorDirty: Emitter<EditorIdentifier>;
private _onEditorLabelChange: Emitter<EditorIdentifier>;
private _onEditorOpened: Emitter<EditorIdentifier>;
private readonly _onEditorDisposed: Emitter<EditorIdentifier>;
private readonly _onEditorDirty: Emitter<EditorIdentifier>;
private readonly _onEditorLabelChange: Emitter<EditorIdentifier>;
private readonly _onEditorOpened: Emitter<EditorIdentifier>;
private _onWillCloseEditor: Emitter<EditorCloseEvent>;
private _onEditorClosed: Emitter<EditorCloseEvent>;
private readonly _onWillCloseEditor: Emitter<EditorCloseEvent>;
private readonly _onEditorClosed: Emitter<EditorCloseEvent>;
private _onModelChanged: Emitter<IStacksModelChangeEvent>;
private readonly _onModelChanged: Emitter<IStacksModelChangeEvent>;
constructor(
private restoreFromStorage: boolean,

View File

@@ -8,16 +8,16 @@ import { TPromise } from 'vs/base/common/winjs.base';
import URI from 'vs/base/common/uri';
import { suggestFilename } from 'vs/base/common/mime';
import { memoize } from 'vs/base/common/decorators';
import labels = require('vs/base/common/labels');
import * as labels from 'vs/base/common/labels';
import { PLAINTEXT_MODE_ID } from 'vs/editor/common/modes/modesRegistry';
import paths = require('vs/base/common/paths');
import resources = require('vs/base/common/resources');
import * as paths from 'vs/base/common/paths';
import * as resources from 'vs/base/common/resources';
import { EditorInput, IEncodingSupport, EncodingMode, ConfirmResult } from 'vs/workbench/common/editor';
import { UntitledEditorModel } from 'vs/workbench/common/editor/untitledEditorModel';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import Event, { Emitter } from 'vs/base/common/event';
import { Event, Emitter } from 'vs/base/common/event';
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
import { telemetryURIDescriptor } from 'vs/platform/telemetry/common/telemetryUtils';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
@@ -35,8 +35,8 @@ export class UntitledEditorInput extends EditorInput implements IEncodingSupport
private cachedModel: UntitledEditorModel;
private modelResolve: TPromise<UntitledEditorModel>;
private _onDidModelChangeContent: Emitter<void>;
private _onDidModelChangeEncoding: Emitter<void>;
private readonly _onDidModelChangeContent: Emitter<void>;
private readonly _onDidModelChangeEncoding: Emitter<void>;
private toUnbind: IDisposable[];

View File

@@ -14,7 +14,7 @@ import { CONTENT_CHANGE_EVENT_BUFFER_DELAY } from 'vs/platform/files/common/file
import { IModeService } from 'vs/editor/common/services/modeService';
import { IModelService } from 'vs/editor/common/services/modelService';
import { IMode } from 'vs/editor/common/modes';
import Event, { Emitter } from 'vs/base/common/event';
import { Event, Emitter } from 'vs/base/common/event';
import { RunOnceScheduler } from 'vs/base/common/async';
import { IBackupFileService } from 'vs/workbench/services/backup/common/backup';
import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration';
@@ -28,9 +28,9 @@ export class UntitledEditorModel extends BaseTextEditorModel implements IEncodin
private toDispose: IDisposable[];
private dirty: boolean;
private _onDidChangeContent: Emitter<void>;
private _onDidChangeDirty: Emitter<void>;
private _onDidChangeEncoding: Emitter<void>;
private readonly _onDidChangeContent: Emitter<void>;
private readonly _onDidChangeDirty: Emitter<void>;
private readonly _onDidChangeEncoding: Emitter<void>;
private versionId: number;

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
import types = require('vs/base/common/types');
import * as types from 'vs/base/common/types';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
/**

View File

@@ -7,7 +7,7 @@
import { INotification, INotificationHandle, INotificationActions, INotificationProgress, NoOpNotification, Severity, NotificationMessage } from 'vs/platform/notification/common/notification';
import { toErrorMessage } from 'vs/base/common/errorMessage';
import Event, {Emitter, once } from 'vs/base/common/event';
import { Event, Emitter, once } from 'vs/base/common/event';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { isPromiseCanceledError, isErrorWithActions } from 'vs/base/common/errors';

View File

@@ -6,8 +6,7 @@
'use strict';
import URI from 'vs/base/common/uri';
import paths = require('vs/base/common/paths');
import { basename } from 'vs/base/common/paths';
import * as paths from 'vs/base/common/paths';
import { RawContextKey, IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
import { IModeService } from 'vs/editor/common/services/modeService';
import { IFileService } from 'vs/platform/files/common/files';
@@ -47,7 +46,7 @@ export class ResourceContextKey implements IContextKey<URI> {
set(value: URI) {
this._resourceKey.set(value);
this._schemeKey.set(value && value.scheme);
this._filenameKey.set(value && basename(value.fsPath));
this._filenameKey.set(value && paths.basename(value.fsPath));
this._langIdKey.set(value && this._modeService.getModeIdByFilenameOrFirstLine(value.fsPath));
this._extensionKey.set(value && paths.extname(value.fsPath));
this._hasResource.set(!!value);

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import nls = require('vs/nls');
import * as nls from 'vs/nls';
import { registerColor, editorBackground, contrastBorder, transparent, editorWidgetBackground, textLinkForeground, lighten, darken } from 'vs/platform/theme/common/colorRegistry';
import { IDisposable, Disposable, dispose } from 'vs/base/common/lifecycle';
import { IThemeService, ITheme } from 'vs/platform/theme/common/themeService';
@@ -361,7 +361,7 @@ export const TITLE_BAR_INACTIVE_BACKGROUND = registerColor('titleBar.inactiveBac
export const TITLE_BAR_BORDER = registerColor('titleBar.border', {
dark: null,
light: null,
hc: null
hc: contrastBorder
}, nls.localize('titleBarBorder', "Title bar border color. Note that this color is currently only supported on macOS."));
// < --- Notifications --- >

View File

@@ -6,7 +6,7 @@
import { TPromise } from 'vs/base/common/winjs.base';
import { Command } from 'vs/editor/common/modes';
import { UriComponents } from 'vs/base/common/uri';
import Event, { Emitter } from 'vs/base/common/event';
import { Event, Emitter } from 'vs/base/common/event';
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
import { ITreeViewDataProvider } from 'vs/workbench/common/views';
import { localize } from 'vs/nls';
@@ -17,24 +17,24 @@ import { ThemeIcon } from 'vs/platform/theme/common/themeService';
export class ViewLocation {
static readonly Explorer = new ViewLocation('workbench.view.explorer');
static readonly Debug = new ViewLocation('workbench.view.debug');
static readonly Extensions = new ViewLocation('workbench.view.extensions');
constructor(private _id: string) {
private static locations: Map<string, ViewLocation> = new Map<string, ViewLocation>();
static register(id: string): ViewLocation {
const viewLocation = new ViewLocation(id);
ViewLocation.locations.set(id, viewLocation);
return viewLocation;
}
static get(value: string): ViewLocation {
return ViewLocation.locations.get(value);
}
get id(): string {
return this._id;
}
static readonly Explorer: ViewLocation = ViewLocation.register('workbench.view.explorer');
static readonly Debug: ViewLocation = ViewLocation.register('workbench.view.debug');
static readonly Extensions: ViewLocation = ViewLocation.register('workbench.view.extensions');
static readonly SCM: ViewLocation = ViewLocation.register('workbench.view.scm.views.contributed');
private constructor(private _id: string) { }
get id(): string { return this._id; }
static getContributedViewLocation(value: string): ViewLocation {
switch (value) {
case 'explorer': return ViewLocation.Explorer;
case 'debug': return ViewLocation.Debug;
}
return void 0;
}
}
export interface IViewDescriptor {
@@ -79,10 +79,10 @@ export interface IViewsRegistry {
export const ViewsRegistry: IViewsRegistry = new class implements IViewsRegistry {
private _onViewsRegistered: Emitter<IViewDescriptor[]> = new Emitter<IViewDescriptor[]>();
private readonly _onViewsRegistered: Emitter<IViewDescriptor[]> = new Emitter<IViewDescriptor[]>();
readonly onViewsRegistered: Event<IViewDescriptor[]> = this._onViewsRegistered.event;
private _onViewsDeregistered: Emitter<IViewDescriptor[]> = new Emitter<IViewDescriptor[]>();
private readonly _onViewsDeregistered: Emitter<IViewDescriptor[]> = new Emitter<IViewDescriptor[]>();
readonly onViewsDeregistered: Event<IViewDescriptor[]> = this._onViewsDeregistered.event;
private _viewLocations: ViewLocation[] = [];
@@ -182,9 +182,9 @@ export interface ICustomViewDescriptor extends IViewDescriptor {
}
export const ICustomViewsService = createDecorator<ICustomViewsService>('customViewsService');
export const IViewsService = createDecorator<IViewsService>('viewsService');
export interface ICustomViewsService {
export interface IViewsService {
_serviceBrand: any;
getTreeViewer(id: string): ITreeViewer;