Merge from vscode 966b87dd4013be1a9c06e2b8334522ec61905cc2 (#4696)

This commit is contained in:
Anthony Dresser
2019-03-26 11:43:38 -07:00
committed by GitHub
parent b1393ae615
commit 0d8ef9583b
268 changed files with 5947 additions and 3422 deletions

View File

@@ -126,7 +126,7 @@ export interface IExpressionTemplateData {
name: HTMLSpanElement;
value: HTMLSpanElement;
inputBoxContainer: HTMLElement;
enableInputBox(expression: IExpression, options: IInputBoxOptions);
enableInputBox(expression: IExpression, options: IInputBoxOptions): void;
toDispose: IDisposable[];
label: HighlightedLabel;
}

View File

@@ -76,7 +76,7 @@ export class BreakpointsView extends ViewletPanel {
], {
identityProvider: { getId: (element: IEnablement) => element.getId() },
multipleSelectionSupport: false,
keyboardNavigationLabelProvider: { getKeyboardNavigationLabel: e => e }
keyboardNavigationLabelProvider: { getKeyboardNavigationLabel: (e: IEnablement) => e }
}) as WorkbenchList<IEnablement>;
CONTEXT_BREAKPOINTS_FOCUSED.bindTo(this.list.contextKeyService);

View File

