Path: blob/main/src/vs/editor/test/browser/config/editorLayoutProvider.test.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import assert from 'assert';6import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';7import { ComputedEditorOptions } from '../../../browser/config/editorConfiguration.js';8import { EditorLayoutInfo, EditorLayoutInfoComputer, EditorMinimapOptions, EditorOption, EditorOptions, InternalEditorRenderLineNumbersOptions, InternalEditorScrollbarOptions, RenderLineNumbersType, RenderMinimap } from '../../../common/config/editorOptions.js';910interface IEditorLayoutProviderOpts {11readonly outerWidth: number;12readonly outerHeight: number;1314readonly showGlyphMargin: boolean;15readonly lineHeight: number;1617readonly showLineNumbers: boolean;18readonly lineNumbersMinChars: number;19readonly lineNumbersDigitCount: number;20maxLineNumber?: number;2122readonly lineDecorationsWidth: number;2324readonly typicalHalfwidthCharacterWidth: number;25readonly maxDigitWidth: number;2627readonly verticalScrollbarWidth: number;28readonly verticalScrollbarHasArrows: boolean;29readonly scrollbarArrowSize: number;30readonly horizontalScrollbarHeight: number;3132readonly minimap: boolean;33readonly minimapSide: 'left' | 'right';34readonly minimapRenderCharacters: boolean;35readonly minimapMaxColumn: number;36minimapSize?: 'proportional' | 'fill' | 'fit';37readonly pixelRatio: number;38}3940suite('Editor ViewLayout - EditorLayoutProvider', () => {4142ensureNoDisposablesAreLeakedInTestSuite();4344function doTest(input: IEditorLayoutProviderOpts, expected: EditorLayoutInfo): void {45const options = new ComputedEditorOptions();46options._write(EditorOption.glyphMargin, input.showGlyphMargin);47options._write(EditorOption.lineNumbersMinChars, input.lineNumbersMinChars);48options._write(EditorOption.lineDecorationsWidth, input.lineDecorationsWidth);49options._write(EditorOption.folding, false);50options._write(EditorOption.padding, { top: 0, bottom: 0 });51const minimapOptions: EditorMinimapOptions = {52enabled: input.minimap,53autohide: 'none',54size: input.minimapSize || 'proportional',55side: input.minimapSide,56renderCharacters: input.minimapRenderCharacters,57maxColumn: input.minimapMaxColumn,58showSlider: 'mouseover',59scale: 1,60showRegionSectionHeaders: true,61showMarkSectionHeaders: true,62sectionHeaderFontSize: 9,63sectionHeaderLetterSpacing: 1,64markSectionHeaderRegex: '\\bMARK:\\s*(?<separator>\-?)\\s*(?<label>.*)$',65};66options._write(EditorOption.minimap, minimapOptions);67const scrollbarOptions: InternalEditorScrollbarOptions = {68arrowSize: input.scrollbarArrowSize,69vertical: EditorOptions.scrollbar.defaultValue.vertical,70horizontal: EditorOptions.scrollbar.defaultValue.horizontal,71useShadows: EditorOptions.scrollbar.defaultValue.useShadows,72verticalHasArrows: input.verticalScrollbarHasArrows,73horizontalHasArrows: false,74handleMouseWheel: EditorOptions.scrollbar.defaultValue.handleMouseWheel,75alwaysConsumeMouseWheel: true,76horizontalScrollbarSize: input.horizontalScrollbarHeight,77horizontalSliderSize: EditorOptions.scrollbar.defaultValue.horizontalSliderSize,78verticalScrollbarSize: input.verticalScrollbarWidth,79verticalSliderSize: EditorOptions.scrollbar.defaultValue.verticalSliderSize,80scrollByPage: EditorOptions.scrollbar.defaultValue.scrollByPage,81ignoreHorizontalScrollbarInContentHeight: false,82};83options._write(EditorOption.scrollbar, scrollbarOptions);84const lineNumbersOptions: InternalEditorRenderLineNumbersOptions = {85renderType: input.showLineNumbers ? RenderLineNumbersType.On : RenderLineNumbersType.Off,86renderFn: null87};88options._write(EditorOption.lineNumbers, lineNumbersOptions);8990options._write(EditorOption.wordWrap, 'off');91options._write(EditorOption.wordWrapColumn, 80);92options._write(EditorOption.wordWrapOverride1, 'inherit');93options._write(EditorOption.wordWrapOverride2, 'inherit');94options._write(EditorOption.accessibilitySupport, 'auto');9596const actual = EditorLayoutInfoComputer.computeLayout(options, {97memory: null,98outerWidth: input.outerWidth,99outerHeight: input.outerHeight,100isDominatedByLongLines: false,101lineHeight: input.lineHeight,102viewLineCount: input.maxLineNumber || Math.pow(10, input.lineNumbersDigitCount) - 1,103lineNumbersDigitCount: input.lineNumbersDigitCount,104typicalHalfwidthCharacterWidth: input.typicalHalfwidthCharacterWidth,105maxDigitWidth: input.maxDigitWidth,106pixelRatio: input.pixelRatio,107glyphMarginDecorationLaneCount: 1,108});109assert.deepStrictEqual(actual, expected);110}111112test('EditorLayoutProvider 1', () => {113doTest({114outerWidth: 1000,115outerHeight: 800,116showGlyphMargin: false,117lineHeight: 16,118showLineNumbers: false,119lineNumbersMinChars: 0,120lineNumbersDigitCount: 1,121lineDecorationsWidth: 10,122typicalHalfwidthCharacterWidth: 10,123maxDigitWidth: 10,124verticalScrollbarWidth: 0,125horizontalScrollbarHeight: 0,126scrollbarArrowSize: 0,127verticalScrollbarHasArrows: false,128minimap: false,129minimapSide: 'right',130minimapRenderCharacters: true,131minimapMaxColumn: 150,132pixelRatio: 1,133}, {134width: 1000,135height: 800,136137glyphMarginLeft: 0,138glyphMarginWidth: 0,139glyphMarginDecorationLaneCount: 1,140141lineNumbersLeft: 0,142lineNumbersWidth: 0,143144decorationsLeft: 0,145decorationsWidth: 10,146147contentLeft: 10,148contentWidth: 990,149150minimap: {151renderMinimap: RenderMinimap.None,152minimapLeft: 0,153minimapWidth: 0,154minimapHeightIsEditorHeight: false,155minimapIsSampling: false,156minimapScale: 1,157minimapLineHeight: 1,158minimapCanvasInnerWidth: 0,159minimapCanvasInnerHeight: 800,160minimapCanvasOuterWidth: 0,161minimapCanvasOuterHeight: 800,162},163164viewportColumn: 98,165isWordWrapMinified: false,166isViewportWrapping: false,167wrappingColumn: -1,168169verticalScrollbarWidth: 0,170horizontalScrollbarHeight: 0,171172overviewRuler: {173top: 0,174width: 0,175height: 800,176right: 0177}178});179});180181test('EditorLayoutProvider 1.1', () => {182doTest({183outerWidth: 1000,184outerHeight: 800,185showGlyphMargin: false,186lineHeight: 16,187showLineNumbers: false,188lineNumbersMinChars: 0,189lineNumbersDigitCount: 1,190lineDecorationsWidth: 10,191typicalHalfwidthCharacterWidth: 10,192maxDigitWidth: 10,193verticalScrollbarWidth: 11,194horizontalScrollbarHeight: 12,195scrollbarArrowSize: 13,196verticalScrollbarHasArrows: true,197minimap: false,198minimapSide: 'right',199minimapRenderCharacters: true,200minimapMaxColumn: 150,201pixelRatio: 1,202}, {203width: 1000,204height: 800,205206glyphMarginLeft: 0,207glyphMarginWidth: 0,208glyphMarginDecorationLaneCount: 1,209210lineNumbersLeft: 0,211lineNumbersWidth: 0,212213decorationsLeft: 0,214decorationsWidth: 10,215216contentLeft: 10,217contentWidth: 990,218219minimap: {220renderMinimap: RenderMinimap.None,221minimapLeft: 0,222minimapWidth: 0,223minimapHeightIsEditorHeight: false,224minimapIsSampling: false,225minimapScale: 1,226minimapLineHeight: 1,227minimapCanvasInnerWidth: 0,228minimapCanvasInnerHeight: 800,229minimapCanvasOuterWidth: 0,230minimapCanvasOuterHeight: 800,231},232233viewportColumn: 97,234isWordWrapMinified: false,235isViewportWrapping: false,236wrappingColumn: -1,237238verticalScrollbarWidth: 11,239horizontalScrollbarHeight: 12,240241overviewRuler: {242top: 13,243width: 11,244height: (800 - 2 * 13),245right: 0246}247});248});249250test('EditorLayoutProvider 2', () => {251doTest({252outerWidth: 900,253outerHeight: 800,254showGlyphMargin: false,255lineHeight: 16,256showLineNumbers: false,257lineNumbersMinChars: 0,258lineNumbersDigitCount: 1,259lineDecorationsWidth: 10,260typicalHalfwidthCharacterWidth: 10,261maxDigitWidth: 10,262verticalScrollbarWidth: 0,263horizontalScrollbarHeight: 0,264scrollbarArrowSize: 0,265verticalScrollbarHasArrows: false,266minimap: false,267minimapSide: 'right',268minimapRenderCharacters: true,269minimapMaxColumn: 150,270pixelRatio: 1,271}, {272width: 900,273height: 800,274275glyphMarginLeft: 0,276glyphMarginWidth: 0,277glyphMarginDecorationLaneCount: 1,278279lineNumbersLeft: 0,280lineNumbersWidth: 0,281282decorationsLeft: 0,283decorationsWidth: 10,284285contentLeft: 10,286contentWidth: 890,287288minimap: {289renderMinimap: RenderMinimap.None,290minimapLeft: 0,291minimapWidth: 0,292minimapHeightIsEditorHeight: false,293minimapIsSampling: false,294minimapScale: 1,295minimapLineHeight: 1,296minimapCanvasInnerWidth: 0,297minimapCanvasInnerHeight: 800,298minimapCanvasOuterWidth: 0,299minimapCanvasOuterHeight: 800,300},301302viewportColumn: 88,303isWordWrapMinified: false,304isViewportWrapping: false,305wrappingColumn: -1,306307verticalScrollbarWidth: 0,308horizontalScrollbarHeight: 0,309310overviewRuler: {311top: 0,312width: 0,313height: 800,314right: 0315}316});317});318319test('EditorLayoutProvider 3', () => {320doTest({321outerWidth: 900,322outerHeight: 900,323showGlyphMargin: false,324lineHeight: 16,325showLineNumbers: false,326lineNumbersMinChars: 0,327lineNumbersDigitCount: 1,328lineDecorationsWidth: 10,329typicalHalfwidthCharacterWidth: 10,330maxDigitWidth: 10,331verticalScrollbarWidth: 0,332horizontalScrollbarHeight: 0,333scrollbarArrowSize: 0,334verticalScrollbarHasArrows: false,335minimap: false,336minimapSide: 'right',337minimapRenderCharacters: true,338minimapMaxColumn: 150,339pixelRatio: 1,340}, {341width: 900,342height: 900,343344glyphMarginLeft: 0,345glyphMarginWidth: 0,346glyphMarginDecorationLaneCount: 1,347348lineNumbersLeft: 0,349lineNumbersWidth: 0,350351decorationsLeft: 0,352decorationsWidth: 10,353354contentLeft: 10,355contentWidth: 890,356357minimap: {358renderMinimap: RenderMinimap.None,359minimapLeft: 0,360minimapWidth: 0,361minimapHeightIsEditorHeight: false,362minimapIsSampling: false,363minimapScale: 1,364minimapLineHeight: 1,365minimapCanvasInnerWidth: 0,366minimapCanvasInnerHeight: 900,367minimapCanvasOuterWidth: 0,368minimapCanvasOuterHeight: 900,369},370371viewportColumn: 88,372isWordWrapMinified: false,373isViewportWrapping: false,374wrappingColumn: -1,375376verticalScrollbarWidth: 0,377horizontalScrollbarHeight: 0,378379overviewRuler: {380top: 0,381width: 0,382height: 900,383right: 0384}385});386});387388test('EditorLayoutProvider 4', () => {389doTest({390outerWidth: 900,391outerHeight: 900,392showGlyphMargin: false,393lineHeight: 16,394showLineNumbers: false,395lineNumbersMinChars: 5,396lineNumbersDigitCount: 1,397lineDecorationsWidth: 10,398typicalHalfwidthCharacterWidth: 10,399maxDigitWidth: 10,400verticalScrollbarWidth: 0,401horizontalScrollbarHeight: 0,402scrollbarArrowSize: 0,403verticalScrollbarHasArrows: false,404minimap: false,405minimapSide: 'right',406minimapRenderCharacters: true,407minimapMaxColumn: 150,408pixelRatio: 1,409}, {410width: 900,411height: 900,412413glyphMarginLeft: 0,414glyphMarginWidth: 0,415glyphMarginDecorationLaneCount: 1,416417lineNumbersLeft: 0,418lineNumbersWidth: 0,419420decorationsLeft: 0,421decorationsWidth: 10,422423contentLeft: 10,424contentWidth: 890,425426minimap: {427renderMinimap: RenderMinimap.None,428minimapLeft: 0,429minimapWidth: 0,430minimapHeightIsEditorHeight: false,431minimapIsSampling: false,432minimapScale: 1,433minimapLineHeight: 1,434minimapCanvasInnerWidth: 0,435minimapCanvasInnerHeight: 900,436minimapCanvasOuterWidth: 0,437minimapCanvasOuterHeight: 900,438},439440viewportColumn: 88,441isWordWrapMinified: false,442isViewportWrapping: false,443wrappingColumn: -1,444445verticalScrollbarWidth: 0,446horizontalScrollbarHeight: 0,447448overviewRuler: {449top: 0,450width: 0,451height: 900,452right: 0453}454});455});456457test('EditorLayoutProvider 5', () => {458doTest({459outerWidth: 900,460outerHeight: 900,461showGlyphMargin: false,462lineHeight: 16,463showLineNumbers: true,464lineNumbersMinChars: 5,465lineNumbersDigitCount: 1,466lineDecorationsWidth: 10,467typicalHalfwidthCharacterWidth: 10,468maxDigitWidth: 10,469verticalScrollbarWidth: 0,470horizontalScrollbarHeight: 0,471scrollbarArrowSize: 0,472verticalScrollbarHasArrows: false,473minimap: false,474minimapSide: 'right',475minimapRenderCharacters: true,476minimapMaxColumn: 150,477pixelRatio: 1,478}, {479width: 900,480height: 900,481482glyphMarginLeft: 0,483glyphMarginWidth: 0,484glyphMarginDecorationLaneCount: 1,485486lineNumbersLeft: 0,487lineNumbersWidth: 50,488489decorationsLeft: 50,490decorationsWidth: 10,491492contentLeft: 60,493contentWidth: 840,494495minimap: {496renderMinimap: RenderMinimap.None,497minimapLeft: 0,498minimapWidth: 0,499minimapHeightIsEditorHeight: false,500minimapIsSampling: false,501minimapScale: 1,502minimapLineHeight: 1,503minimapCanvasInnerWidth: 0,504minimapCanvasInnerHeight: 900,505minimapCanvasOuterWidth: 0,506minimapCanvasOuterHeight: 900,507},508509viewportColumn: 83,510isWordWrapMinified: false,511isViewportWrapping: false,512wrappingColumn: -1,513514verticalScrollbarWidth: 0,515horizontalScrollbarHeight: 0,516517overviewRuler: {518top: 0,519width: 0,520height: 900,521right: 0522}523});524});525526test('EditorLayoutProvider 6', () => {527doTest({528outerWidth: 900,529outerHeight: 900,530showGlyphMargin: false,531lineHeight: 16,532showLineNumbers: true,533lineNumbersMinChars: 5,534lineNumbersDigitCount: 5,535lineDecorationsWidth: 10,536typicalHalfwidthCharacterWidth: 10,537maxDigitWidth: 10,538verticalScrollbarWidth: 0,539horizontalScrollbarHeight: 0,540scrollbarArrowSize: 0,541verticalScrollbarHasArrows: false,542minimap: false,543minimapSide: 'right',544minimapRenderCharacters: true,545minimapMaxColumn: 150,546pixelRatio: 1,547}, {548width: 900,549height: 900,550551glyphMarginLeft: 0,552glyphMarginWidth: 0,553glyphMarginDecorationLaneCount: 1,554555lineNumbersLeft: 0,556lineNumbersWidth: 50,557558decorationsLeft: 50,559decorationsWidth: 10,560561contentLeft: 60,562contentWidth: 840,563564minimap: {565renderMinimap: RenderMinimap.None,566minimapLeft: 0,567minimapWidth: 0,568minimapHeightIsEditorHeight: false,569minimapIsSampling: false,570minimapScale: 1,571minimapLineHeight: 1,572minimapCanvasInnerWidth: 0,573minimapCanvasInnerHeight: 900,574minimapCanvasOuterWidth: 0,575minimapCanvasOuterHeight: 900,576},577578viewportColumn: 83,579isWordWrapMinified: false,580isViewportWrapping: false,581wrappingColumn: -1,582583verticalScrollbarWidth: 0,584horizontalScrollbarHeight: 0,585586overviewRuler: {587top: 0,588width: 0,589height: 900,590right: 0591}592});593});594595test('EditorLayoutProvider 7', () => {596doTest({597outerWidth: 900,598outerHeight: 900,599showGlyphMargin: false,600lineHeight: 16,601showLineNumbers: true,602lineNumbersMinChars: 5,603lineNumbersDigitCount: 6,604lineDecorationsWidth: 10,605typicalHalfwidthCharacterWidth: 10,606maxDigitWidth: 10,607verticalScrollbarWidth: 0,608horizontalScrollbarHeight: 0,609scrollbarArrowSize: 0,610verticalScrollbarHasArrows: false,611minimap: false,612minimapSide: 'right',613minimapRenderCharacters: true,614minimapMaxColumn: 150,615pixelRatio: 1,616}, {617width: 900,618height: 900,619620glyphMarginLeft: 0,621glyphMarginWidth: 0,622glyphMarginDecorationLaneCount: 1,623624lineNumbersLeft: 0,625lineNumbersWidth: 60,626627decorationsLeft: 60,628decorationsWidth: 10,629630contentLeft: 70,631contentWidth: 830,632633minimap: {634renderMinimap: RenderMinimap.None,635minimapLeft: 0,636minimapWidth: 0,637minimapHeightIsEditorHeight: false,638minimapIsSampling: false,639minimapScale: 1,640minimapLineHeight: 1,641minimapCanvasInnerWidth: 0,642minimapCanvasInnerHeight: 900,643minimapCanvasOuterWidth: 0,644minimapCanvasOuterHeight: 900,645},646647viewportColumn: 82,648isWordWrapMinified: false,649isViewportWrapping: false,650wrappingColumn: -1,651652verticalScrollbarWidth: 0,653horizontalScrollbarHeight: 0,654655overviewRuler: {656top: 0,657width: 0,658height: 900,659right: 0660}661});662});663664test('EditorLayoutProvider 8', () => {665doTest({666outerWidth: 900,667outerHeight: 900,668showGlyphMargin: false,669lineHeight: 16,670showLineNumbers: true,671lineNumbersMinChars: 5,672lineNumbersDigitCount: 6,673lineDecorationsWidth: 10,674typicalHalfwidthCharacterWidth: 5,675maxDigitWidth: 5,676verticalScrollbarWidth: 0,677horizontalScrollbarHeight: 0,678scrollbarArrowSize: 0,679verticalScrollbarHasArrows: false,680minimap: false,681minimapSide: 'right',682minimapRenderCharacters: true,683minimapMaxColumn: 150,684pixelRatio: 1,685}, {686width: 900,687height: 900,688689glyphMarginLeft: 0,690glyphMarginWidth: 0,691glyphMarginDecorationLaneCount: 1,692693lineNumbersLeft: 0,694lineNumbersWidth: 30,695696decorationsLeft: 30,697decorationsWidth: 10,698699contentLeft: 40,700contentWidth: 860,701702minimap: {703renderMinimap: RenderMinimap.None,704minimapLeft: 0,705minimapWidth: 0,706minimapHeightIsEditorHeight: false,707minimapIsSampling: false,708minimapScale: 1,709minimapLineHeight: 1,710minimapCanvasInnerWidth: 0,711minimapCanvasInnerHeight: 900,712minimapCanvasOuterWidth: 0,713minimapCanvasOuterHeight: 900,714},715716viewportColumn: 171,717isWordWrapMinified: false,718isViewportWrapping: false,719wrappingColumn: -1,720721verticalScrollbarWidth: 0,722horizontalScrollbarHeight: 0,723724overviewRuler: {725top: 0,726width: 0,727height: 900,728right: 0729}730});731});732733test('EditorLayoutProvider 8 - rounds floats', () => {734doTest({735outerWidth: 900,736outerHeight: 900,737showGlyphMargin: false,738lineHeight: 16,739showLineNumbers: true,740lineNumbersMinChars: 5,741lineNumbersDigitCount: 6,742lineDecorationsWidth: 10,743typicalHalfwidthCharacterWidth: 5.05,744maxDigitWidth: 5.05,745verticalScrollbarWidth: 0,746horizontalScrollbarHeight: 0,747scrollbarArrowSize: 0,748verticalScrollbarHasArrows: false,749minimap: false,750minimapSide: 'right',751minimapRenderCharacters: true,752minimapMaxColumn: 150,753pixelRatio: 1,754}, {755width: 900,756height: 900,757758glyphMarginLeft: 0,759glyphMarginWidth: 0,760glyphMarginDecorationLaneCount: 1,761762lineNumbersLeft: 0,763lineNumbersWidth: 30,764765decorationsLeft: 30,766decorationsWidth: 10,767768contentLeft: 40,769contentWidth: 860,770771minimap: {772renderMinimap: RenderMinimap.None,773minimapLeft: 0,774minimapWidth: 0,775minimapHeightIsEditorHeight: false,776minimapIsSampling: false,777minimapScale: 1,778minimapLineHeight: 1,779minimapCanvasInnerWidth: 0,780minimapCanvasInnerHeight: 900,781minimapCanvasOuterWidth: 0,782minimapCanvasOuterHeight: 900,783},784785viewportColumn: 169,786isWordWrapMinified: false,787isViewportWrapping: false,788wrappingColumn: -1,789790verticalScrollbarWidth: 0,791horizontalScrollbarHeight: 0,792793overviewRuler: {794top: 0,795width: 0,796height: 900,797right: 0798}799});800});801802test('EditorLayoutProvider 9 - render minimap', () => {803doTest({804outerWidth: 1000,805outerHeight: 800,806showGlyphMargin: false,807lineHeight: 16,808showLineNumbers: false,809lineNumbersMinChars: 0,810lineNumbersDigitCount: 1,811lineDecorationsWidth: 10,812typicalHalfwidthCharacterWidth: 10,813maxDigitWidth: 10,814verticalScrollbarWidth: 0,815horizontalScrollbarHeight: 0,816scrollbarArrowSize: 0,817verticalScrollbarHasArrows: false,818minimap: true,819minimapSide: 'right',820minimapRenderCharacters: true,821minimapMaxColumn: 150,822pixelRatio: 1,823}, {824width: 1000,825height: 800,826827glyphMarginLeft: 0,828glyphMarginWidth: 0,829glyphMarginDecorationLaneCount: 1,830831lineNumbersLeft: 0,832lineNumbersWidth: 0,833834decorationsLeft: 0,835decorationsWidth: 10,836837contentLeft: 10,838contentWidth: 893,839840minimap: {841renderMinimap: RenderMinimap.Text,842minimapLeft: 903,843minimapWidth: 97,844minimapHeightIsEditorHeight: false,845minimapIsSampling: false,846minimapScale: 1,847minimapLineHeight: 2,848minimapCanvasInnerWidth: 97,849minimapCanvasInnerHeight: 800,850minimapCanvasOuterWidth: 97,851minimapCanvasOuterHeight: 800,852},853854viewportColumn: 89,855isWordWrapMinified: false,856isViewportWrapping: false,857wrappingColumn: -1,858859verticalScrollbarWidth: 0,860horizontalScrollbarHeight: 0,861862overviewRuler: {863top: 0,864width: 0,865height: 800,866right: 0867}868});869});870871test('EditorLayoutProvider 9 - render minimap with pixelRatio = 2', () => {872doTest({873outerWidth: 1000,874outerHeight: 800,875showGlyphMargin: false,876lineHeight: 16,877showLineNumbers: false,878lineNumbersMinChars: 0,879lineNumbersDigitCount: 1,880lineDecorationsWidth: 10,881typicalHalfwidthCharacterWidth: 10,882maxDigitWidth: 10,883verticalScrollbarWidth: 0,884horizontalScrollbarHeight: 0,885scrollbarArrowSize: 0,886verticalScrollbarHasArrows: false,887minimap: true,888minimapSide: 'right',889minimapRenderCharacters: true,890minimapMaxColumn: 150,891pixelRatio: 2,892}, {893width: 1000,894height: 800,895896glyphMarginLeft: 0,897glyphMarginWidth: 0,898glyphMarginDecorationLaneCount: 1,899900lineNumbersLeft: 0,901lineNumbersWidth: 0,902903decorationsLeft: 0,904decorationsWidth: 10,905906contentLeft: 10,907contentWidth: 893,908909minimap: {910renderMinimap: RenderMinimap.Text,911minimapLeft: 903,912minimapWidth: 97,913minimapHeightIsEditorHeight: false,914minimapIsSampling: false,915minimapScale: 2,916minimapLineHeight: 4,917minimapCanvasInnerWidth: 194,918minimapCanvasInnerHeight: 1600,919minimapCanvasOuterWidth: 97,920minimapCanvasOuterHeight: 800,921},922923viewportColumn: 89,924isWordWrapMinified: false,925isViewportWrapping: false,926wrappingColumn: -1,927928verticalScrollbarWidth: 0,929horizontalScrollbarHeight: 0,930931overviewRuler: {932top: 0,933width: 0,934height: 800,935right: 0936}937});938});939940test('EditorLayoutProvider 9 - render minimap with pixelRatio = 4', () => {941doTest({942outerWidth: 1000,943outerHeight: 800,944showGlyphMargin: false,945lineHeight: 16,946showLineNumbers: false,947lineNumbersMinChars: 0,948lineNumbersDigitCount: 1,949lineDecorationsWidth: 10,950typicalHalfwidthCharacterWidth: 10,951maxDigitWidth: 10,952verticalScrollbarWidth: 0,953horizontalScrollbarHeight: 0,954scrollbarArrowSize: 0,955verticalScrollbarHasArrows: false,956minimap: true,957minimapSide: 'right',958minimapRenderCharacters: true,959minimapMaxColumn: 150,960pixelRatio: 4,961}, {962width: 1000,963height: 800,964965glyphMarginLeft: 0,966glyphMarginWidth: 0,967glyphMarginDecorationLaneCount: 1,968969lineNumbersLeft: 0,970lineNumbersWidth: 0,971972decorationsLeft: 0,973decorationsWidth: 10,974975contentLeft: 10,976contentWidth: 935,977978minimap: {979renderMinimap: RenderMinimap.Text,980minimapLeft: 945,981minimapWidth: 55,982minimapHeightIsEditorHeight: false,983minimapIsSampling: false,984minimapScale: 2,985minimapLineHeight: 4,986minimapCanvasInnerWidth: 220,987minimapCanvasInnerHeight: 3200,988minimapCanvasOuterWidth: 55,989minimapCanvasOuterHeight: 800,990},991992viewportColumn: 93,993isWordWrapMinified: false,994isViewportWrapping: false,995wrappingColumn: -1,996997verticalScrollbarWidth: 0,998horizontalScrollbarHeight: 0,9991000overviewRuler: {1001top: 0,1002width: 0,1003height: 800,1004right: 01005}1006});1007});10081009test('EditorLayoutProvider 10 - render minimap to left', () => {1010doTest({1011outerWidth: 1000,1012outerHeight: 800,1013showGlyphMargin: false,1014lineHeight: 16,1015showLineNumbers: false,1016lineNumbersMinChars: 0,1017lineNumbersDigitCount: 1,1018lineDecorationsWidth: 10,1019typicalHalfwidthCharacterWidth: 10,1020maxDigitWidth: 10,1021verticalScrollbarWidth: 0,1022horizontalScrollbarHeight: 0,1023scrollbarArrowSize: 0,1024verticalScrollbarHasArrows: false,1025minimap: true,1026minimapSide: 'left',1027minimapRenderCharacters: true,1028minimapMaxColumn: 150,1029pixelRatio: 4,1030}, {1031width: 1000,1032height: 800,10331034glyphMarginLeft: 55,1035glyphMarginWidth: 0,1036glyphMarginDecorationLaneCount: 1,10371038lineNumbersLeft: 55,1039lineNumbersWidth: 0,10401041decorationsLeft: 55,1042decorationsWidth: 10,10431044contentLeft: 65,1045contentWidth: 935,10461047minimap: {1048renderMinimap: RenderMinimap.Text,1049minimapLeft: 0,1050minimapWidth: 55,1051minimapHeightIsEditorHeight: false,1052minimapIsSampling: false,1053minimapScale: 2,1054minimapLineHeight: 4,1055minimapCanvasInnerWidth: 220,1056minimapCanvasInnerHeight: 3200,1057minimapCanvasOuterWidth: 55,1058minimapCanvasOuterHeight: 800,1059},10601061viewportColumn: 93,1062isWordWrapMinified: false,1063isViewportWrapping: false,1064wrappingColumn: -1,10651066verticalScrollbarWidth: 0,1067horizontalScrollbarHeight: 0,10681069overviewRuler: {1070top: 0,1071width: 0,1072height: 800,1073right: 01074}1075});1076});10771078test('EditorLayoutProvider 11 - minimap mode cover without sampling', () => {1079doTest({1080outerWidth: 1000,1081outerHeight: 800,1082showGlyphMargin: false,1083lineHeight: 16,1084showLineNumbers: false,1085lineNumbersMinChars: 0,1086lineNumbersDigitCount: 3,1087maxLineNumber: 120,1088lineDecorationsWidth: 10,1089typicalHalfwidthCharacterWidth: 10,1090maxDigitWidth: 10,1091verticalScrollbarWidth: 0,1092horizontalScrollbarHeight: 0,1093scrollbarArrowSize: 0,1094verticalScrollbarHasArrows: false,1095minimap: true,1096minimapSide: 'right',1097minimapRenderCharacters: true,1098minimapMaxColumn: 150,1099minimapSize: 'fill',1100pixelRatio: 2,1101}, {1102width: 1000,1103height: 800,11041105glyphMarginLeft: 0,1106glyphMarginWidth: 0,1107glyphMarginDecorationLaneCount: 1,11081109lineNumbersLeft: 0,1110lineNumbersWidth: 0,11111112decorationsLeft: 0,1113decorationsWidth: 10,11141115contentLeft: 10,1116contentWidth: 893,11171118minimap: {1119renderMinimap: RenderMinimap.Text,1120minimapLeft: 903,1121minimapWidth: 97,1122minimapHeightIsEditorHeight: true,1123minimapIsSampling: false,1124minimapScale: 3,1125minimapLineHeight: 13,1126minimapCanvasInnerWidth: 291,1127minimapCanvasInnerHeight: 1560,1128minimapCanvasOuterWidth: 97,1129minimapCanvasOuterHeight: 800,1130},11311132viewportColumn: 89,1133isWordWrapMinified: false,1134isViewportWrapping: false,1135wrappingColumn: -1,11361137verticalScrollbarWidth: 0,1138horizontalScrollbarHeight: 0,11391140overviewRuler: {1141top: 0,1142width: 0,1143height: 800,1144right: 01145}1146});1147});11481149test('EditorLayoutProvider 12 - minimap mode cover with sampling', () => {1150doTest({1151outerWidth: 1000,1152outerHeight: 800,1153showGlyphMargin: false,1154lineHeight: 16,1155showLineNumbers: false,1156lineNumbersMinChars: 0,1157lineNumbersDigitCount: 4,1158maxLineNumber: 2500,1159lineDecorationsWidth: 10,1160typicalHalfwidthCharacterWidth: 10,1161maxDigitWidth: 10,1162verticalScrollbarWidth: 0,1163horizontalScrollbarHeight: 0,1164scrollbarArrowSize: 0,1165verticalScrollbarHasArrows: false,1166minimap: true,1167minimapSide: 'right',1168minimapRenderCharacters: true,1169minimapMaxColumn: 150,1170minimapSize: 'fill',1171pixelRatio: 2,1172}, {1173width: 1000,1174height: 800,11751176glyphMarginLeft: 0,1177glyphMarginWidth: 0,1178glyphMarginDecorationLaneCount: 1,11791180lineNumbersLeft: 0,1181lineNumbersWidth: 0,11821183decorationsLeft: 0,1184decorationsWidth: 10,11851186contentLeft: 10,1187contentWidth: 935,11881189minimap: {1190renderMinimap: RenderMinimap.Text,1191minimapLeft: 945,1192minimapWidth: 55,1193minimapHeightIsEditorHeight: true,1194minimapIsSampling: true,1195minimapScale: 1,1196minimapLineHeight: 1,1197minimapCanvasInnerWidth: 110,1198minimapCanvasInnerHeight: 1600,1199minimapCanvasOuterWidth: 55,1200minimapCanvasOuterHeight: 800,1201},12021203viewportColumn: 93,1204isWordWrapMinified: false,1205isViewportWrapping: false,1206wrappingColumn: -1,12071208verticalScrollbarWidth: 0,1209horizontalScrollbarHeight: 0,12101211overviewRuler: {1212top: 0,1213width: 0,1214height: 800,1215right: 01216}1217});1218});12191220test('EditorLayoutProvider 13 - minimap mode contain without sampling', () => {1221doTest({1222outerWidth: 1000,1223outerHeight: 800,1224showGlyphMargin: false,1225lineHeight: 16,1226showLineNumbers: false,1227lineNumbersMinChars: 0,1228lineNumbersDigitCount: 3,1229maxLineNumber: 120,1230lineDecorationsWidth: 10,1231typicalHalfwidthCharacterWidth: 10,1232maxDigitWidth: 10,1233verticalScrollbarWidth: 0,1234horizontalScrollbarHeight: 0,1235scrollbarArrowSize: 0,1236verticalScrollbarHasArrows: false,1237minimap: true,1238minimapSide: 'right',1239minimapRenderCharacters: true,1240minimapMaxColumn: 150,1241minimapSize: 'fit',1242pixelRatio: 2,1243}, {1244width: 1000,1245height: 800,12461247glyphMarginLeft: 0,1248glyphMarginWidth: 0,1249glyphMarginDecorationLaneCount: 1,12501251lineNumbersLeft: 0,1252lineNumbersWidth: 0,12531254decorationsLeft: 0,1255decorationsWidth: 10,12561257contentLeft: 10,1258contentWidth: 893,12591260minimap: {1261renderMinimap: RenderMinimap.Text,1262minimapLeft: 903,1263minimapWidth: 97,1264minimapHeightIsEditorHeight: false,1265minimapIsSampling: false,1266minimapScale: 2,1267minimapLineHeight: 4,1268minimapCanvasInnerWidth: 194,1269minimapCanvasInnerHeight: 1600,1270minimapCanvasOuterWidth: 97,1271minimapCanvasOuterHeight: 800,1272},12731274viewportColumn: 89,1275isWordWrapMinified: false,1276isViewportWrapping: false,1277wrappingColumn: -1,12781279verticalScrollbarWidth: 0,1280horizontalScrollbarHeight: 0,12811282overviewRuler: {1283top: 0,1284width: 0,1285height: 800,1286right: 01287}1288});1289});12901291test('EditorLayoutProvider 14 - minimap mode contain with sampling', () => {1292doTest({1293outerWidth: 1000,1294outerHeight: 800,1295showGlyphMargin: false,1296lineHeight: 16,1297showLineNumbers: false,1298lineNumbersMinChars: 0,1299lineNumbersDigitCount: 4,1300maxLineNumber: 2500,1301lineDecorationsWidth: 10,1302typicalHalfwidthCharacterWidth: 10,1303maxDigitWidth: 10,1304verticalScrollbarWidth: 0,1305horizontalScrollbarHeight: 0,1306scrollbarArrowSize: 0,1307verticalScrollbarHasArrows: false,1308minimap: true,1309minimapSide: 'right',1310minimapRenderCharacters: true,1311minimapMaxColumn: 150,1312minimapSize: 'fit',1313pixelRatio: 2,1314}, {1315width: 1000,1316height: 800,13171318glyphMarginLeft: 0,1319glyphMarginWidth: 0,1320glyphMarginDecorationLaneCount: 1,13211322lineNumbersLeft: 0,1323lineNumbersWidth: 0,13241325decorationsLeft: 0,1326decorationsWidth: 10,13271328contentLeft: 10,1329contentWidth: 935,13301331minimap: {1332renderMinimap: RenderMinimap.Text,1333minimapLeft: 945,1334minimapWidth: 55,1335minimapHeightIsEditorHeight: true,1336minimapIsSampling: true,1337minimapScale: 1,1338minimapLineHeight: 1,1339minimapCanvasInnerWidth: 110,1340minimapCanvasInnerHeight: 1600,1341minimapCanvasOuterWidth: 55,1342minimapCanvasOuterHeight: 800,1343},13441345viewportColumn: 93,1346isWordWrapMinified: false,1347isViewportWrapping: false,1348wrappingColumn: -1,13491350verticalScrollbarWidth: 0,1351horizontalScrollbarHeight: 0,13521353overviewRuler: {1354top: 0,1355width: 0,1356height: 800,1357right: 01358}1359});1360});13611362test('issue #31312: When wrapping, leave 2px for the cursor', () => {1363doTest({1364outerWidth: 1201,1365outerHeight: 422,1366showGlyphMargin: true,1367lineHeight: 30,1368showLineNumbers: true,1369lineNumbersMinChars: 3,1370lineNumbersDigitCount: 1,1371lineDecorationsWidth: 26,1372typicalHalfwidthCharacterWidth: 12.04296875,1373maxDigitWidth: 12.04296875,1374verticalScrollbarWidth: 14,1375horizontalScrollbarHeight: 10,1376scrollbarArrowSize: 11,1377verticalScrollbarHasArrows: false,1378minimap: true,1379minimapSide: 'right',1380minimapRenderCharacters: true,1381minimapMaxColumn: 120,1382pixelRatio: 21383}, {1384width: 1201,1385height: 422,13861387glyphMarginLeft: 0,1388glyphMarginWidth: 30,1389glyphMarginDecorationLaneCount: 1,13901391lineNumbersLeft: 30,1392lineNumbersWidth: 36,13931394decorationsLeft: 66,1395decorationsWidth: 26,13961397contentLeft: 92,1398contentWidth: 1018,13991400minimap: {1401renderMinimap: RenderMinimap.Text,1402minimapLeft: 1096,1403minimapWidth: 91,1404minimapHeightIsEditorHeight: false,1405minimapIsSampling: false,1406minimapScale: 2,1407minimapLineHeight: 4,1408minimapCanvasInnerWidth: 182,1409minimapCanvasInnerHeight: 844,1410minimapCanvasOuterWidth: 91,1411minimapCanvasOuterHeight: 422,1412},14131414viewportColumn: 83,1415isWordWrapMinified: false,1416isViewportWrapping: false,1417wrappingColumn: -1,14181419verticalScrollbarWidth: 14,1420horizontalScrollbarHeight: 10,14211422overviewRuler: {1423top: 0,1424width: 14,1425height: 422,1426right: 01427}1428});14291430});1431});143214331434