From b372166770ecd83113cd8d8f25d4a7faa853aed0 Mon Sep 17 00:00:00 2001 From: isidor Date: Wed, 4 May 2016 16:47:46 +0200 Subject: [PATCH] debug: different max value render lengths for repl / hover / viewlet fixes #5823 --- .../parts/debug/browser/debugHover.ts | 3 +- .../parts/debug/browser/debugViewer.ts | 80 +++++++++---------- 2 files changed, 42 insertions(+), 41 deletions(-) diff --git a/src/vs/workbench/parts/debug/browser/debugHover.ts b/src/vs/workbench/parts/debug/browser/debugHover.ts index 3d41a55df1a..345b37712f7 100644 --- a/src/vs/workbench/parts/debug/browser/debugHover.ts +++ b/src/vs/workbench/parts/debug/browser/debugHover.ts @@ -27,6 +27,7 @@ const debugTreeOptions = { ariaLabel: nls.localize('treeAriaLabel', "Debug Hover") }; const MAX_ELEMENTS_SHOWN = 18; +const MAX_VALUE_RENDER_LENGTH_IN_HOVER = 4096; export class DebugHoverWidget implements editorbrowser.IContentWidget { @@ -182,7 +183,7 @@ export class DebugHoverWidget implements editorbrowser.IContentWidget { if (expression.reference === 0 || forceValueHover) { this.treeContainer.hidden = true; this.valueContainer.hidden = false; - viewer.renderExpressionValue(expression, this.valueContainer, false); + viewer.renderExpressionValue(expression, this.valueContainer, false, MAX_VALUE_RENDER_LENGTH_IN_HOVER); this.valueContainer.title = ''; this.editor.layoutContentWidget(this); if (focus) { diff --git a/src/vs/workbench/parts/debug/browser/debugViewer.ts b/src/vs/workbench/parts/debug/browser/debugViewer.ts index 48833ac4838..0561bcd2b3b 100644 --- a/src/vs/workbench/parts/debug/browser/debugViewer.ts +++ b/src/vs/workbench/parts/debug/browser/debugViewer.ts @@ -35,9 +35,9 @@ import {IKeyboardEvent} from 'vs/base/browser/keyboardEvent'; const $ = dom.emmet; const booleanRegex = /^true|false$/i; const stringRegex = /^(['"]).*\1$/; -const MAX_VALUE_RENDER_LENGTH = 5000; +const MAX_VALUE_RENDER_LENGTH_IN_VIEWLET = 1024; -export function renderExpressionValue(expressionOrValue: debug.IExpression|string, container: HTMLElement, showChanged: boolean): void { +export function renderExpressionValue(expressionOrValue: debug.IExpression | string, container: HTMLElement, showChanged: boolean, maxValueRenderLength?: number): void { let value = typeof expressionOrValue === 'string' ? expressionOrValue : expressionOrValue.value; // remove stale classes @@ -61,8 +61,8 @@ export function renderExpressionValue(expressionOrValue: debug.IExpression|strin container.className = 'value changed'; } - if (value.length > MAX_VALUE_RENDER_LENGTH) { - value = value.substr(0, MAX_VALUE_RENDER_LENGTH) + '...'; + if (maxValueRenderLength && value.length > maxValueRenderLength) { + value = value.substr(0, maxValueRenderLength) + '...'; } container.textContent = value; container.title = value; @@ -74,7 +74,7 @@ export function renderVariable(tree: tree.ITree, variable: model.Variable, data: } if (variable.value) { - renderExpressionValue(variable, data.value, showChanged); + renderExpressionValue(variable, data.value, showChanged, MAX_VALUE_RENDER_LENGTH_IN_VIEWLET); data.expression.title = variable.value; } else { data.value.textContent = ''; @@ -195,7 +195,7 @@ export class BaseDebugController extends treedefaults.DefaultController { export class CallStackActionProvider implements renderer.IActionProvider { - constructor(@IInstantiationService private instantiationService: IInstantiationService) { + constructor( @IInstantiationService private instantiationService: IInstantiationService) { // noop } @@ -233,7 +233,7 @@ export class CallStackActionProvider implements renderer.IActionProvider { export class CallStackDataSource implements tree.IDataSource { - constructor(@debug.IDebugService private debugService: debug.IDebugService) { + constructor( @debug.IDebugService private debugService: debug.IDebugService) { // noop } @@ -286,10 +286,10 @@ interface ILoadMoreTemplateData { interface IStackFrameTemplateData { stackFrame: HTMLElement; - label : HTMLElement; - file : HTMLElement; - fileName : HTMLElement; - lineNumber : HTMLElement; + label: HTMLElement; + file: HTMLElement; + fileName: HTMLElement; + lineNumber: HTMLElement; } export class CallStackRenderer implements tree.IRenderer { @@ -298,11 +298,11 @@ export class CallStackRenderer implements tree.IRenderer { private static STACK_FRAME_TEMPLATE_ID = 'stackFrame'; private static LOAD_MORE_TEMPLATE_ID = 'loadMore'; - constructor(@IWorkspaceContextService private contextService: IWorkspaceContextService) { + constructor( @IWorkspaceContextService private contextService: IWorkspaceContextService) { // noop } - public getHeight(tree:tree.ITree, element:any): number { + public getHeight(tree: tree.ITree, element: any): number { return 22; } @@ -371,7 +371,7 @@ export class CallStackRenderer implements tree.IRenderer { data.label.title = stackFrame.name; data.fileName.textContent = getSourceName(stackFrame.source, this.contextService); if (stackFrame.source.available && stackFrame.lineNumber !== undefined) { - data.lineNumber.textContent = `${ stackFrame.lineNumber }`; + data.lineNumber.textContent = `${stackFrame.lineNumber}`; dom.removeClass(data.lineNumber, 'unavailable'); } else { dom.addClass(data.lineNumber, 'unavailable'); @@ -385,7 +385,7 @@ export class CallStackRenderer implements tree.IRenderer { export class CallstackAccessibilityProvider implements tree.IAccessibilityProvider { - constructor(@IWorkspaceContextService private contextService: IWorkspaceContextService) { + constructor( @IWorkspaceContextService private contextService: IWorkspaceContextService) { // noop } @@ -423,7 +423,7 @@ export class VariablesActionProvider implements renderer.IActionProvider { public getSecondaryActions(tree: tree.ITree, element: any): TPromise { let actions: actions.Action[] = []; - const variable = element; + const variable = element; actions.push(this.instantiationService.createInstance(debugactions.AddToWatchExpressionsAction, debugactions.AddToWatchExpressionsAction.ID, debugactions.AddToWatchExpressionsAction.LABEL, variable)); if (variable.reference === 0) { actions.push(this.instantiationService.createInstance(debugactions.CopyValueAction, debugactions.CopyValueAction.ID, debugactions.CopyValueAction.LABEL, variable)); @@ -452,17 +452,17 @@ export class VariablesDataSource implements tree.IDataSource { return true; } - let variable = element; + let variable = element; return variable.reference !== 0 && !strings.equalsIgnoreCase(variable.value, 'null'); } public getChildren(tree: tree.ITree, element: any): TPromise { if (element instanceof viewmodel.ViewModel) { - let focusedStackFrame = ( element).getFocusedStackFrame(); + let focusedStackFrame = (element).getFocusedStackFrame(); return focusedStackFrame ? focusedStackFrame.getScopes(this.debugService) : TPromise.as([]); } - let scope = element; + let scope = element; return scope.getChildren(this.debugService); } @@ -577,7 +577,7 @@ export class WatchExpressionsActionProvider implements renderer.IActionProvider public getSecondaryActions(tree: tree.ITree, element: any): TPromise { const actions: actions.Action[] = []; if (element instanceof model.Expression) { - const expression = element; + const expression = element; actions.push(this.instantiationService.createInstance(debugactions.AddWatchExpressionAction, debugactions.AddWatchExpressionAction.ID, debugactions.AddWatchExpressionAction.LABEL)); actions.push(this.instantiationService.createInstance(debugactions.RenameWatchExpressionAction, debugactions.RenameWatchExpressionAction.ID, debugactions.RenameWatchExpressionAction.LABEL, expression)); if (expression.reference === 0) { @@ -590,7 +590,7 @@ export class WatchExpressionsActionProvider implements renderer.IActionProvider } else { actions.push(this.instantiationService.createInstance(debugactions.AddWatchExpressionAction, debugactions.AddWatchExpressionAction.ID, debugactions.AddWatchExpressionAction.LABEL)); if (element instanceof model.Variable) { - const variable = element; + const variable = element; if (variable.reference === 0) { actions.push(this.instantiationService.createInstance(debugactions.CopyValueAction, debugactions.CopyValueAction.ID, debugactions.CopyValueAction.LABEL, variable.value)); } @@ -622,16 +622,16 @@ export class WatchExpressionsDataSource implements tree.IDataSource { return true; } - const watchExpression = element; + const watchExpression = element; return watchExpression.reference !== 0 && !strings.equalsIgnoreCase(watchExpression.value, 'null'); } public getChildren(tree: tree.ITree, element: any): TPromise { if (element instanceof model.Model) { - return TPromise.as(( element).getWatchExpressions()); + return TPromise.as((element).getWatchExpressions()); } - let expression = element; + let expression = element; return expression.getChildren(this.debugService); } @@ -657,10 +657,10 @@ export class WatchExpressionsRenderer implements tree.IRenderer { @IContextViewService private contextViewService: IContextViewService ) { this.toDispose = []; - this.actionProvider = actionProvider; + this.actionProvider = actionProvider; } - public getHeight(tree:tree.ITree, element:any): number { + public getHeight(tree: tree.ITree, element: any): number { return 22; } @@ -676,7 +676,7 @@ export class WatchExpressionsRenderer implements tree.IRenderer { let data: IWatchExpressionTemplateData = Object.create(null); if (templateId === WatchExpressionsRenderer.WATCH_EXPRESSION_TEMPLATE_ID) { data.actionBar = new actionbar.ActionBar(container, { actionRunner: this.actionRunner }); - data.actionBar.push(this.actionProvider.getExpressionActions() , { icon: true, label: false }); + data.actionBar.push(this.actionProvider.getExpressionActions(), { icon: true, label: false }); } data.expression = dom.append(container, $(isMacintosh ? '.expression.mac' : '.expression.win-linux')); @@ -703,7 +703,7 @@ export class WatchExpressionsRenderer implements tree.IRenderer { data.name.textContent = `${watchExpression.name}:`; if (watchExpression.value) { - renderExpressionValue(watchExpression, data.value, true); + renderExpressionValue(watchExpression, data.value, true, MAX_VALUE_RENDER_LENGTH_IN_VIEWLET); data.expression.title = watchExpression.value; } } @@ -748,7 +748,7 @@ export class WatchExpressionsController extends BaseDebugController { protected onLeftClick(tree: tree.ITree, element: any, event: mouse.IMouseEvent): boolean { // double click on primitive value: open input box to be able to select and copy value. if (element instanceof model.Expression && event.detail === 2) { - const expression = element; + const expression = element; if (expression.reference === 0) { this.debugService.getViewModel().setSelectedExpression(expression); } @@ -761,7 +761,7 @@ export class WatchExpressionsController extends BaseDebugController { protected onRename(tree: tree.ITree, event: KeyboardEvent): boolean { const element = tree.getFocus(); if (element instanceof model.Expression) { - const watchExpression = element; + const watchExpression = element; if (watchExpression.reference === 0) { this.debugService.getViewModel().setSelectedExpression(watchExpression); } @@ -774,7 +774,7 @@ export class WatchExpressionsController extends BaseDebugController { protected onDelete(tree: tree.ITree, event: IKeyboardEvent): boolean { const element = tree.getFocus(); if (element instanceof model.Expression) { - const we = element; + const we = element; this.debugService.removeWatchExpressions(we.getId()); return true; @@ -856,8 +856,8 @@ export class BreakpointsDataSource implements tree.IDataSource { } public getChildren(tree: tree.ITree, element: any): TPromise { - const model = element; - const exBreakpoints = model.getExceptionBreakpoints(); + const model = element; + const exBreakpoints = model.getExceptionBreakpoints(); return TPromise.as(exBreakpoints.concat(model.getFunctionBreakpoints()).concat(model.getBreakpoints())); } @@ -901,7 +901,7 @@ export class BreakpointsRenderer implements tree.IRenderer { // noop } - public getHeight(tree:tree.ITree, element:any): number { + public getHeight(tree: tree.ITree, element: any): number { return 22; } @@ -929,7 +929,7 @@ export class BreakpointsRenderer implements tree.IRenderer { data.breakpoint = dom.append(container, $('.breakpoint')); data.toDisposeBeforeRender = []; - data.checkbox = $('input'); + data.checkbox = $('input'); data.checkbox.type = 'checkbox'; if (!isMacintosh) { data.checkbox.className = 'checkbox-win-linux'; @@ -963,7 +963,7 @@ export class BreakpointsRenderer implements tree.IRenderer { } private renderExceptionBreakpoint(exceptionBreakpoint: debug.IExceptionBreakpoint, data: IExceptionBreakpointTemplateData): void { - data.name.textContent = exceptionBreakpoint.label || `${ exceptionBreakpoint.filter } exceptions`;; + data.name.textContent = exceptionBreakpoint.label || `${exceptionBreakpoint.filter} exceptions`;; data.checkbox.checked = exceptionBreakpoint.enabled; } @@ -1008,7 +1008,7 @@ export class BreakpointsRenderer implements tree.IRenderer { export class BreakpointsAccessibilityProvider implements tree.IAccessibilityProvider { - constructor(@IWorkspaceContextService private contextService: IWorkspaceContextService) { + constructor( @IWorkspaceContextService private contextService: IWorkspaceContextService) { // noop } @@ -1029,7 +1029,7 @@ export class BreakpointsAccessibilityProvider implements tree.IAccessibilityProv export class BreakpointsController extends BaseDebugController { - protected onLeftClick(tree:tree.ITree, element: any, event: mouse.IMouseEvent): boolean { + protected onLeftClick(tree: tree.ITree, element: any, event: mouse.IMouseEvent): boolean { if (element instanceof model.FunctionBreakpoint && event.detail === 2) { this.debugService.getViewModel().setSelectedFunctionBreakpoint(element); return true; @@ -1050,10 +1050,10 @@ export class BreakpointsController extends BaseDebugController { protected onDelete(tree: tree.ITree, event: IKeyboardEvent): boolean { const element = tree.getFocus(); if (element instanceof model.Breakpoint) { - this.debugService.removeBreakpoints(( element).getId()).done(null, errors.onUnexpectedError); + this.debugService.removeBreakpoints((element).getId()).done(null, errors.onUnexpectedError); return true; } else if (element instanceof model.FunctionBreakpoint) { - const fbp = element; + const fbp = element; this.debugService.removeFunctionBreakpoints(fbp.getId()).done(null, errors.onUnexpectedError); return true; -- GitLab