diff --git a/src/vs/workbench/contrib/debug/browser/repl.ts b/src/vs/workbench/contrib/debug/browser/repl.ts index 3935ae4564324bc9bbfe510b47a32b88fb701147..ea0f700bb49255b49fca565821999d502cae5c96 100644 --- a/src/vs/workbench/contrib/debug/browser/repl.ts +++ b/src/vs/workbench/contrib/debug/browser/repl.ts @@ -80,7 +80,7 @@ interface IPrivateReplService { } function revealLastElement(tree: WorkbenchAsyncDataTree) { - tree.scrollTop = tree.scrollHeight - tree.renderHeight; + tree.scrollTop = Number.POSITIVE_INFINITY; } const sessionsToIgnore = new Set(); @@ -799,8 +799,6 @@ class ReplDelegate implements IListVirtualDelegate { constructor(private configurationService: IConfigurationService) { } getHeight(element: IReplElement): number { - const countNumberOfLines = (str: string) => Math.max(1, (str && str.match(/\r\n|\n/g) || []).length); - // Give approximate heights. Repl has dynamic height so the tree will measure the actual height on its own. const config = this.configurationService.getValue('debug'); const fontSize = config.console.fontSize; @@ -819,13 +817,13 @@ class ReplDelegate implements IListVirtualDelegate { return rowHeight; } - let valueRows = value ? (countNumberOfLines(value) + Math.floor(value.length / 150)) : 0; + let valueRows = value ? Math.ceil(value.length / 150) : 0; return rowHeight * valueRows; } if (element instanceof SimpleReplElement || element instanceof ReplEvaluationInput) { let value = element.value; - let valueRows = countNumberOfLines(value) + Math.floor(value.length / 150); + let valueRows = Math.ceil(value.length / 150); return valueRows * rowHeight; }