@@ -109,7 +109,7 @@ export class CallStackView extends ViewletPanel {
accessibilityProvider: new CallStackAccessibilityProvider(),
ariaLabel: nls.localize({ comment: ['Debug is a noun in this context, not a verb.'], key: 'callStackAriaLabel' }, "Debug Call Stack"),
identityProvider: {
getId: element => {
getId: (element: CallStackItem) => {
if (typeof element === 'string') {
return element;
}
@@ -117,11 +117,11 @@ export class CallStackView extends ViewletPanel {
return `showMore ${element[0].getId()}`;
}
return (<IStackFrame | IThread | IDebugSession | ThreadAndSessionIds>element).getId();
return element.getId();
}
},
keyboardNavigationLabelProvider: {
getKeyboardNavigationLabel: e => {
getKeyboardNavigationLabel: (e: CallStackItem) => {
if (isDebugSession(e)) {
return e.getLabel();
}
@@ -170,7 +170,7 @@ export class CallStackView extends ViewletPanel {
focusStackFrame(undefined, undefined, element);
}
if (element instanceof ThreadAndSessionIds) {
const session = this.debugService.getModel().getSessions().filter(p => p.getId() === element.sessionId).pop();
const session = this.debugService.getModel().getSession(element.sessionId);
const thread = session && session.getThread(element.threadId);
if (thread) {
(<Thread>thread).fetchCallStack()

View File

@@ -125,7 +125,7 @@ export function registerCommands(): void {
KeybindingsRegistry.registerCommandAndKeybindingRule({
id: STEP_INTO_ID,
weight: KeybindingWeight.WorkbenchContrib,
weight: KeybindingWeight.WorkbenchContrib + 10, // Have a stronger weight to have priority over full screen when debugging
primary: KeyCode.F11,
when: CONTEXT_DEBUG_STATE.isEqualTo('stopped'),
handler: (accessor: ServicesAccessor, _: string, thread: IThread | undefined) => {

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import 'vs/css!./media/debugToolbar';
import 'vs/css!./media/debugToolBar';
import * as errors from 'vs/base/common/errors';
import * as browser from 'vs/base/browser/browser';
import * as dom from 'vs/base/browser/dom';
@@ -46,14 +46,14 @@ export const debugToolBarBorder = registerColor('debugToolBar.border', {
hc: null
}, localize('debugToolBarBorder', "Debug toolbar border color."));
export class DebugToolbar extends Themable implements IWorkbenchContribution {
export class DebugToolBar extends Themable implements IWorkbenchContribution {
private $el: HTMLElement;
private dragArea: HTMLElement;
private actionBar: ActionBar;
private activeActions: IAction[];
private updateScheduler: RunOnceScheduler;
private debugToolbarMenu: IMenu;
private debugToolBarMenu: IMenu;
private isVisible: boolean;
private isBuilt: boolean;
@@ -81,8 +81,8 @@ export class DebugToolbar extends Themable implements IWorkbenchContribution {
this.dragArea = dom.append(this.$el, dom.$('div.drag-area'));
const actionBarContainer = dom.append(this.$el, dom.$('div.action-bar-container'));
this.debugToolbarMenu = menuService.createMenu(MenuId.DebugToolbar, contextKeyService);
this.toDispose.push(this.debugToolbarMenu);
this.debugToolBarMenu = menuService.createMenu(MenuId.DebugToolBar, contextKeyService);
this.toDispose.push(this.debugToolBarMenu);
this.activeActions = [];
this.actionBar = this._register(new ActionBar(actionBarContainer, {
@@ -106,7 +106,7 @@ export class DebugToolbar extends Themable implements IWorkbenchContribution {
return this.hide();
}
const actions = DebugToolbar.getActions(this.debugToolbarMenu, this.debugService, this.instantiationService);
const actions = DebugToolBar.getActions(this.debugToolBarMenu, this.debugService, this.instantiationService);
if (!arrays.equals(actions, this.activeActions, (first, second) => first.id === second.id)) {
this.actionBar.clear();
this.actionBar.push(actions, { icon: true, label: false });

View File

@@ -24,7 +24,7 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';
import { memoize } from 'vs/base/common/decorators';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { DebugToolbar } from 'vs/workbench/contrib/debug/browser/debugToolbar';
import { DebugToolBar } from 'vs/workbench/contrib/debug/browser/debugToolBar';
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
import { ViewletPanel } from 'vs/workbench/browser/parts/views/panelViewlet';
import { IMenu, MenuId, IMenuService, MenuItemAction } from 'vs/platform/actions/common/actions';
@@ -40,7 +40,7 @@ export class DebugViewlet extends ViewContainerViewlet {
private progressRunner: IProgressRunner;
private breakpointView: ViewletPanel;
private panelListeners = new Map<string, IDisposable>();
private debugToolbarMenu: IMenu;
private debugToolBarMenu: IMenu;
constructor(
@IWorkbenchLayoutService layoutService: IWorkbenchLayoutService,
@@ -63,6 +63,7 @@ export class DebugViewlet extends ViewContainerViewlet {
super(VIEWLET_ID, `${VIEWLET_ID}.state`, false, configurationService, layoutService, telemetryService, storageService, instantiationService, themeService, contextMenuService, extensionService, contextService);
this._register(this.debugService.onDidChangeState(state => this.onDebugServiceStateChange(state)));
this._register(this.debugService.onDidNewSession(() => this.updateToolBar()));
this._register(this.contextService.onDidChangeWorkbenchState(() => this.updateTitleArea()));
this._register(this.configurationService.onDidChangeConfiguration(e => {
if (e.affectsConfiguration('debug.toolBarLocation')) {
@@ -109,11 +110,11 @@ export class DebugViewlet extends ViewContainerViewlet {
return [this.startAction, this.configureAction, this.toggleReplAction];
}
if (!this.debugToolbarMenu) {
this.debugToolbarMenu = this.menuService.createMenu(MenuId.DebugToolbar, this.contextKeyService);
this.toDispose.push(this.debugToolbarMenu);
if (!this.debugToolBarMenu) {
this.debugToolBarMenu = this.menuService.createMenu(MenuId.DebugToolBar, this.contextKeyService);
this.toDispose.push(this.debugToolBarMenu);
}
return DebugToolbar.getActions(this.debugToolbarMenu, this.debugService, this.instantiationService);
return DebugToolBar.getActions(this.debugToolBarMenu, this.debugService, this.instantiationService);
}
get showInitialDebugActions(): boolean {
@@ -160,6 +161,10 @@ export class DebugViewlet extends ViewContainerViewlet {
this.progressRunner = this.progressService.show(true);
}
this.updateToolBar();
}
private updateToolBar(): void {
if (this.configurationService.getValue<IDebugConfiguration>('debug').toolBarLocation === 'docked') {
this.updateTitleArea();
}

View File

@@ -424,10 +424,10 @@ export class LoadedScriptsView extends ViewletPanel {
new LoadedScriptsDataSource(),
{
identityProvider: {
getId: element => (<LoadedScriptsItem>element).getId()
getId: (element: LoadedScriptsItem) => element.getId()
},
keyboardNavigationLabelProvider: {
getKeyboardNavigationLabel: element => (<LoadedScriptsItem>element).getLabel()
getKeyboardNavigationLabel: (element: LoadedScriptsItem) => element.getLabel()
},
filter: this.filter,
accessibilityProvider: new LoadedSciptsAccessibilityProvider(),

View File

@@ -373,9 +373,9 @@ export class Repl extends Panel implements IPrivateReplService, IHistoryNavigati
], new ReplDataSource(), {
ariaLabel: nls.localize('replAriaLabel', "Read Eval Print Loop Panel"),
accessibilityProvider: new ReplAccessibilityProvider(),
identityProvider: { getId: element => (<IReplElement>element).getId() },
identityProvider: { getId: (element: IReplElement) => element.getId() },
mouseSupport: false,
keyboardNavigationLabelProvider: { getKeyboardNavigationLabel: e => e },
keyboardNavigationLabelProvider: { getKeyboardNavigationLabel: (e: IReplElement) => e },
horizontalScrolling: false,
setRowLineHeight: false,
supportDynamicHeights: true
@@ -452,7 +452,10 @@ export class Repl extends Panel implements IPrivateReplService, IHistoryNavigati
private onContextMenu(e: ITreeContextMenuEvent<IReplElement>): void {
const actions: IAction[] = [];
actions.push(new Action('debug.replCopy', nls.localize('copy', "Copy"), undefined, true, () => {
this.clipboardService.writeText(window.getSelection().toString());
const nativeSelection = window.getSelection();
if (nativeSelection) {
this.clipboardService.writeText(nativeSelection.toString());
}
return Promise.resolve();
}));
actions.push(new Action('workbench.debug.action.copyAll', nls.localize('copyAll', "Copy All"), undefined, true, () => {
@@ -740,7 +743,8 @@ class ReplDelegate implements IListVirtualDelegate<IReplElement> {
}
hasDynamicHeight?(element: IReplElement): boolean {
return true;
// Empty elements should not have dynamic height since they will be invisible
return element.toString().length > 0;
}
}

View File

@@ -76,8 +76,8 @@ export class VariablesView extends ViewletPanel {
new VariablesDataSource(), {
ariaLabel: nls.localize('variablesAriaTreeLabel', "Debug Variables"),
accessibilityProvider: new VariablesAccessibilityProvider(),
identityProvider: { getId: element => (<IExpression | IScope>element).getId() },
keyboardNavigationLabelProvider: { getKeyboardNavigationLabel: e => e }
identityProvider: { getId: (element: IExpression | IScope) => element.getId() },
keyboardNavigationLabelProvider: { getKeyboardNavigationLabel: (e: IExpression | IScope) => e }
}) as WorkbenchAsyncDataTree<IViewModel | IExpression | IScope, IExpression | IScope, FuzzyScore>;
this.tree.setInput(this.debugService.getViewModel()).then(null, onUnexpectedError);

View File

@@ -63,8 +63,8 @@ export class WatchExpressionsView extends ViewletPanel {
new WatchExpressionsDataSource(), {
ariaLabel: nls.localize({ comment: ['Debug is a noun in this context, not a verb.'], key: 'watchAriaTreeLabel' }, "Debug Watch Expressions"),
accessibilityProvider: new WatchExpressionsAccessibilityProvider(),
identityProvider: { getId: element => (<IExpression>element).getId() },
keyboardNavigationLabelProvider: { getKeyboardNavigationLabel: e => e },
identityProvider: { getId: (element: IExpression) => element.getId() },
keyboardNavigationLabelProvider: { getKeyboardNavigationLabel: (e: IExpression) => e },
dnd: new WatchExpressionsDragAndDrop(this.debugService),
}) as WorkbenchAsyncDataTree<IDebugService | IExpression, IExpression, FuzzyScore>;