diff --git a/src/sql/base/browser/ui/table/formatters.ts b/src/sql/base/browser/ui/table/formatters.ts index 44d9286c63..ac97390802 100644 --- a/src/sql/base/browser/ui/table/formatters.ts +++ b/src/sql/base/browser/ui/table/formatters.ts @@ -71,13 +71,14 @@ export function hyperLinkFormatter(row: number | undefined, cell: any | undefine valueToDisplay = 'NULL'; if (!value.isNull) { cellClasses += ' xmlLink'; - valueToDisplay = escape(value.displayValue); + valueToDisplay = getCellDisplayValue(value.displayValue); return `${valueToDisplay}`; } else { cellClasses += ' missing-value'; } } else if (isHyperlinkCellValue(value)) { - return `${escape(value.displayText)}`; + valueToDisplay = getCellDisplayValue(value.displayText); + return `${valueToDisplay}`; } return `${valueToDisplay}`; } @@ -93,8 +94,7 @@ export function textFormatter(row: number | undefined, cell: any | undefined, va if (DBCellValue.isDBCellValue(value)) { valueToDisplay = 'NULL'; if (!value.isNull) { - valueToDisplay = value.displayValue.replace(/(\r\n|\n|\r)/g, ' '); - valueToDisplay = escape(valueToDisplay.length > 250 ? valueToDisplay.slice(0, 250) + '...' : valueToDisplay); + valueToDisplay = getCellDisplayValue(value.displayValue) titleValue = valueToDisplay; } else { cellClasses += ' missing-value'; @@ -108,7 +108,7 @@ export function textFormatter(row: number | undefined, cell: any | undefined, va } else { valueToDisplay = value; } - valueToDisplay = escape(valueToDisplay.length > 250 ? valueToDisplay.slice(0, 250) + '...' : valueToDisplay); + valueToDisplay = getCellDisplayValue(valueToDisplay); titleValue = valueToDisplay; } else if (value && value.title) { @@ -119,13 +119,19 @@ export function textFormatter(row: number | undefined, cell: any | undefined, va cellStyle = value.style; } } - valueToDisplay = escape(valueToDisplay.length > 250 ? valueToDisplay.slice(0, 250) + '...' : valueToDisplay); + valueToDisplay = getCellDisplayValue(valueToDisplay); titleValue = valueToDisplay; } return `${valueToDisplay}`; } +function getCellDisplayValue(cellValue: string): string { + // allow-any-unicode-next-line + let valueToDisplay = cellValue.replace(/(\r\n|\n|\r)/g, '↵'); + return escape(valueToDisplay.length > 250 ? valueToDisplay.slice(0, 250) + '...' : valueToDisplay); +} + export function iconCssFormatter(row: number | undefined, cell: any | undefined, value: any, columnDef: any | undefined, dataContext: any | undefined): string { if (isCssIconCellValue(value)) {