From b6138b95268aea0768f77ae8e4eacbcc0621bf07 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Thu, 10 Oct 2019 12:55:59 +0200 Subject: [PATCH] Fixes #80825: Use   only on Windows --- .../common/modes/textToHtmlTokenizer.ts | 6 ++--- .../editor/common/viewModel/viewModelImpl.ts | 3 ++- .../common/modes/textToHtmlTokenizer.test.ts | 22 +++++++++---------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/vs/editor/common/modes/textToHtmlTokenizer.ts b/src/vs/editor/common/modes/textToHtmlTokenizer.ts index af5a682bc37..e98f2b37f19 100644 --- a/src/vs/editor/common/modes/textToHtmlTokenizer.ts +++ b/src/vs/editor/common/modes/textToHtmlTokenizer.ts @@ -24,7 +24,7 @@ export function tokenizeToString(text: string, tokenizationSupport: IReducedToke return _tokenizeToString(text, tokenizationSupport || fallback); } -export function tokenizeLineToHTML(text: string, viewLineTokens: IViewLineTokens, colorMap: string[], startOffset: number, endOffset: number, tabSize: number): string { +export function tokenizeLineToHTML(text: string, viewLineTokens: IViewLineTokens, colorMap: string[], startOffset: number, endOffset: number, tabSize: number, useNbsp: boolean): string { let result = `
`; let charIndex = startOffset; let tabsCharDelta = 0; @@ -46,7 +46,7 @@ export function tokenizeLineToHTML(text: string, viewLineTokens: IViewLineTokens let insertSpacesCount = tabSize - (charIndex + tabsCharDelta) % tabSize; tabsCharDelta += insertSpacesCount - 1; while (insertSpacesCount > 0) { - partContent += ' '; + partContent += useNbsp ? ' ' : ' '; insertSpacesCount--; } break; @@ -78,7 +78,7 @@ export function tokenizeLineToHTML(text: string, viewLineTokens: IViewLineTokens break; case CharCode.Space: - partContent += ' '; + partContent += useNbsp ? ' ' : ' '; break; default: diff --git a/src/vs/editor/common/viewModel/viewModelImpl.ts b/src/vs/editor/common/viewModel/viewModelImpl.ts index 01e9f36723c..a99279b51d0 100644 --- a/src/vs/editor/common/viewModel/viewModelImpl.ts +++ b/src/vs/editor/common/viewModel/viewModelImpl.ts @@ -24,6 +24,7 @@ import { ICoordinatesConverter, IOverviewRulerDecorations, IViewModel, MinimapLi import { ViewModelDecorations } from 'vs/editor/common/viewModel/viewModelDecorations'; import { ITheme } from 'vs/platform/theme/common/themeService'; import { RunOnceScheduler } from 'vs/base/common/async'; +import * as platform from 'vs/base/common/platform'; const USE_IDENTITY_LINES_COLLECTION = true; @@ -713,7 +714,7 @@ export class ViewModel extends viewEvents.ViewEventEmitter implements IViewModel if (lineContent === '') { result += '
'; } else { - result += tokenizeLineToHTML(lineContent, lineTokens.inflate(), colorMap, startOffset, endOffset, tabSize); + result += tokenizeLineToHTML(lineContent, lineTokens.inflate(), colorMap, startOffset, endOffset, tabSize, platform.isWindows); } } diff --git a/src/vs/editor/test/common/modes/textToHtmlTokenizer.test.ts b/src/vs/editor/test/common/modes/textToHtmlTokenizer.test.ts index a8c5071cb9e..77f96fc20af 100644 --- a/src/vs/editor/test/common/modes/textToHtmlTokenizer.test.ts +++ b/src/vs/editor/test/common/modes/textToHtmlTokenizer.test.ts @@ -105,7 +105,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { const colorMap = [null!, '#000000', '#ffffff', '#ff0000', '#00ff00', '#0000ff']; assert.equal( - tokenizeLineToHTML(text, lineTokens, colorMap, 0, 17, 4), + tokenizeLineToHTML(text, lineTokens, colorMap, 0, 17, 4, true), [ '
', 'Ciao', @@ -118,7 +118,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { ); assert.equal( - tokenizeLineToHTML(text, lineTokens, colorMap, 0, 12, 4), + tokenizeLineToHTML(text, lineTokens, colorMap, 0, 12, 4, true), [ '
', 'Ciao', @@ -131,7 +131,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { ); assert.equal( - tokenizeLineToHTML(text, lineTokens, colorMap, 0, 11, 4), + tokenizeLineToHTML(text, lineTokens, colorMap, 0, 11, 4, true), [ '
', 'Ciao', @@ -143,7 +143,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { ); assert.equal( - tokenizeLineToHTML(text, lineTokens, colorMap, 1, 11, 4), + tokenizeLineToHTML(text, lineTokens, colorMap, 1, 11, 4, true), [ '
', 'iao', @@ -155,7 +155,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { ); assert.equal( - tokenizeLineToHTML(text, lineTokens, colorMap, 4, 11, 4), + tokenizeLineToHTML(text, lineTokens, colorMap, 4, 11, 4, true), [ '
', ' ', @@ -166,7 +166,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { ); assert.equal( - tokenizeLineToHTML(text, lineTokens, colorMap, 5, 11, 4), + tokenizeLineToHTML(text, lineTokens, colorMap, 5, 11, 4, true), [ '
', 'hello', @@ -176,7 +176,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { ); assert.equal( - tokenizeLineToHTML(text, lineTokens, colorMap, 5, 10, 4), + tokenizeLineToHTML(text, lineTokens, colorMap, 5, 10, 4, true), [ '
', 'hello', @@ -185,7 +185,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { ); assert.equal( - tokenizeLineToHTML(text, lineTokens, colorMap, 6, 9, 4), + tokenizeLineToHTML(text, lineTokens, colorMap, 6, 9, 4, true), [ '
', 'ell', @@ -238,7 +238,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { const colorMap = [null!, '#000000', '#ffffff', '#ff0000', '#00ff00', '#0000ff']; assert.equal( - tokenizeLineToHTML(text, lineTokens, colorMap, 0, 21, 4), + tokenizeLineToHTML(text, lineTokens, colorMap, 0, 21, 4, true), [ '
', '  ', @@ -252,7 +252,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { ); assert.equal( - tokenizeLineToHTML(text, lineTokens, colorMap, 0, 17, 4), + tokenizeLineToHTML(text, lineTokens, colorMap, 0, 17, 4, true), [ '
', '  ', @@ -266,7 +266,7 @@ suite('Editor Modes - textToHtmlTokenizer', () => { ); assert.equal( - tokenizeLineToHTML(text, lineTokens, colorMap, 0, 3, 4), + tokenizeLineToHTML(text, lineTokens, colorMap, 0, 3, 4, true), [ '
', '  ', -- GitLab