readonly snippetSortOrder = SnippetSortOrder.Bottom, readonly kindFilter = new Set<modes.CompletionItemKind>(), readonly providerFilter = new Set<modes.CompletionItemProvider>(), <ins> readonly showDeprecated = true </ins> ) { } }


this.hideHoverScheduler.schedule(); } this.showHoverScheduler.cancel(); <ins> this.provideNonDebugHoverScheduler.cancel(); </ins> } // hover business


this._edits.push({ _type: FileEditType.File, from, to, options, metadata }); } <del> createFile(uri: vscode.Uri, options?: { overwrite?: boolean; ignoreIfExists?: boolean }, metadata?: vscode.WorkspaceEditEntryMetadata): void { </del> <ins> createFile(uri: vscode.Uri, options?: { overwrite?: boolean; ignoreIfExists?: boolean; contents?: Uint8Array }, metadata?: vscode.WorkspaceEditEntryMetadata): void { </ins> this._edits.push({ _type: FileEditType.File, from: undefined, to: uri, options, metadata }); }


const BUILD_TARGETS = [ { platform: 'win32', arch: 'x64' }, <ins> { platform: 'win32', arch: 'arm64' }, </ins> { platform: 'darwin', arch: 'x64' }, { platform: 'darwin', arch: 'arm64' }, { platform: 'linux', arch: 'x64' },


this.instantiationService.createInstance(InstallDropdownAction), this.instantiationService.createInstance(InstallingLabelAction), this.instantiationService.createInstance(SetLanguageAction), <ins> this.instantiationService.createInstance(ClearLanguageAction), </ins> this.instantiationService.createInstance(RemoteInstallAction, false), this.instantiationService.createInstance(LocalInstallAction), this.instantiationService.createInstance(WebInstallAction),


return; } <del> this.element.style.visibility = 'visible'; </del> <ins> this.element.style.visibility = ''; </ins> this.element.style.top = `${top}px`; dimensionUpdater.updateHeight(outputId, outputContainer.element.offsetHeight, {


} private async _getMediaFilesEdit(document: vscode.TextDocument, dataTransfer: vscode.DataTransfer, token: vscode.CancellationToken): Promise<vscode.DocumentDropEdit | undefined> { <del> if (document.uri.scheme === Schemes.untitled) { </del> <ins> if (getParentDocumentUri(document.uri).scheme === Schemes.untitled) { </ins> return; }


"yaml" ], "extensions": [ <ins> ".yaml", </ins> ".yml", ".eyaml", ".eyml", <del> ".yaml", </del> ".cff", ".yaml-tmlanguage", ".yaml-tmpreferences",


await this.model.pullWithRebase(); } <ins> @command('git.pullFrom') async pullFrom(): Promise<void> { const remotes = this.model.remotes; if (remotes.length === 0) { window.showWarningMessage(localize('no remotes to pull', "Your repository has no remotes configured to pull from.")); return; } if (!this.model.HEAD || !this.model.HEAD.name) { window.showWarningMessage(localize('nobranchToPull', "Please select branch.")); return; } const branchName = this.model.HEAD.name; const picks = remotes.map(r => ({ label: r.name, description: r.url })); const placeHolder = localize('pick remote pull', "Pick a remote to pull the branch '{0}' from:", branchName); const pick = await window.showQuickPick(picks, { placeHolder }); if (!pick) { return; } await this.model.pullFromRemote(pick.label, branchName); } </ins> @command('git.push') async push(): Promise<void> { const remotes = this.model.remotes;


const options: ITextQueryBuilderOptions = { _reason: 'searchEditor', extraFileResources: this.instantiationService.invokeFunction(getOutOfWorkspaceEditorResources), <del> maxResults: 10000, </del> <ins> maxResults: withNullAsUndefined(this.searchConfig.maxResults), </ins> disregardIgnoreFiles: !config.useExcludeSettingsAndIgnoreFiles || undefined, disregardExcludeSettings: !config.useExcludeSettingsAndIgnoreFiles || undefined, excludePattern: config.filesToExclude,


default: true }, 'accessibility.signalOptions': { <ins> description: 'Configures the behavior of signals (audio cues and announcements) in the workbench. Includes volume, debounce position changes, and delays for different types of signals.', </ins> type: 'object', additionalProperties: false, properties: {


} }); <ins> const disposables = new DisposableStore(); const input = disposables.add(this.quickInputService.createQuickPick<IDynamicPickItem>()); input.busy = true; input.placeholder = nls.localize('selectConfiguration', "Select Launch Configuration"); const chosenPromise = new Promise<IDynamicPickItem | undefined>(resolve => { disposables.add(input.onDidAccept(() => resolve(input.activeItems[0]))); disposables.add(input.onDidTriggerItemButton(async (context) => { resolve(undefined); const { launch, config } = context.item; await launch.openConfigFile({ preserveFocus: false, type: config.type, suppressInitialConfigs: true }); // Only Launch have a pin trigger button await (launch as Launch).writeConfiguration(config); await this.selectConfiguration(launch, config.name); this.removeRecentDynamicConfigurations(config.name, config.type); })); }); </ins> const nestedPicks = await Promise.all(picks); const items = flatten(nestedPicks); input.items = items; input.busy = false; <ins> input.show(); </ins> const chosen = await chosenPromise; disposables.dispose();


readonly extension: IExtensionDescription, ) { super(); <ins> this._register(logger.onDidChangeLogLevel(level => this.setLevel(level))); </ins> } appendLine(value: string): void {


import { derived, derivedObservableWithWritableCache, IObservable, IReader, ITransaction, observableFromEvent, observableValue, transaction } from 'vs/base/common/observable'; import { Range } from 'vs/editor/common/core/range'; import { ScrollType } from 'vs/editor/common/editorCommon'; <ins> import { localize } from 'vs/nls'; </ins> import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; <ins> import { INotificationService } from 'vs/platform/notification/common/notification'; </ins> import { LineRange } from 'vs/workbench/contrib/mergeEditor/browser/model/lineRange'; import { MergeEditorModel } from 'vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel'; import { ModifiedBaseRange, ModifiedBaseRangeState } from 'vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange';


<meta http-equiv="Content-Security-Policy" content=" default-src 'none'; child-src 'self' data: blob:; <del> script-src 'self' 'unsafe-eval' 'sha256-V28GQnL3aYxbwgpV3yW1oJ+VKKe/PBSzWntNyH8zVXA=' https: http://localhost:*; </del> <ins> script-src 'self' 'unsafe-eval' 'sha256-V28GQnL3aYxbwgpV3yW1oJ+VKKe/PBSzWntNyH8zVXA=' https: http://localhost:* blob:; </ins> connect-src 'self' https: wss: http://localhost:* http://127.0.0.1:* ws://localhost:* ws://127.0.0.1:*;"/> </head> <body>


// --- search --- <del> $startFileSearch(includePattern: string, _includeFolder: UriComponents | undefined, excludePatternOrDisregardExcludes: string | false, maxResults: number, token: CancellationToken): Promise<URI[] | undefined> { </del> <ins> $startFileSearch(includePattern: string, _includeFolder: UriComponents | undefined, excludePatternOrDisregardExcludes: string | false | undefined, maxResults: number, token: CancellationToken): Promise<URI[] | undefined> { </ins> const includeFolder = URI.revive(_includeFolder); const workspace = this._contextService.getWorkspace(); if (!workspace.folders.length) {


import { IPagedRenderer } from 'vs/base/browser/ui/list/listPaging'; import { Event } from 'vs/base/common/event'; import { IExtension, ExtensionContainers, ExtensionState, IExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/common/extensions'; <del> import { UpdateAction, ManageExtensionAction, ReloadAction, ExtensionStatusLabelAction, RemoteInstallAction, ExtensionStatusAction, LocalInstallAction, ActionWithDropDownAction, InstallDropdownAction, InstallingLabelAction, ExtensionActionWithDropdownActionViewItem, ExtensionDropDownAction, WebInstallAction, SwitchToPreReleaseVersionAction, SwitchToReleasedVersionAction, MigrateDeprecatedExtensionAction, SetLanguageAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; </del> <ins> import { UpdateAction, ManageExtensionAction, ReloadAction, ExtensionStatusLabelAction, RemoteInstallAction, ExtensionStatusAction, LocalInstallAction, ActionWithDropDownAction, InstallDropdownAction, InstallingLabelAction, ExtensionActionWithDropdownActionViewItem, ExtensionDropDownAction, WebInstallAction, SwitchToPreReleaseVersionAction, SwitchToReleasedVersionAction, MigrateDeprecatedExtensionAction, SetLanguageAction, ClearLanguageAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; </ins> import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { RatingsWidget, InstallCountWidget, RecommendationWidget, RemoteBadgeWidget, ExtensionPackCountWidget as ExtensionPackBadgeWidget, SyncIgnoredWidget, ExtensionHoverWidget, ExtensionActivationStatusWidget, PreReleaseBookmarkWidget, extensionVerifiedPublisherIconColor } from 'vs/workbench/contrib/extensions/browser/extensionsWidgets'; import { IExtensionService, toExtension } from 'vs/workbench/services/extensions/common/extensions';


optionalDependencies: "@vscode/windows-ca-certs" "^0.3.1" <del> "@vscode/ripgrep@^1.15.4": version "1.15.4" resolved "https://registry.yarnpkg.com/@vscode/ripgrep/-/ripgrep-1.15.4.tgz#ca8946b5580bbea1e706ed8d3b1eed5f0d551ab6" integrity sha512-+EPIS2aoD95MFLrgGHd/D2fck42aMRV2cBrT7BiNvKBeSyCTybSaTJ+PGQf6zV/95AhaXHHYqYPVRk3DZoGU9w== </del> <ins> "@vscode/ripgrep@^1.15.5": version "1.15.5" resolved "https://registry.yarnpkg.com/@vscode/ripgrep/-/ripgrep-1.15.5.tgz#26025884bbc3a8b40dfc29f5bda4b87b47bd7356" integrity sha512-PVvKNEmtnlek3i4MJMaB910dz46CKQqcIY2gKR3PSlfz/ZPlSYuSuyQMS7iK20KL4hGUdSbWt964B5S5EIojqw== </ins> dependencies: https-proxy-agent "^5.0.0" proxy-from-env "^1.1.0"


this._register(this.workingCopyService.onDidChangeDirty(workingCopy => this.dirtyWorkingCopiesContext.set(workingCopy.isDirty() || this.workingCopyService.hasDirty))); } <ins> private updateVisiblePanesContextKeys(): void { const visibleEditorPanes = this.editorService.visibleEditorPanes; if (visibleEditorPanes.length > 0) { this.editorsVisibleContext.set(true); } else { this.editorsVisibleContext.reset(); } } private updateEditorGroupContextKeys(): void { if (!this.editorService.activeEditor) { this.activeEditorGroupEmpty.set(true); } else { this.activeEditorGroupEmpty.reset(); } this.updateEditorGroupsContextKeys(); } private updateEditorGroupsContextKeys(): void { const groupCount = this.editorGroupService.count; if (groupCount > 1) { this.multipleEditorGroupsContext.set(true); } else { this.multipleEditorGroupsContext.reset(); } const activeGroup = this.editorGroupService.activeGroup; this.activeEditorGroupIndex.set(activeGroup.index + 1); // not zero-indexed this.activeEditorGroupLast.set(activeGroup.index === groupCount - 1); this.activeEditorGroupLocked.set(activeGroup.isLocked); } </ins> private updateEditorAreaContextKeys(): void { this.editorTabsVisibleContext.set(this.editorGroupService.partOptions.showTabs === 'multiple'); }


".css.map" ], "filenames": [ <ins> "composer.lock", </ins> ".watchmanconfig", ".ember-cli" ],


id: MenuId.EditorTitle, when: ctxIsMergeEditor, group: 'navigation', <ins> order: 2 </ins> }, ], f1: true,


this._commentThreadDisposables.push(this._commentThread.onDidChangeCollapsibleState(state => { if (state === languages.CommentThreadCollapsibleState.Expanded && !this._isExpanded) { this.show(this.arrowPosition(this._commentThread.range), 2); <ins> this._commentThreadWidget.ensureFocusIntoNewEditingComment(); </ins> return; }


.monaco-action-bar .action-item.disabled .action-label.extension-action.uninstall:not(.uninstalling), .monaco-action-bar .action-item.disabled .action-label.extension-action.hide-when-disabled, .monaco-action-bar .action-item.disabled .action-label.extension-action.update, <ins> .monaco-action-bar .action-item.disabled .action-label.extension-action.migrate, </ins> .monaco-action-bar .action-item.disabled .action-label.extension-action.theme, .monaco-action-bar .action-item.disabled .action-label.extension-action.extension-sync, .monaco-action-bar .action-item.action-dropdown-item.disabled,


return computeLinks(target); } <del> function extractLinks(text: string): string { const keep: boolean[] = []; const links = myComputeLinks([text]); for (const link of links) { const startChar = link.range.startColumn - 1; const endChar = link.range.endColumn - 1; for (let char = startChar; char < endChar; char++) { keep[char] = true; </del> <ins> function assertLink(text: string, extractedLink: string): void { let startColumn = 0, endColumn = 0, chr: string, i = 0; for (i = 0; i < extractedLink.length; i++) { chr = extractedLink.charAt(i); if (chr !== ' ' && chr !== 't') { startColumn = i + 1; break; </ins> } } <del> const result: string[] = []; for (let i = 0; i < text.length; i++) { if (keep[i]) { result.push(text.charAt(i)); } else { result.push(' '); </del> <ins> for (i = extractedLink.length - 1; i >= 0; i--) { chr = extractedLink.charAt(i); if (chr !== ' ' && chr !== 't') { endColumn = i + 2; break; </ins> } } <del> return result.join(''); } function assertLink(text: string, expectedLinks: string): void { assert.deepStrictEqual(extractLinks(text), expectedLinks); </del> <ins> const r = myComputeLinks([text]); assert.deepStrictEqual(r, [{ range: { startLineNumber: 1, startColumn: startColumn, endLineNumber: 1, endColumn: endColumn }, url: extractedLink.substring(startColumn - 1, endColumn - 1) }]); </ins> } suite('Editor Modes - Link Computer', () => {


<ins> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as marked from '../../../../base/common/marked/marked.js'; // Copied from https://github.com/Flet/github-slugger since we can't use esm yet. // eslint-disable-next-line no-control-regex, no-misleading-character-class const githubSlugReplaceRegex = /[0-x1F!-,./:-@[-^`{-xA9xAB-xB4xB6-xB9xBB-xBFxD7xF7u02C2-u02C5u02D2-u02DFu02E5-u02EBu02EDu02EF-u02FFu0375u0378u0379u037Eu0380-u0385u0387u038Bu038Du03A2u03F6u0482u0530u0557u0558u055A-u055Fu0589-u0590u05BEu05C0u05C3u05C6u05C8-u05CFu05EB-u05EEu05F3-u060Fu061B-u061Fu066A-u066Du06D4u06DDu06DEu06E9u06FDu06FEu0700-u070Fu074Bu074Cu07B2-u07BFu07F6-u07F9u07FBu07FCu07FEu07FFu082E-u083Fu085C-u085Fu086B-u089Fu08B5u08C8-u08D2u08E2u0964u0965u0970u0984u098Du098Eu0991u0992u09A9u09B1u09B3-u09B5u09BAu09BBu09C5u09C6u09C9u09CAu09CF-u09D6u09D8-u09DBu09DEu09E4u09E5u09F2-u09FBu09FDu09FFu0A00u0A04u0A0B-u0A0Eu0A11u0A12u0A29u0A31u0A34u0A37u0A3Au0A3Bu0A3Du0A43-u0A46u0A49u0A4Au0A4E-u0A50u0A52-u0A58u0A5Du0A5F-u0A65u0A76-u0A80u0A84u0A8Eu0A92u0AA9u0AB1u0AB4u0ABAu0ABBu0AC6u0ACAu0ACEu0ACFu0AD1-u0ADFu0AE4u0AE5u0AF0-u0AF8u0B00u0B04u0B0Du0B0Eu0B11u0B12u0B29u0B31u0B34u0B3Au0B3Bu0B45u0B46u0B49u0B4Au0B4E-u0B54u0B58-u0B5Bu0B5Eu0B64u0B65u0B70u0B72-u0B81u0B84u0B8B-u0B8Du0B91u0B96-u0B98u0B9Bu0B9Du0BA0-u0BA2u0BA5-u0BA7u0BAB-u0BADu0BBA-u0BBDu0BC3-u0BC5u0BC9u0BCEu0BCFu0BD1-u0BD6u0BD8-u0BE5u0BF0-u0BFFu0C0Du0C11u0C29u0C3A-u0C3Cu0C45u0C49u0C4E-u0C54u0C57u0C5B-u0C5Fu0C64u0C65u0C70-u0C7Fu0C84u0C8Du0C91u0CA9u0CB4u0CBAu0CBBu0CC5u0CC9u0CCE-u0CD4u0CD7-u0CDDu0CDFu0CE4u0CE5u0CF0u0CF3-u0CFFu0D0Du0D11u0D45u0D49u0D4F-u0D53u0D58-u0D5Eu0D64u0D65u0D70-u0D79u0D80u0D84u0D97-u0D99u0DB2u0DBCu0DBEu0DBFu0DC7-u0DC9u0DCB-u0DCEu0DD5u0DD7u0DE0-u0DE5u0DF0u0DF1u0DF4-u0E00u0E3B-u0E3Fu0E4Fu0E5A-u0E80u0E83u0E85u0E8Bu0EA4u0EA6u0EBEu0EBFu0EC5u0EC7u0ECEu0ECFu0EDAu0EDBu0EE0-u0EFFu0F01-u0F17u0F1A-u0F1Fu0F2A-u0F34u0F36u0F38u0F3A-u0F3Du0F48u0F6D-u0F70u0F85u0F98u0FBD-u0FC5u0FC7-u0FFFu104A-u104Fu109Eu109Fu10C6u10C8-u10CCu10CEu10CFu10FBu1249u124Eu124Fu1257u1259u125Eu125Fu1289u128Eu128Fu12B1u12B6u12B7u12BFu12C1u12C6u12C7u12D7u1311u1316u1317u135Bu135Cu1360-u137Fu1390-u139Fu13F6u13F7u13FE-u1400u166Du166Eu1680u169B-u169Fu16EB-u16EDu16F9-u16FFu170Du1715-u171Fu1735-u173Fu1754-u175Fu176Du1771u1774-u177Fu17D4-u17D6u17D8-u17DBu17DEu17DFu17EA-u180Au180Eu180Fu181A-u181Fu1879-u187Fu18AB-u18AFu18F6-u18FFu191Fu192C-u192Fu193C-u1945u196Eu196Fu1975-u197Fu19AC-u19AFu19CA-u19CFu19DA-u19FFu1A1C-u1A1Fu1A5Fu1A7Du1A7Eu1A8A-u1A8Fu1A9A-u1AA6u1AA8-u1AAFu1AC1-u1AFFu1B4C-u1B4Fu1B5A-u1B6Au1B74-u1B7Fu1BF4-u1BFFu1C38-u1C3Fu1C4A-u1C4Cu1C7Eu1C7Fu1C89-u1C8Fu1CBBu1CBCu1CC0-u1CCFu1CD3u1CFB-u1CFFu1DFAu1F16u1F17u1F1Eu1F1Fu1F46u1F47u1F4Eu1F4Fu1F58u1F5Au1F5Cu1F5Eu1F7Eu1F7Fu1FB5u1FBDu1FBF-u1FC1u1FC5u1FCD-u1FCFu1FD4u1FD5u1FDC-u1FDFu1FED-u1FF1u1FF5u1FFD-u203Eu2041-u2053u2055-u2070u2072-u207Eu2080-u208Fu209D-u20CFu20F1-u2101u2103-u2106u2108u2109u2114u2116-u2118u211E-u2123u2125u2127u2129u212Eu213Au213Bu2140-u2144u214A-u214Du214F-u215Fu2189-u24B5u24EA-u2BFFu2C2Fu2C5Fu2CE5-u2CEAu2CF4-u2CFFu2D26u2D28-u2D2Cu2D2Eu2D2Fu2D68-u2D6Eu2D70-u2D7Eu2D97-u2D9Fu2DA7u2DAFu2DB7u2DBFu2DC7u2DCFu2DD7u2DDFu2E00-u2E2Eu2E30-u3004u3008-u3020u3030u3036u3037u303D-u3040u3097u3098u309Bu309Cu30A0u30FBu3100-u3104u3130u318F-u319Fu31C0-u31EFu3200-u33FFu4DC0-u4DFFu9FFD-u9FFFuA48D-uA4CFuA4FEuA4FFuA60D-uA60FuA62C-uA63FuA673uA67EuA6F2-uA716uA720uA721uA789uA78AuA7C0uA7C1uA7CB-uA7F4uA828-uA82BuA82D-uA83FuA874-uA87FuA8C6-uA8CFuA8DA-uA8DFuA8F8-uA8FAuA8FCuA92EuA92FuA954-uA95FuA97D-uA97FuA9C1-uA9CEuA9DA-uA9DFuA9FFuAA37-uAA3FuAA4EuAA4FuAA5A-uAA5FuAA77-uAA79uAAC3-uAADAuAADEuAADFuAAF0uAAF1uAAF7-uAB00uAB07uAB08uAB0FuAB10uAB17-uAB1FuAB27uAB2FuAB5BuAB6A-uAB6FuABEBuABEEuABEFuABFA-uABFFuD7A4-uD7AFuD7C7-uD7CAuD7FC-uD7FFuE000-uF8FFuFA6EuFA6FuFADA-uFAFFuFB07-uFB12uFB18-uFB1CuFB29uFB37uFB3DuFB3FuFB42uFB45uFBB2-uFBD2uFD3E-uFD4FuFD90uFD91uFDC8-uFDEFuFDFC-uFDFFuFE10-uFE1FuFE30-uFE32uFE35-uFE4CuFE50-uFE6FuFE75uFEFD-uFF0FuFF1A-uFF20uFF3B-uFF3EuFF40uFF5B-uFF65uFFBF-uFFC1uFFC8uFFC9uFFD0uFFD1uFFD8uFFD9uFFDD-uFFFF]|uD800[uDC0CuDC27uDC3BuDC3EuDC4EuDC4FuDC5E-uDC7FuDCFB-uDD3FuDD75-uDDFCuDDFE-uDE7FuDE9D-uDE9FuDED1-uDEDFuDEE1-uDEFFuDF20-uDF2CuDF4B-uDF4FuDF7B-uDF7FuDF9EuDF9FuDFC4-uDFC7uDFD0uDFD6-uDFFF]|uD801[uDC9EuDC9FuDCAA-uDCAFuDCD4-uDCD7uDCFC-uDCFFuDD28-uDD2FuDD64-uDDFFuDF37-uDF3FuDF56-uDF5FuDF68-uDFFF]|uD802[uDC06uDC07uDC09uDC36uDC39-uDC3BuDC3DuDC3EuDC56-uDC5FuDC77-uDC7FuDC9F-uDCDFuDCF3uDCF6-uDCFFuDD16-uDD1FuDD3A-uDD7FuDDB8-uDDBDuDDC0-uDDFFuDE04uDE07-uDE0BuDE14uDE18uDE36uDE37uDE3B-uDE3EuDE40-uDE5FuDE7D-uDE7FuDE9D-uDEBFuDEC8uDEE7-uDEFFuDF36-uDF3FuDF56-uDF5FuDF73-uDF7FuDF92-uDFFF]|uD803[uDC49-uDC7FuDCB3-uDCBFuDCF3-uDCFFuDD28-uDD2FuDD3A-uDE7FuDEAAuDEAD-uDEAFuDEB2-uDEFFuDF1D-uDF26uDF28-uDF2FuDF51-uDFAFuDFC5-uDFDFuDFF7-uDFFF]|uD804[uDC47-uDC65uDC70-uDC7EuDCBB-uDCCFuDCE9-uDCEFuDCFA-uDCFFuDD35uDD40-uDD43uDD48-uDD4FuDD74uDD75uDD77-uDD7FuDDC5-uDDC8uDDCDuDDDBuDDDD-uDDFFuDE12uDE38-uDE3DuDE3F-uDE7FuDE87uDE89uDE8EuDE9EuDEA9-uDEAFuDEEB-uDEEFuDEFA-uDEFFuDF04uDF0DuDF0EuDF11uDF12uDF29uDF31uDF34uDF3AuDF45uDF46uDF49uDF4AuDF4EuDF4FuDF51-uDF56uDF58-uDF5CuDF64uDF65uDF6D-uDF6FuDF75-uDFFF]|uD805[uDC4B-uDC4FuDC5A-uDC5DuDC62-uDC7FuDCC6uDCC8-uDCCFuDCDA-uDD7FuDDB6uDDB7uDDC1-uDDD7uDDDE-uDDFFuDE41-uDE43uDE45-uDE4FuDE5A-uDE7FuDEB9-uDEBFuDECA-uDEFFuDF1BuDF1CuDF2C-uDF2FuDF3A-uDFFF]|uD806[uDC3B-uDC9FuDCEA-uDCFEuDD07uDD08uDD0AuDD0BuDD14uDD17uDD36uDD39uDD3AuDD44-uDD4FuDD5A-uDD9FuDDA8uDDA9uDDD8uDDD9uDDE2uDDE5-uDDFFuDE3F-uDE46uDE48-uDE4FuDE9A-uDE9CuDE9E-uDEBFuDEF9-uDFFF]|uD807[uDC09uDC37uDC41-uDC4FuDC5A-uDC71uDC90uDC91uDCA8uDCB7-uDCFFuDD07uDD0AuDD37-uDD39uDD3BuDD3EuDD48-uDD4FuDD5A-uDD5FuDD66uDD69uDD8FuDD92uDD99-uDD9FuDDAA-uDEDFuDEF7-uDFAFuDFB1-uDFFF]|uD808[uDF9A-uDFFF]|uD809[uDC6F-uDC7FuDD44-uDFFF]|[uD80AuD80BuD80E-uD810uD812-uD819uD824-uD82BuD82DuD82EuD830-uD833uD837uD839uD83DuD83FuD87B-uD87DuD87FuD885-uDB3FuDB41-uDBFF][uDC00-uDFFF]|uD80D[uDC2F-uDFFF]|uD811[uDE47-uDFFF]|uD81A[uDE39-uDE3FuDE5FuDE6A-uDECFuDEEEuDEEFuDEF5-uDEFFuDF37-uDF3FuDF44-uDF4FuDF5A-uDF62uDF78-uDF7CuDF90-uDFFF]|uD81B[uDC00-uDE3FuDE80-uDEFFuDF4B-uDF4EuDF88-uDF8EuDFA0-uDFDFuDFE2uDFE5-uDFEFuDFF2-uDFFF]|uD821[uDFF8-uDFFF]|uD823[uDCD6-uDCFFuDD09-uDFFF]|uD82C[uDD1F-uDD4FuDD53-uDD63uDD68-uDD6FuDEFC-uDFFF]|uD82F[uDC6B-uDC6FuDC7D-uDC7FuDC89-uDC8FuDC9A-uDC9CuDC9F-uDFFF]|uD834[uDC00-uDD64uDD6A-uDD6CuDD73-uDD7AuDD83uDD84uDD8C-uDDA9uDDAE-uDE41uDE45-uDFFF]|uD835[uDC55uDC9DuDCA0uDCA1uDCA3uDCA4uDCA7uDCA8uDCADuDCBAuDCBCuDCC4uDD06uDD0BuDD0CuDD15uDD1DuDD3AuDD3FuDD45uDD47-uDD49uDD51uDEA6uDEA7uDEC1uDEDBuDEFBuDF15uDF35uDF4FuDF6FuDF89uDFA9uDFC3uDFCCuDFCD]|uD836[uDC00-uDDFFuDE37-uDE3AuDE6D-uDE74uDE76-uDE83uDE85-uDE9AuDEA0uDEB0-uDFFF]|uD838[uDC07uDC19uDC1AuDC22uDC25uDC2B-uDCFFuDD2D-uDD2FuDD3EuDD3FuDD4A-uDD4DuDD4F-uDEBFuDEFA-uDFFF]|uD83A[uDCC5-uDCCFuDCD7-uDCFFuDD4C-uDD4FuDD5A-uDFFF]|uD83B[uDC00-uDDFFuDE04uDE20uDE23uDE25uDE26uDE28uDE33uDE38uDE3AuDE3C-uDE41uDE43-uDE46uDE48uDE4AuDE4CuDE50uDE53uDE55uDE56uDE58uDE5AuDE5CuDE5EuDE60uDE63uDE65uDE66uDE6BuDE73uDE78uDE7DuDE7FuDE8AuDE9C-uDEA0uDEA4uDEAAuDEBC-uDFFF]|uD83C[uDC00-uDD2FuDD4A-uDD4FuDD6A-uDD6FuDD8A-uDFFF]|uD83E[uDC00-uDFEFuDFFA-uDFFF]|uD869[uDEDE-uDEFF]|uD86D[uDF35-uDF3F]|uD86E[uDC1EuDC1F]|uD873[uDEA2-uDEAF]|uD87A[uDFE1-uDFFF]|uD87E[uDE1E-uDFFF]|uD884[uDF4B-uDFFF]|uDB40[uDC00-uDCFFuDDF0-uDFFF]/g; function slugify(heading: string): string { const slugifiedHeading = heading.trim() .toLowerCase() .replace(githubSlugReplaceRegex, '') .replace(/s/g, '-'); // Replace whitespace with - return slugifiedHeading; } // Copied from https://github.com/markedjs/marked-gfm-heading-id/blob/main/src/index.js // Removed logic for handling duplicate header ids for now // unescape from marked helpers const unescapeTest = /&(#(?:d+)|(?:#x[0-9A-Fa-f]+)|(?:w+));?/ig; function unescape(html: string) { // explicitly match decimal, hex, and named HTML entities return html.replace(unescapeTest, (_, n) => { n = n.toLowerCase(); if (n === 'colon') { return ':'; } if (n.charAt(0) === '#') { return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1)); } return ''; }); } export function markedGfmHeadingIdPlugin({ prefix = '', globalSlugs = false } = {}): marked.MarkedExtension { return { // hooks: { // 	preprocess(src: string) { // 		if (!globalSlugs) { // 			resetHeadings(); // 		} // 		return src; // 	}, // }, renderer: { heading({ tokens, depth }) { const text = this.parser.parseInline(tokens); const raw = unescape(this.parser.parseInline(tokens, this.parser.textRenderer)) .trim() .replace(/<[!/a-z].*?>/gi, ''); const level = depth; const id = `${prefix}${slugify(raw)}`; // const heading = { level, text, id, raw }; // headings.push(heading); return `<h${level} id="${id}">${text}</h${level}>n`; }, }, }; } </ins>


$ErrorActionPreference = "Stop" exec { node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt } exec { mkdir -Force .build/node_modules_cache } <del> exec { 7z.exe a .build/node_modules_cache/cache.7z -mx3 -bb `@.build/node_modules_list.txt } </del> <ins> exec { 7z.exe a .build/node_modules_cache/cache.7z -mx3 `@.build/node_modules_list.txt } </ins> condition: and(succeeded(), ne(variables.NODE_MODULES_RESTORED, 'true')) displayName: Create node_modules archive


resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= <del> xterm-addon-search@0.9.0-beta.21: version "0.9.0-beta.21" resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.9.0-beta.21.tgz#5348fe25676cdd89ce3be52ae62a316b6f266176" integrity sha512-jh6kfRCpWRvZZkV9QghFYesSYHjybaLNEyYAD6uilZYfNHoGLa0zPgUkLOqoECL7K6rhBmSYOkKbc9MG4wNFMQ== </del> <ins> xterm-addon-search@0.9.0-beta.22: version "0.9.0-beta.22" resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.9.0-beta.22.tgz#18f2eabda82709cdd64dee003879b586869e28a3" integrity sha512-1I8W0bwjg6bUoNaESKHSkS9BN3Z9Xe44/zbUb6Un+pbb5Nun4LQvFwSLkAIdRrslxcbcHYIU/2Q7F1wCOWLbaA== </ins> xterm-addon-serialize@0.7.0-beta.12: version "0.7.0-beta.12"


} } <ins> ensureFocusIntoNewEditingComment() { this._body.ensureFocusIntoNewEditingComment(); } </ins> focusCommentEditor() { this._commentReply?.expandReplyAreaAndFocusCommentEditor(); }


*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <del> import { ExtensionContext, OutputChannel, window, workspace, l10n } from 'vscode'; </del> <ins> import { ExtensionContext, OutputChannel, window, workspace, l10n, env } from 'vscode'; </ins> import { startClient, LanguageClientConstructor, SchemaRequestService, languageServerDescription } from '../jsonClient'; import { ServerOptions, TransportKind, LanguageClientOptions, LanguageClient, BaseLanguageClient } from 'vscode-languageclient/node';


return; } <del> commands.executeCommand('git.clone', cloneUri.toString(true)); </del> <ins> commands.executeCommand('git.clone', cloneUri.toString(true), undefined, { ref: ref }); </ins> } dispose(): void {


accessibilityProvider: this.widgetAccessibilityProvider, horizontalScrolling: false, identityProvider: this.widgetIdentityProvider, <del> multipleSelectionSupport: false, </del> <ins> multipleSelectionSupport: true, </ins> selectionNavigation: true }, );


disableHint(): void { this._accessibleView?.disableHint(); } <ins> showAccessibleViewHelp(): void { this._accessibleView?.showAccessibleViewHelp(); } </ins> } class AccessibleViewNextAction extends Action2 {


"dev": true }, "node_modules/electron": { <del> "version": "30.5.0", "resolved": "https://registry.npmjs.org/electron/-/electron-30.5.0.tgz", "integrity": "sha512-20c774PEsCFRzIgpZIaY6t/wTYxam0MfxQt5t+wG8aStHsl81FchUyLbDo4a59goqE7mHjLOdBDlxmZk88IgRw==", </del> <ins> "version": "30.5.1", "resolved": "https://registry.npmjs.org/electron/-/electron-30.5.1.tgz", "integrity": "sha512-AhL7+mZ8Lg14iaNfoYTkXQ2qee8mmsQyllKdqxlpv/zrKgfxz6jNVtcRRbQtLxtF8yzcImWdfTQROpYiPumdbw==", </ins> "dev": true, "hasInstallScript": true, "license": "MIT",


const scrollTop = outputScrolling ? findScrolledHeight(outputElement) : undefined; // If the previous output item for the same cell was also a stream, append this output to the previous <del> const existingContentParent = getPreviousMatchingContentGroup(outputElement); </del> <ins> const existingContentParent = getPreviousMatchingContentGroup(outputElement) || outputElement.querySelector('div'); </ins> if (existingContentParent) { const existing = existingContentParent.querySelector(`[output-item-id="${outputInfo.id}"]`) as HTMLElement | null; if (existing) {


// We have a preserved ID. So the task didn't change. if (tTask._id !== undefined) { // Always get the task execution first to prevent timing issues when retrieving it later <del> const executionDTO = await this._proxy.$getTaskExecution(TaskHandleDTO.from(tTask)); </del> <ins> const handleDto = TaskHandleDTO.from(tTask); const executionDTO = await this._proxy.$getTaskExecution(handleDto); </ins> if (executionDTO.task === undefined) { throw new Error('Task from execution DTO is undefined'); } const execution = await this.getTaskExecution(executionDTO, task); <del> this._proxy.$executeTask(executionDTO.task).catch(() => { /* The error here isn't actionable. */ }); </del> <ins> this._proxy.$executeTask(handleDto).catch(() => { /* The error here isn't actionable. */ }); </ins> return execution; } else { const dto = TaskDTO.from(task, extension);


})); } <del> // this.getElement().classList.toggle('config', true); </del> this._contextMenuService.showContextMenu({ getAnchor: () => e, getActions: () => actions,


} } <ins> /* Create new file from anywhere */ export class GlobalNewFileAction extends BaseGlobalNewAction { public static ID = 'workbench.action.files.newFile'; public static LABEL = nls.localize('newFile', "New File"); protected getAction(): IConstructorSignature2<ITree, IFileStat, Action> { return NewFileAction; } } </ins> /* Create new folder from anywhere */ export class GlobalNewFolderAction extends BaseGlobalNewAction { public static ID = 'workbench.action.files.newFolder';


} }, { <ins> "c": "    ", "t": "text.html.markdown markup.list.numbered.markdown", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", "dark_vs": "default: #D4D4D4", "light_vs": "default: #000000", "hc_black": "default: #FFFFFF" } }, { "c": ">", "t": "text.html.markdown markup.list.numbered.markdown markup.quote.markdown beginning.punctuation.definition.quote.markdown", "r": { "dark_plus": "beginning.punctuation.definition.quote.markdown: #608B4E", "light_plus": "beginning.punctuation.definition.quote.markdown: #0451A5", "dark_vs": "beginning.punctuation.definition.quote.markdown: #608B4E", "light_vs": "beginning.punctuation.definition.quote.markdown: #0451A5", "hc_black": "default: #FFFFFF" } }, { "c": " ", "t": "text.html.markdown markup.list.numbered.markdown markup.quote.markdown", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", "dark_vs": "default: #D4D4D4", "light_vs": "default: #000000", "hc_black": "default: #FFFFFF" } }, { "c": "Block quotes in list", "t": "text.html.markdown markup.list.numbered.markdown markup.quote.markdown meta.paragraph.markdown", "r": { "dark_plus": "default: #D4D4D4", "light_plus": "default: #000000", "dark_vs": "default: #D4D4D4", "light_vs": "default: #000000", "hc_black": "default: #FFFFFF" } }, { </ins> "c": "2.", "t": "text.html.markdown markup.list.numbered.markdown beginning.punctuation.definition.list.markdown", "r": {


if [ -z "${RPROMPT-}" ]; then RPROMPT="" fi <del> if [ -z "${PREFIX-}" ]; then PREFIX="" fi </del> fi __vsc_update_prompt() { __vsc_prior_prompt="$PS1" __vsc_in_command_execution="" <del> PS1="%{$(__vsc_prompt_start)%}$PREFIX$PS1%{$(__vsc_prompt_end)%}" </del> <ins> PS1="%{$(__vsc_prompt_start)%}$PS1%{$(__vsc_prompt_end)%}" </ins> PS2="%{$(__vsc_continuation_start)%}$PS2%{$(__vsc_continuation_end)%}" if [ -n "$RPROMPT" ]; then __vsc_prior_rprompt="$RPROMPT"


} this._widget = <IBorrowValue<NotebookEditorWidget>>this._instantiationService.invokeFunction(this._notebookWidgetService.retrieveWidget, group, input); <ins> if (this._rootElement && this._widget.value!.getDomNode()) { this._rootElement.setAttribute('aria-flowto', this._widget.value!.getDomNode().id || ''); DOM.setParentFlowTo(this._widget.value!.getDomNode(), this._rootElement); } </ins> this._widgetDisposableStore.add(this._widget.value!.onDidChangeModel(() => this._onDidChangeModel.fire())); this._widgetDisposableStore.add(this._widget.value!.onDidChangeActiveCell(() => this._onDidChangeSelection.fire({ reason: EditorPaneSelectionChangeReason.USER })));


readonly typeNavigationEnabled?: boolean; readonly typeNavigationMode?: TypeNavigationMode; readonly defaultFindMode?: TreeFindMode; <ins> readonly showNotFoundMessage?: boolean; </ins> readonly smoothScrolling?: boolean; readonly horizontalScrolling?: boolean; readonly mouseWheelScrollSensitivity?: number;


const ctx = new HitTestContext(this._context, this._viewHelper, lastRenderData); const request = new HitTestRequest(ctx, editorPos, pos, relativePos, target); try { <del> const r = MouseTargetFactory._createMouseTarget(ctx, request, false); </del> <ins> const r = MouseTargetFactory._createMouseTarget(ctx, request); </ins> if (r.type === MouseTargetType.CONTENT_TEXT) { // Snap to the nearest soft tab boundary if atomic soft tabs are enabled.


} } <del> const lineBreakRe = /r?ns*/; </del> <ins> const lineBreakRe = /r?ns*/g; </ins> class TestMessageDecoration implements ITestDecoration { public static readonly inlineClassName = 'test-message-inline-content';


return { enabled: boolean(input.enabled, this.defaultValue.enabled), delay: EditorIntOption.clampedInt(input.delay, this.defaultValue.delay, 0, 10000), <del> sticky: boolean(input.sticky, this.defaultValue.sticky) </del> <ins> sticky: boolean(input.sticky, this.defaultValue.sticky), below: boolean(input.below, this.defaultValue.below), </ins> }; } }


command += ' '; } for (const a of args) { <del> command += `${quote(a)} `; </del> <ins> command += (a === '<' || a === '>') ? a : quote(a); command += ' '; </ins> } break; }


@IContextKeyService contextKeyService: IContextKeyService, @ILanguageService private readonly languageService: ILanguageService, @IModelService private readonly modelService: IModelService, <del> @IConfigurationService private readonly _configurationService: IConfigurationService </del> <ins> @IConfigurationService private readonly _configurationService: IConfigurationService, @IAccessibilityService private readonly _accessibilityService: IAccessibilityService </ins> ) { super(); this.element = $('.interactive-result-editor-wrapper'); this.contextKeyService = this._register(contextKeyService.createScoped(this.element)); const scopedInstantiationService = instantiationService.createChild(new ServiceCollection([IContextKeyService, this.contextKeyService])); this.toolbar = this._register(scopedInstantiationService.createInstance(MenuWorkbenchToolBar, this.element, MenuId.ChatCodeBlock, {


private start(): void { this.textModelResolverService.registerTextModelContentProvider('vscode', { <del> provideTextContent: (uri: URI): Promise<ITextModel | null> | null => { </del> <ins> provideTextContent: async (uri: URI): Promise<ITextModel | null> => { </ins> if (uri.scheme !== 'vscode') { return null; } if (uri.authority === 'schemas') { <del> const schemaModel = this.getSchemaModel(uri); if (schemaModel) { return Promise.resolve(schemaModel); } </del> <ins> return this.getSchemaModel(uri); </ins> } <del> return Promise.resolve(this.preferencesService.resolveModel(uri)); </del> <ins> return this.preferencesService.resolveModel(uri); </ins> } }); } <del> private getSchemaModel(uri: URI): ITextModel | null { let schema = schemaRegistry.getSchemaContributions().schemas[uri.toString()]; if (schema) { const modelContent = JSON.stringify(schema); const languageSelection = this.languageService.createById('jsonc'); const model = this.modelService.createModel(modelContent, languageSelection, uri); const disposables = new DisposableStore(); disposables.add(schemaRegistry.onDidChangeSchema(schemaUri => { if (schemaUri === uri.toString()) { schema = schemaRegistry.getSchemaContributions().schemas[uri.toString()]; model.setValue(JSON.stringify(schema)); } })); disposables.add(model.onWillDispose(() => disposables.dispose())); return model; } return null; </del> <ins> private getSchemaModel(uri: URI): ITextModel { let schema = schemaRegistry.getSchemaContributions().schemas[uri.toString()] ?? {} /* Use empty schema if not yet registered */; const modelContent = JSON.stringify(schema); const languageSelection = this.languageService.createById('jsonc'); const model = this.modelService.createModel(modelContent, languageSelection, uri); const disposables = new DisposableStore(); disposables.add(schemaRegistry.onDidChangeSchema(schemaUri => { if (schemaUri === uri.toString()) { schema = schemaRegistry.getSchemaContributions().schemas[uri.toString()]; model.setValue(JSON.stringify(schema)); } })); disposables.add(model.onWillDispose(() => disposables.dispose())); return model; </ins> } dispose(): void {


} if (runSource === TaskRunSource.User) { const workspaceTasks = await this.getWorkspaceTasks(); <del> RunAutomaticTasks.promptForPermission(this, this._storageService, this._notificationService, this._workspaceTrustManagementService, this._openerService, this._configurationService, workspaceTasks); </del> <ins> RunAutomaticTasks.runWithPermission(this, this._storageService, this._notificationService, this._workspaceTrustManagementService, this._openerService, this._configurationService, workspaceTasks); </ins> } return executeTaskResult; } catch (error) {


this._hoverSettings = { enabled: hoverOpts.enabled, sticky: hoverOpts.sticky, <del> hidingDelay: hoverOpts.delay </del> <ins> hidingDelay: hoverOpts.hidingDelay </ins> }; if (hoverOpts.enabled) {


} function substituteWithWhitespace(result: string, start: number, end: number, oldContent: string, before: string, after: string) { <del> let accumulatedWS = 0; </del> result += before; <del> for (let i = start + before.length; i < end; i++) { </del> <ins> let accumulatedWS = -before.length; // start with a negative value to account for the before string for (let i = start; i < end; i++) { </ins> const ch = oldContent[i]; if (ch === 'n' || ch === 'r') { // only write new lines, skip the whitespace


import { Disposable } from 'vs/base/common/lifecycle'; import { ILogger, ILoggerService, LogLevelToString } from 'vs/platform/log/common/log'; import { dirname, join } from 'vs/base/common/path'; <del> import { ChildProcess, spawn } from 'child_process'; </del> <ins> import { ChildProcess, StdioOptions, spawn } from 'child_process'; </ins> import { IProductService } from 'vs/platform/product/common/productService'; import { isMacintosh, isWindows } from 'vs/base/common/platform'; import { CancelablePromise, createCancelablePromise, Delayer } from 'vs/base/common/async';


primary: KeyCode.Escape, secondary: [KeyMod.Shift | KeyCode.Escape] } })); <ins> class ToggleScreenReaderMode extends Action2 { constructor() { super({ id: 'editor.action.toggleScreenReaderAccessibilityMode', title: { value: nls.localize('toggleScreenReaderMode', "Toggle Screen Reader Accessibility Mode"), original: 'Toggle Screen Reader Accessibility Mode' }, f1: true, }); } async run(accessor: ServicesAccessor): Promise<void> { const configurationService = accessor.get(IConfigurationService); const value = configurationService.getValue('editor.accessibilitySupport'); configurationService.updateValue('editor.accessibilitySupport', value === 'on' ? 'off' : 'on'); } } registerAction2(ToggleScreenReaderMode); </ins>


getId() { return languageId; }, <del> doValidation(document: TextDocument): Diagnostic[] { </del> <ins> doValidation(document: TextDocument, settings = workspace.settings): Diagnostic[] { </ins> updateCurrentTextDocument(document); <ins> host.getCompilationSettings()['experimentalDecorators'] = settings && settings.javascript && settings.javascript.implicitProjectConfig.experimentalDecorators; </ins> const syntaxDiagnostics: ts.Diagnostic[] = jsLanguageService.getSyntacticDiagnostics(workingFile); const semanticDiagnostics = jsLanguageService.getSemanticDiagnostics(workingFile); return syntaxDiagnostics.concat(semanticDiagnostics).map((diag: ts.Diagnostic): Diagnostic => {


// Create and show quick pick const pick = this._quickInputService.createQuickPick<IQuickPickItem | ITerminalLinkQuickPickItem>({ useSeparators: true }); <ins> const disposables = new DisposableStore(); disposables.add(pick); </ins> pick.items = picks; pick.placeholder = localize('terminal.integrated.openDetectedLink', "Select the link to open, type to filter all links"); pick.sortByLabel = false;


description: 'content-hover-highlight', className: 'hoverHighlight' }); <ins> public static computeHoverRanges(anchorRange: Range, messages: IHoverPart[]) { // The anchor range is always on a single line const anchorLineNumber = anchorRange.startLineNumber; let renderStartColumn = anchorRange.startColumn; let renderEndColumn = anchorRange.endColumn; let highlightRange: Range = messages[0].range; let forceShowAtRange: Range | null = null; for (const msg of messages) { highlightRange = Range.plusRange(highlightRange, msg.range); if (msg.range.startLineNumber === anchorLineNumber && msg.range.endLineNumber === anchorLineNumber) { // this message has a range that is completely sitting on the line of the anchor renderStartColumn = Math.min(renderStartColumn, msg.range.startColumn); renderEndColumn = Math.max(renderEndColumn, msg.range.endColumn); } if (msg.forceShowAtRange) { forceShowAtRange = msg.range; } } return { showAtPosition: forceShowAtRange ? forceShowAtRange.getStartPosition() : new Position(anchorRange.startLineNumber, renderStartColumn), showAtRange: forceShowAtRange ? forceShowAtRange : new Range(anchorLineNumber, renderStartColumn, anchorLineNumber, renderEndColumn), highlightRange }; } </ins> } class ContentHoverVisibleData {


const reloadAction = this.instantiationService.createInstance(ReloadAction); const actions = [ this.instantiationService.createInstance(ExtensionStatusLabelAction), <ins> this.instantiationService.createInstance(MigrateDeprecatedExtension, true), </ins> this.instantiationService.createInstance(UpdateAction), reloadAction, this.instantiationService.createInstance(InstallDropdownAction),


import { EditorPaneDescriptor, IEditorPaneRegistry } from 'vs/workbench/browser/editor'; import { Extensions as WorkbenchExtensions, IWorkbenchContributionsRegistry } from 'vs/workbench/common/contributions'; import { EditorExtensions, IEditorFactoryRegistry } from 'vs/workbench/common/editor'; <del> import { CompareInput1WithBaseCommand, CompareInput2WithBaseCommand, GoToNextConflict, GoToPreviousConflict, OpenBaseFile, OpenMergeEditor, SetColumnLayout, SetMixedLayout, ToggleActiveConflictInput1, ToggleActiveConflictInput2 } from 'vs/workbench/contrib/mergeEditor/browser/commands/commands'; </del> <ins> import { CompareInput1WithBaseCommand, CompareInput2WithBaseCommand, GoToNextConflict, GoToPreviousConflict, OpenBaseFile, OpenMergeEditor, OpenResultResource, SetColumnLayout, SetMixedLayout, ToggleActiveConflictInput1, ToggleActiveConflictInput2 } from 'vs/workbench/contrib/mergeEditor/browser/commands/commands'; </ins> import { MergeEditorCopyContentsToJSON, MergeEditorOpenContents } from 'vs/workbench/contrib/mergeEditor/browser/commands/devCommands'; import { MergeEditorInput } from 'vs/workbench/contrib/mergeEditor/browser/mergeEditorInput'; import { MergeEditor, MergeEditorOpenHandlerContribution } from 'vs/workbench/contrib/mergeEditor/browser/view/mergeEditor';


this._element.classList.add('monaco-text-button-with-short-label'); } <ins> if (typeof options.ariaLabel === 'string') { this._element.setAttribute('aria-label', options.ariaLabel); } </ins> container.appendChild(this._element); this._register(Gesture.addTarget(this._element));


private onConfigurationChange(config: IConfiguration, notify: boolean): void { let changed = false; <ins> function processChanged(didChange: boolean) { changed = changed || didChange; } </ins> if (isNative) { // Titlebar style <del> if (typeof config.window?.titleBarStyle === 'string' && config.window?.titleBarStyle !== this.titleBarStyle && (config.window.titleBarStyle === 'native' || config.window.titleBarStyle === 'custom')) { this.titleBarStyle = config.window.titleBarStyle; changed = true; } </del> <ins> processChanged((config.window.titleBarStyle === 'native' || config.window.titleBarStyle === 'custom') && this.titleBarStyle.handleChange(config.window?.titleBarStyle)); </ins> // Windows: Window Controls Overlay <del> if (isWindows && typeof config.window?.experimental?.windowControlsOverlay?.enabled === 'boolean' && config.window.experimental.windowControlsOverlay.enabled !== this.windowControlsOverlayEnabled) { this.windowControlsOverlayEnabled = config.window.experimental.windowControlsOverlay.enabled; changed = true; } </del> <ins> processChanged(isWindows && this.windowControlsOverlayEnabled.handleChange(config.window?.experimental?.windowControlsOverlay?.enabled)); </ins> // Windows: Sandbox <del> if (typeof config.window?.experimental?.useSandbox === 'boolean' && config.window.experimental.useSandbox !== this.windowSandboxEnabled) { this.windowSandboxEnabled = config.window.experimental.useSandbox; changed = true; } </del> <ins> processChanged(this.windowSandboxEnabled.handleChange(config.window?.experimental?.useSandbox)); </ins> // macOS: Native tabs <del> if (isMacintosh && typeof config.window?.nativeTabs === 'boolean' && config.window.nativeTabs !== this.nativeTabs) { this.nativeTabs = config.window.nativeTabs; changed = true; } </del> <ins> processChanged(isMacintosh && this.nativeTabs.handleChange(config.window?.nativeTabs)); </ins> // macOS: Native fullscreen <del> if (isMacintosh && typeof config.window?.nativeFullScreen === 'boolean' && config.window.nativeFullScreen !== this.nativeFullScreen) { this.nativeFullScreen = config.window.nativeFullScreen; changed = true; } </del> <ins> processChanged(isMacintosh && this.nativeFullScreen.handleChange(config.window?.nativeFullScreen)); </ins> // macOS: Click through (accept first mouse) <del> if (isMacintosh && typeof config.window?.clickThroughInactive === 'boolean' && config.window.clickThroughInactive !== this.clickThroughInactive) { this.clickThroughInactive = config.window.clickThroughInactive; changed = true; } </del> <ins> processChanged(isMacintosh && this.clickThroughInactive.handleChange(config.window?.clickThroughInactive)); </ins> // Update channel <del> if (typeof config.update?.mode === 'string' && config.update.mode !== this.updateMode) { this.updateMode = config.update.mode; changed = true; } </del> <ins> processChanged(this.updateMode.handleChange(config.update?.mode)); </ins> // On linux turning on accessibility support will also pass this flag to the chrome renderer, thus a restart is required if (isLinux && typeof config.editor?.accessibilitySupport === 'string' && config.editor.accessibilitySupport !== this.accessibilitySupport) {


"cssnano": "^4.1.11", "debounce": "^1.0.0", "deemon": "^1.8.0", <del> "electron": "25.8.4", </del> <ins> "electron": "25.9.1", </ins> "eslint": "8.36.0", "eslint-plugin-header": "3.1.1", "eslint-plugin-jsdoc": "^46.5.0",


this.resolve().catch(onUnexpectedError); } }); <ins> this._register(extensionService.onWillStop(e => { if (!this.isDirty()) { return; } e.veto((async () => { const editors = editorService.findEditors(this); if (editors.length > 0) { const result = await editorService.save(editors[0]); if (result.success) { return false; // Don't Veto } } return true; // Veto })(), localize('vetoExtHostRestart', "Notebook '{0}' could not be saved.", this.resource.path)); })); </ins> } override dispose() {


default: true, markdownDescription: nls.localize('editor.suggest.showConstructors', "When enabled IntelliSense shows `constructor`-suggestions.") }, <ins> 'editor.suggest.showDeprecated': { type: 'boolean', default: true, markdownDescription: nls.localize('editor.suggest.showDeprecated', "When enabled IntelliSense shows `deprecated`-suggestions.") }, </ins> 'editor.suggest.showFields': { type: 'boolean', default: true,


*--------------------------------------------------------------------------------------------*/ import 'vs/css!./editorDictation'; <del> import { localize2 } from 'vs/nls'; import { IDimension, h, reset } from 'vs/base/browser/dom'; </del> <ins> import { localize, localize2 } from 'vs/nls'; import { IDimension } from 'vs/base/browser/dom'; </ins> import { CancellationTokenSource } from 'vs/base/common/cancellation'; import { Disposable, DisposableStore, MutableDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from 'vs/editor/browser/editorBrowser'; import { IEditorContribution } from 'vs/editor/common/editorCommon'; import { ContextKeyExpr, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { HasSpeechProvider, ISpeechService, SpeechToTextStatus } from 'vs/workbench/contrib/speech/common/speechService'; <del> import { renderIcon } from 'vs/base/browser/ui/iconLabel/iconLabels'; </del> import { Codicon } from 'vs/base/common/codicons'; import { EditorOption } from 'vs/editor/common/config/editorOptions'; import { EditorAction2, EditorContributionInstantiation, registerEditorContribution } from 'vs/editor/browser/editorExtensions';


private _bufferTracker: BufferContentTracker | undefined; private _bufferProvider: TerminalAccessibleBufferProvider | undefined; private _xterm: Pick<IXtermTerminal, 'shellIntegration' | 'getFont'> & { raw: Terminal } | undefined; <ins> private _onCommandExecutedShowListener: MutableDisposable<IDisposable> = new MutableDisposable(); </ins> constructor( private readonly _instance: ITerminalInstance, processManager: ITerminalProcessManager,


showCommonFindToggles?: boolean; checkImeCompletionState?: boolean; showResultCount?: boolean; <del> appendCaseSensitiveLabel?: string; appendRegexLabel?: string; appendWholeWordsLabel?: string; </del> <ins> appendCaseSensitiveActionId?: string; appendRegexActionId?: string; appendWholeWordsActionId?: string; previousMatchActionId?: string; nextMatchActionId?: string; closeWidgetActionId?: string; </ins> matchesLimit?: number; type?: 'Terminal' | 'Webview'; }


} : undefined, getRole: options.ariaProvider && options.ariaProvider.getRole ? (node) => { return options.ariaProvider!.getRole!(node.element); <del> } : undefined </del> <ins> } : () => 'treeitem' </ins> } }; }


builtin unset VSCODE_INJECTION fi <del> # Disable shell integration if PROMPT_COMMAND is 2+ function calls since that is not handled. if [[ "$PROMPT_COMMAND" =~ .*(' '.*;)|(;.*' ').* ]]; then builtin unset VSCODE_SHELL_INTEGRATION builtin return fi </del> if [ -z "$VSCODE_SHELL_INTEGRATION" ]; then builtin return fi


} break; case 'on': <del> text += 'nn - ' + nls.localize('configuredOn', "The editor is configured to be permanently optimized for usage with a Screen Reader - you can change this by editing the setting `editor.accessibilitySupport`."); </del> <ins> text += 'nn - ' + nls.localize('configuredOn', "The editor is configured to be permanently optimized for usage with a Screen Reader - you can change this via the command `Toggle Screen Reader Accessibility Mode` or by editing the setting `editor.accessibilitySupport`"); </ins> break; case 'off': text += 'nn - ' + nls.localize('configuredOff', "The editor is configured to never be optimized for usage with a Screen Reader.");


this.historyMainService.updateWindowsJumpList(); this.historyMainService.onRecentlyOpenedChange(() => this.historyMainService.updateWindowsJumpList()); <del> // Start shared process here this.sharedProcess.spawn(); </del> <ins> // Start shared process after a while TPromise.timeout(3000).then(() => this.sharedProcess.spawn()); </ins> } private dispose(): void {


} .settings-editor > .settings-header > .settings-header-controls .settings-tabs-widget .action-label.checked { <del> font-weight: 500; </del> opacity: 1; }


#	fi #fi <ins> # Update mimetype database to pickup workspace mimetype update-mime-database /usr/share/mime &> /dev/null || : </ins> %postun if [ $1 = 0 ]; then rm -f /usr/bin/@@NAME@@ fi <ins> # Update mimetype database for removed workspace mimetype update-mime-database /usr/share/mime &> /dev/null || : </ins> %files %defattr(-,root,root) /usr/share/@@NAME@@/ /usr/share/applications/@@NAME@@.desktop /usr/share/applications/@@NAME@@-url-handler.desktop <ins> /usr/share/mime/packages/@@NAME-workspace.xml </ins> /usr/share/pixmaps/@@ICON@@.png /usr/share/bash-completion/completions/@@NAME@@ /usr/share/zsh/site-functions/_@@NAME@@


return; } <ins> // Hide sticky scroll if the prompt has been trimmed from the buffer if (command.promptStartMarker?.line === -1) { this._setVisible(false); return; } </ins> // Determine sticky scroll line count const buffer = xterm.buffer.active; const promptRowCount = command.getPromptRowCount();


.quick-input-list .monaco-list { overflow: hidden; max-height: calc(20 * 22px); <ins> padding-bottom: 5px; </ins> } .quick-input-list .monaco-scrollable-element {


{ "name": "code-oss-dev", "version": "1.84.0", <del> "distro": "ace645d011b7e53ba51e8d5ff153c47e3773b3d8", </del> <ins> "distro": "0f218422a902175f8b82cbf0f13fa4feb278f22a", </ins> "author": { "name": "Microsoft Corporation" },


import { URI } from 'vs/base/common/uri'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ILogService } from 'vs/platform/log/common/log'; <del> import { VSBuffer } from 'vs/base/common/buffer'; </del> <ins> import { decodeBase64, VSBuffer } from 'vs/base/common/buffer'; </ins> import { ResourceFileEdit } from 'vs/editor/browser/services/bulkEditService'; import { CancellationToken } from 'vs/base/common/cancellation'; import { tail } from 'vs/base/common/arrays';


@ITaskService private readonly _taskService: ITaskService, @IConfigurationService private readonly _configurationService: IConfigurationService, @IWorkspaceTrustManagementService private readonly _workspaceTrustManagementService: IWorkspaceTrustManagementService, <del> @ILogService private readonly _logService: ILogService) { </del> <ins> @ILogService private readonly _logService: ILogService, @IStorageService private readonly _storageService: IStorageService, @IOpenerService private readonly _openerService: IOpenerService, @INotificationService private readonly _notificationService: INotificationService) { </ins> super(); this._tryRunTasks(); }


border: none !important; } <del> .monaco-workbench .part > .title > .title-actions .switch-output > .monaco-select-box { </del> <ins> .monaco-workbench .part.sidebar > .title > .title-actions .switch-output > .monaco-select-box { </ins> padding: 0 22px 0 6px; }


"source-map": "^0.4.4", "style-loader": "^1.0.0", "ts-loader": "^4.4.2", <ins> "tsec": "googleinterns/tsec", </ins> "typescript": "^4.1.0-dev.20200824", "typescript-formatter": "7.1.0", "underscore": "^1.8.2",


display: table-row; opacity: .8; cursor: default; <ins> color: var(--vscode-editorWatermark-foreground); </ins> } .monaco-workbench .part.editor > .content .editor-group-container > .editor-group-watermark > .shortcuts dt {


}, "plugins": [ "@typescript-eslint", <del> "jsdoc" </del> <ins> "jsdoc", "header" </ins> ], "rules": { "constructor-super": "warn",


return ''; } <ins> shouldValidateName(): boolean { return true; } </ins> save(): void { this.saveScheduler.schedule(); }


assert.strictEqual(second.completion.label, '<- groups'); }); <ins> test('Completion item sorting broken when using label details #153026', function () { const itemZZZ = createSuggestItem({ label: 'ZZZ' }, 0, languages.CompletionItemKind.Operator, false); const itemAAA = createSuggestItem({ label: 'AAA' }, 0, languages.CompletionItemKind.Operator, false); const itemIII = createSuggestItem('III', 0, languages.CompletionItemKind.Operator, false); const cmp = getSuggestionComparator(SnippetSortOrder.Inline); const actual = [itemZZZ, itemAAA, itemIII].sort(cmp); assert.deepStrictEqual(actual, [itemAAA, itemIII, itemZZZ]); }); </ins> test('Score only filtered items when typing more, score all when typing less', function () { model = new CompletionModel([ createSuggestItem('console', 0),


// User data let userDataProvider; if (indexedDB) { <del> userDataProvider = new IndexedDBFileSystemProvider(logsPath.scheme, indexedDB, userDataStore, false); </del> <ins> userDataProvider = new IndexedDBFileSystemProvider(Schemas.vscodeUserData, indexedDB, userDataStore, true); </ins> this.registerDeveloperActions(<IndexedDBFileSystemProvider>userDataProvider); } else { logService.info('Using in-memory user data provider');


data.disposables = []; data.root = container; data.optionText = dom.append(container, $('.option-text')); <ins> data.optionDescriptionText = dom.append(container, $('.option-text-description')); </ins> return data; }


builtin return fi <ins> # Disable shell integration if HISTCONTROL is set to erase duplicate entries as the exit code # reporting relies on the duplicates existing if [[ "$HISTCONTROL" =~ .*erasedups.* ]]; then builtin unset VSCODE_SHELL_INTEGRATION builtin return fi </ins> if [ -z "$VSCODE_SHELL_INTEGRATION" ]; then builtin return fi


import { ExtHostDocuments } from 'vs/workbench/api/common/extHostDocuments'; import * as extHostTypeConverter from 'vs/workbench/api/common/extHostTypeConverters'; import * as types from 'vs/workbench/api/common/extHostTypes'; <del> import { checkProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; </del> import type * as vscode from 'vscode'; import { ExtHostCommentsShape, IMainContext, MainContext, CommentThreadChanges, CommentChanges } from './extHost.protocol'; import { ExtHostCommands } from './extHostCommands';


assertLink( '(see http://foo.bar)', <del> '     http://foo.bar ' </del> <ins> '     http://foo.bar  ' </ins> ); assertLink( '[see http://foo.bar]', <del> '     http://foo.bar ' </del> <ins> '     http://foo.bar  ' </ins> ); assertLink( '{see http://foo.bar}', <del> '     http://foo.bar ' </del> <ins> '     http://foo.bar  ' </ins> ); assertLink( '<see http://foo.bar>', <del> '     http://foo.bar ' </del> <ins> '     http://foo.bar  ' </ins> ); assertLink( '<url>http://mylink.com</url>',


import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { ILogService } from 'vs/platform/log/common/log'; import { SnippetSession } from './snippetSession'; <del> import { EditorState, CodeEditorStateFlag } from 'vs/editor/browser/core/editorState'; </del> export class SnippetController2 implements IEditorContribution {


dependencies: lru-cache "^6.0.0" <del> vscode-jsonrpc@8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.0.1.tgz#f30b0625ebafa0fb3bc53e934ca47b706445e57e" integrity sha512-N/WKvghIajmEvXpatSzvTvOIz61ZSmOSa4BRA4pTLi+1+jozquQKP/MkaylP9iB68k73Oua1feLQvH3xQuigiQ== </del> <ins> vscode-jsonrpc@8.0.2-next.1: version "8.0.2-next.1" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2-next.1.tgz#6bdc39fd194782032e34047eeefce562941259c6" integrity sha512-sbbvGSWja7NVBLHPGawtgezc8DHYJaP4qfr/AaJiyDapWcSFtHyPtm18+LnYMLTmB7bhOUW/lf5PeeuLpP6bKA== </ins> <del> vscode-languageclient@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-8.0.1.tgz#bf5535c4463a78daeaca0bcb4f5868aec86bb301" integrity sha512-9XoE+HJfaWvu7Y75H3VmLo5WLCtsbxEgEhrLPqwt7eyoR49lUIyyrjb98Yfa50JCMqF2cePJAEVI6oe2o1sIhw== </del> <ins> vscode-languageclient@^8.0.2-next.4: version "8.0.2-next.4" resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-8.0.2-next.4.tgz#87dd364ffbd4356aff3af14e7b557d9fe34d2b67" integrity sha512-j9BEiCYMN9IoKwYdk9iickV6WNPVGPoVO11SMdoxFnWPIT3y5UAe3qf/WsfA9OdklAIaxxYasfgyKCpBjSPNuw== </ins> dependencies: minimatch "^3.0.4" semver "^7.3.5" <del> vscode-languageserver-protocol "3.17.1" </del> <ins> vscode-languageserver-protocol "3.17.2-next.5" </ins> <del> vscode-languageserver-protocol@3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.1.tgz#e801762c304f740208b6c804a0cf21f2c87509ed" integrity sha512-BNlAYgQoYwlSgDLJhSG+DeA8G1JyECqRzM2YO6tMmMji3Ad9Mw6AW7vnZMti90qlAKb0LqAlJfSVGEdqMMNzKg== </del> <ins> vscode-languageserver-protocol@3.17.2-next.5: version "3.17.2-next.5" resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2-next.5.tgz#9bc747411c3ce9e1d73c2714bf6555e0199eec26" integrity sha512-UlH+QL4Q4lX94of/UPDDwwWIkd8w7dtMW4khzvEDUoykiG9tba0iG6V0bAiv8XVpnBIUYjL2FNFiL3zl+TY1Sw== </ins> dependencies: <del> vscode-jsonrpc "8.0.1" vscode-languageserver-types "3.17.1" </del> <ins> vscode-jsonrpc "8.0.2-next.1" vscode-languageserver-types "3.17.2-next.2" </ins> <del> vscode-languageserver-types@3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.1.tgz#c2d87fa7784f8cac389deb3ff1e2d9a7bef07e16" integrity sha512-K3HqVRPElLZVVPtMeKlsyL9aK0GxGQpvtAUTfX4k7+iJ4mc1M+JM+zQwkgGy2LzY0f0IAafe8MKqIkJrxfGGjQ== </del> <ins> vscode-languageserver-types@3.17.2-next.2: version "3.17.2-next.2" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2-next.2.tgz#af5d6978eee7682aab87c1419323f5b141ac6596" integrity sha512-TiAkLABgqkVWdAlC3XlOfdhdjIAdVU4YntPUm9kKGbXr+MGwpVnKz2KZMNBcvG0CFx8Hi8qliL0iq+ndPB720w== </ins> vscode-nls@^5.0.0: version "5.0.0"


// Filename not allowed this.filePickBox.validationMessage = nls.localize('remoteFileDialog.validateBadFilename', 'Please enter a valid file name.'); return Promise.resolve(false); <del> } else if (!statDirname || !statDirname.isDirectory) { </del> <ins> } else if (!statDirname) { </ins> // Folder to save in doesn't exist <ins> const message = nls.localize('remoteFileDialog.validateCreateDirectory', 'The folder {0} does not exist. Would you like to create it?', resources.basename(resources.dirname(uri))); return this.yesNoPrompt(uri, message); } else if (!statDirname.isDirectory) { </ins> this.filePickBox.validationMessage = nls.localize('remoteFileDialog.validateNonexistentDir', 'Please enter a path that exists.'); return Promise.resolve(false); }


// Filtered "new extensions" button if (element instanceof SettingsTreeNewExtensionsElement) { <del> if ((this.viewState.tagFilters && this.viewState.tagFilters.size) || this.viewState.filterToCategory) { </del> <ins> if (this.viewState.tagFilters?.size || this.viewState.filterToCategory) { </ins> return false; } }


private onTabFocusModeChange(): void { const info: StateDelta = { type: 'tabFocusMode', tabFocusMode: TabFocus.getTabFocusMode(this.contextKeyService.getContextKeyValue('focusedView') === 'terminal' ? TabFocusContext.Terminal : TabFocusContext.Editor) }; this.updateState(info); }


"@vscode/policy-watcher": "^1.1.4", "@vscode/proxy-agent": "^0.18.2", "@vscode/ripgrep": "^1.15.9", <del> "@vscode/spdlog": "^0.13.12", </del> <ins> "@vscode/spdlog": "^0.14.0", </ins> "@vscode/sqlite3": "5.1.6-vscode", "@vscode/sudo-prompt": "9.3.1", "@vscode/vscode-languagedetection": "1.0.21",


if (token.type === 'heading') { yield { depth: token.depth, <del> text: renderMarkdownAsPlaintext({ value: token.text }).trim() </del> <ins> text: renderMarkdownAsPlaintext({ value: token.raw }).trim() </ins> }; } }


`                                   https://github.com/jeff-hykin/better-c-syntax/blob/master/autogenerated/c.tmLanguage.json  `, ); }); <del> test('issue #119696: Links shouldn't include commas', () => { assertLink( `https://apod.nasa.gov/apod/ap170720.html,IC 1396: Emission Nebula in Cepheus,https://apod.nasa.gov/apod/image/1707/MOSAIC_IC1396_HaSHO_blanco1024.jpg,https://apod.nasa.gov/apod/image/1707/MOSAIC_IC1396_HaSHO_blanco.jpg`, `https://apod.nasa.gov/apod/ap170720.html                                     https://apod.nasa.gov/apod/image/1707/MOSAIC_IC1396_HaSHO_blanco1024.jpg https://apod.nasa.gov/apod/image/1707/MOSAIC_IC1396_HaSHO_blanco.jpg` ); assertLink( `https://apod.nasa.gov/apod/ap180402.html,"Moons, Rings, Shadows, Clouds: Saturn (Cassini)",https://apod.nasa.gov/apod/image/1804/SaturnRingsMoons_Cassini_967.jpg,https://apod.nasa.gov/apod/image/1804/SaturnRingsMoons_Cassini_967.jpg`, `https://apod.nasa.gov/apod/ap180402.html                                                   https://apod.nasa.gov/apod/image/1804/SaturnRingsMoons_Cassini_967.jpg https://apod.nasa.gov/apod/image/1804/SaturnRingsMoons_Cassini_967.jpg`, ); }); </del> });


const editorContext = this._contextKeyService.getContext(this._editor.getDomNode()!); if (editorContext.getValue<boolean>(CommentContextKeys.activeEditorHasCommentingRange.key)) { <del> content.push(this._descriptionForCommand(CommentCommandId.Add, CommentAccessibilityHelpNLS.addComment, CommentAccessibilityHelpNLS.addCommentNoKb)); content.push(this._descriptionForCommand(CommentCommandId.NextThread, CommentAccessibilityHelpNLS.nextCommentThreadKb, CommentAccessibilityHelpNLS.nextCommentThreadNoKb)); content.push(this._descriptionForCommand(CommentCommandId.PreviousThread, CommentAccessibilityHelpNLS.previousCommentThreadKb, CommentAccessibilityHelpNLS.previousCommentThreadNoKb)); content.push(this._descriptionForCommand(CommentCommandId.NextRange, CommentAccessibilityHelpNLS.nextRange, CommentAccessibilityHelpNLS.nextRangeNoKb)); content.push(this._descriptionForCommand(CommentCommandId.PreviousRange, CommentAccessibilityHelpNLS.previousRange, CommentAccessibilityHelpNLS.previousRangeNoKb)); </del> <ins> const commentCommandInfo = []; commentCommandInfo.push(CommentAccessibilityHelpNLS.intro); commentCommandInfo.push(this._descriptionForCommand(CommentCommandId.Add, CommentAccessibilityHelpNLS.addComment, CommentAccessibilityHelpNLS.addCommentNoKb)); commentCommandInfo.push(this._descriptionForCommand(CommentCommandId.NextThread, CommentAccessibilityHelpNLS.nextCommentThreadKb, CommentAccessibilityHelpNLS.nextCommentThreadNoKb)); commentCommandInfo.push(this._descriptionForCommand(CommentCommandId.PreviousThread, CommentAccessibilityHelpNLS.previousCommentThreadKb, CommentAccessibilityHelpNLS.previousCommentThreadNoKb)); commentCommandInfo.push(this._descriptionForCommand(CommentCommandId.NextRange, CommentAccessibilityHelpNLS.nextRange, CommentAccessibilityHelpNLS.nextRangeNoKb)); commentCommandInfo.push(this._descriptionForCommand(CommentCommandId.PreviousRange, CommentAccessibilityHelpNLS.previousRange, CommentAccessibilityHelpNLS.previousRangeNoKb)); content.push(commentCommandInfo.join('n')); </ins> } if (options.get(EditorOption.stickyScroll).enabled) {


} offset = Math.min(oldEndViewColumn + 1 - config.normalizeIndentation(ir.afterEnter).length - 1, 0); } <del> return new ReplaceCommandWithOffsetCursorState(range, beforeText + config.normalizeIndentation(ir.afterEnter), 0, offset, true); </del> <ins> return new ReplaceCommandWithOffsetCursorState(range, 'n' + config.normalizeIndentation(ir.afterEnter), 0, offset, true); </ins> } } }


env: GITHUB_TOKEN: "$(github-distro-mixin-password)" displayName: Build server (web) <del> condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64')) </del> - ${{ if or(eq(parameters.VSCODE_RUN_UNIT_TESTS, true), eq(parameters.VSCODE_RUN_INTEGRATION_TESTS, true), eq(parameters.VSCODE_RUN_SMOKE_TESTS, true)) }}: - template: product-build-win32-test.yml@self


) { } async openReporter(dataOverrides: Partial<IssueReporterData> = {}): Promise<void> { <del> const extensions = await this.extensionManagementService.getInstalled(ExtensionType.User); </del> <ins> const extensions = await this.extensionManagementService.getInstalled(); </ins> const enabledExtensions = extensions.filter(extension => this.extensionEnablementService.isEnabled(extension)); <del> const extensionData: IssueReporterExtensionData[] = enabledExtensions.map(extension => { </del> <ins> const extensionData = enabledExtensions.map((extension): IssueReporterExtensionData => { </ins> const { manifest } = extension; const manifestKeys = manifest.contributes ? Object.keys(manifest.contributes) : []; const isTheme = !manifest.activationEvents && manifestKeys.length === 1 && manifestKeys[0] === 'themes'; <ins> const isBuiltin = extension.type === ExtensionType.System; </ins> return { name: manifest.name, publisher: manifest.publisher,


import { ACTIVE_GROUP } from 'vs/workbench/services/editor/common/editorService'; import { IWorkbenchLayoutService, Parts } from 'vs/workbench/services/layout/browser/layoutService'; import { IBaseActionViewItemOptions } from 'vs/base/browser/ui/actionbar/actionViewItems'; <ins> import { DisposableStore } from 'vs/base/common/lifecycle'; </ins> export class TerminalEditor extends EditorPane {


public static INSTANCE = new ZoomManager(); private _zoomLevel: number = 0; <ins> private _editorZoomLevel: number = 0; </ins> private _pixelRatioCache: number = 0; private _pixelRatioComputed: boolean = false; private _onDidChangeZoomLevel: Emitter<number> = new Emitter<number>(); public onDidChangeZoomLevel:Event<number> = this._onDidChangeZoomLevel.event; <ins> private _onDidChangeEditorZoomLevel: Emitter<number> = new Emitter<number>(); public onDidChangeEditorZoomLevel:Event<number> = this._onDidChangeEditorZoomLevel.event; </ins> public getZoomLevel(): number { return this._zoomLevel; }


modes['css'] = getCSSMode(cssLanguageService, documentRegions, workspace); } if (supportedLanguages['javascript']) { <del> modes['javascript'] = getJavaScriptMode(documentRegions, 'javascript'); modes['typescript'] = getJavaScriptMode(documentRegions, 'typescript'); </del> <ins> modes['javascript'] = getJavaScriptMode(documentRegions, 'javascript', workspace); modes['typescript'] = getJavaScriptMode(documentRegions, 'typescript', workspace); </ins> } return { getModeAtPosition(document: TextDocument, position: Position): LanguageMode | undefined {


dependencies: lru-cache "^6.0.0" <del> vscode-jsonrpc@8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.0.1.tgz#f30b0625ebafa0fb3bc53e934ca47b706445e57e" integrity sha512-N/WKvghIajmEvXpatSzvTvOIz61ZSmOSa4BRA4pTLi+1+jozquQKP/MkaylP9iB68k73Oua1feLQvH3xQuigiQ== vscode-languageclient@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-8.0.1.tgz#bf5535c4463a78daeaca0bcb4f5868aec86bb301" integrity sha512-9XoE+HJfaWvu7Y75H3VmLo5WLCtsbxEgEhrLPqwt7eyoR49lUIyyrjb98Yfa50JCMqF2cePJAEVI6oe2o1sIhw== </del> <ins> vscode-jsonrpc@8.0.2-next.1: version "8.0.2-next.1" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.0.2-next.1.tgz#6bdc39fd194782032e34047eeefce562941259c6" integrity sha512-sbbvGSWja7NVBLHPGawtgezc8DHYJaP4qfr/AaJiyDapWcSFtHyPtm18+LnYMLTmB7bhOUW/lf5PeeuLpP6bKA== vscode-languageclient@^8.0.2-next.4: version "8.0.2-next.4" resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-8.0.2-next.4.tgz#87dd364ffbd4356aff3af14e7b557d9fe34d2b67" integrity sha512-j9BEiCYMN9IoKwYdk9iickV6WNPVGPoVO11SMdoxFnWPIT3y5UAe3qf/WsfA9OdklAIaxxYasfgyKCpBjSPNuw== </ins> dependencies: minimatch "^3.0.4" semver "^7.3.5" <del> vscode-languageserver-protocol "3.17.1" </del> <ins> vscode-languageserver-protocol "3.17.2-next.5" </ins> <del> vscode-languageserver-protocol@3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.1.tgz#e801762c304f740208b6c804a0cf21f2c87509ed" integrity sha512-BNlAYgQoYwlSgDLJhSG+DeA8G1JyECqRzM2YO6tMmMji3Ad9Mw6AW7vnZMti90qlAKb0LqAlJfSVGEdqMMNzKg== </del> <ins> vscode-languageserver-protocol@3.17.2-next.5: version "3.17.2-next.5" resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2-next.5.tgz#9bc747411c3ce9e1d73c2714bf6555e0199eec26" integrity sha512-UlH+QL4Q4lX94of/UPDDwwWIkd8w7dtMW4khzvEDUoykiG9tba0iG6V0bAiv8XVpnBIUYjL2FNFiL3zl+TY1Sw== </ins> dependencies: <del> vscode-jsonrpc "8.0.1" vscode-languageserver-types "3.17.1" </del> <ins> vscode-jsonrpc "8.0.2-next.1" vscode-languageserver-types "3.17.2-next.2" </ins> <del> vscode-languageserver-types@3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.1.tgz#c2d87fa7784f8cac389deb3ff1e2d9a7bef07e16" integrity sha512-K3HqVRPElLZVVPtMeKlsyL9aK0GxGQpvtAUTfX4k7+iJ4mc1M+JM+zQwkgGy2LzY0f0IAafe8MKqIkJrxfGGjQ== </del> <ins> vscode-languageserver-types@3.17.2-next.2: version "3.17.2-next.2" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2-next.2.tgz#af5d6978eee7682aab87c1419323f5b141ac6596" integrity sha512-TiAkLABgqkVWdAlC3XlOfdhdjIAdVU4YntPUm9kKGbXr+MGwpVnKz2KZMNBcvG0CFx8Hi8qliL0iq+ndPB720w== </ins> vscode-nls@^5.0.1: version "5.0.1"


actionRunner: this._actionRunner, actions: rest, contextMenuProvider: this._contextMenuService, <ins> ariaLabel: action.label </ins> }); } else { action = actionOrSubmenu; btn = this.addButton({ secondary: conifgProvider(action)?.isSecondary ?? secondary, <ins> ariaLabel: action.label </ins> }); }


disturl "https://electronjs.org/headers" target "29.4.0" <del> ms_build_id "9593362" </del> <ins> ms_build_id "9728852" </ins> runtime "electron" build_from_source "true"


assert.deepStrictEqual(cellList.getViewScrollBottom(), 210); // scroll to 5 <ins> cellList.updateElementHeight2(viewModel.cellAt(0)!, 50); </ins> cellList.scrollTop = 5; assert.deepStrictEqual(cellList.scrollTop, 5); assert.deepStrictEqual(cellList.getViewScrollBottom(), 215);


this._currentName = currentName; this._input.domNode.value = currentName; <ins> this._input.domNode.setAttribute('selectionStart', selectionStart.toString()); this._input.domNode.setAttribute('selectionEnd', selectionEnd.toString()); </ins> this._input.domNode.size = Math.max((where.endColumn - where.startColumn) * 1.1, 20); // determines width const disposeOnDone = new DisposableStore();


assert.equal(editor.getValue(), '    let name = foo'); }); <ins> test('use additionalTextEdits sync when possible', async function () { disposables.add(CompletionProviderRegistry.register({ scheme: 'test-ctrl' }, { provideCompletionItems(doc, pos) { return { suggestions: [{ kind: CompletionItemKind.Snippet, label: 'let', insertText: 'hello', range: Range.fromPositions(pos), additionalTextEdits: [{ text: 'I came sync', range: { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 1 } }] }] }; }, async resolveCompletionItem(item) { return item; } })); editor.setValue('hellonhallo'); editor.setSelection(new Selection(2, 6, 2, 6)); // trigger let p1 = Event.toPromise(controller.model.onDidSuggest); controller.triggerSuggest(); await p1; // let p2 = Event.toPromise(controller.model.onDidCancel); controller.acceptSelectedSuggestion(false, false); await p2; // insertText happens sync! assert.equal(editor.getValue(), 'I came synchellonhallohello'); }); test('resolve additionalTextEdits async when needed', async function () { let resolveCallCount = 0; disposables.add(CompletionProviderRegistry.register({ scheme: 'test-ctrl' }, { provideCompletionItems(doc, pos) { return { suggestions: [{ kind: CompletionItemKind.Snippet, label: 'let', insertText: 'hello', range: Range.fromPositions(pos) }] }; }, async resolveCompletionItem(item) { resolveCallCount += 1; await timeout(10); item.additionalTextEdits = [{ text: 'I came late', range: { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 1 } }]; return item; } })); editor.setValue('hellonhallo'); editor.setSelection(new Selection(2, 6, 2, 6)); // trigger let p1 = Event.toPromise(controller.model.onDidSuggest); controller.triggerSuggest(); await p1; // let p2 = Event.toPromise(controller.model.onDidCancel); controller.acceptSelectedSuggestion(false, false); await p2; // insertText happens sync! assert.equal(editor.getValue(), 'hellonhallohello'); assert.equal(resolveCallCount, 1); // additional edits happened after a litte wait await timeout(20); assert.equal(editor.getValue(), 'I came latehellonhallohello'); // single undo stop editor.getModel()?.undo(); assert.equal(editor.getValue(), 'hellonhallo'); }); test('resolve additionalTextEdits async when needed (typing)', async function () { let resolveCallCount = 0; let resolve: Function = () => { }; disposables.add(CompletionProviderRegistry.register({ scheme: 'test-ctrl' }, { provideCompletionItems(doc, pos) { return { suggestions: [{ kind: CompletionItemKind.Snippet, label: 'let', insertText: 'hello', range: Range.fromPositions(pos) }] }; }, async resolveCompletionItem(item) { resolveCallCount += 1; await new Promise(_resolve => resolve = _resolve); item.additionalTextEdits = [{ text: 'I came late', range: { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 1 } }]; return item; } })); editor.setValue('hellonhallo'); editor.setSelection(new Selection(2, 6, 2, 6)); // trigger let p1 = Event.toPromise(controller.model.onDidSuggest); controller.triggerSuggest(); await p1; // let p2 = Event.toPromise(controller.model.onDidCancel); controller.acceptSelectedSuggestion(false, false); await p2; // insertText happens sync! assert.equal(editor.getValue(), 'hellonhallohello'); assert.equal(resolveCallCount, 1); // additional edits happened after a litte wait assert.ok(editor.getSelection()?.equalsSelection(new Selection(2, 11, 2, 11))); editor.trigger('test', 'type', { text: 'TYPING' }); assert.equal(editor.getValue(), 'hellonhallohelloTYPING'); resolve(); await timeout(10); assert.equal(editor.getValue(), 'I came latehellonhallohelloTYPING'); assert.ok(editor.getSelection()?.equalsSelection(new Selection(2, 17, 2, 17))); }); // additional edit come late and are AFTER the selection -> cancel test('resolve additionalTextEdits async when needed (simple conflict)', async function () { let resolveCallCount = 0; let resolve: Function = () => { }; disposables.add(CompletionProviderRegistry.register({ scheme: 'test-ctrl' }, { provideCompletionItems(doc, pos) { return { suggestions: [{ kind: CompletionItemKind.Snippet, label: 'let', insertText: 'hello', range: Range.fromPositions(pos) }] }; }, async resolveCompletionItem(item) { resolveCallCount += 1; await new Promise(_resolve => resolve = _resolve); item.additionalTextEdits = [{ text: 'I came late', range: { startLineNumber: 1, startColumn: 6, endLineNumber: 1, endColumn: 6 } }]; return item; } })); editor.setValue(''); editor.setSelection(new Selection(1, 1, 1, 1)); // trigger let p1 = Event.toPromise(controller.model.onDidSuggest); controller.triggerSuggest(); await p1; // let p2 = Event.toPromise(controller.model.onDidCancel); controller.acceptSelectedSuggestion(false, false); await p2; // insertText happens sync! assert.equal(editor.getValue(), 'hello'); assert.equal(resolveCallCount, 1); resolve(); await timeout(10); assert.equal(editor.getValue(), 'hello'); }); // additional edit come late and are AFTER the position at which the user typed -> cancelled test('resolve additionalTextEdits async when needed (conflict)', async function () { let resolveCallCount = 0; let resolve: Function = () => { }; disposables.add(CompletionProviderRegistry.register({ scheme: 'test-ctrl' }, { provideCompletionItems(doc, pos) { return { suggestions: [{ kind: CompletionItemKind.Snippet, label: 'let', insertText: 'hello', range: Range.fromPositions(pos) }] }; }, async resolveCompletionItem(item) { resolveCallCount += 1; await new Promise(_resolve => resolve = _resolve); item.additionalTextEdits = [{ text: 'I came late', range: { startLineNumber: 1, startColumn: 2, endLineNumber: 1, endColumn: 2 } }]; return item; } })); editor.setValue('hellonhallo'); editor.setSelection(new Selection(2, 6, 2, 6)); // trigger let p1 = Event.toPromise(controller.model.onDidSuggest); controller.triggerSuggest(); await p1; // let p2 = Event.toPromise(controller.model.onDidCancel); controller.acceptSelectedSuggestion(false, false); await p2; // insertText happens sync! assert.equal(editor.getValue(), 'hellonhallohello'); assert.equal(resolveCallCount, 1); // additional edits happened after a litte wait editor.setSelection(new Selection(1, 1, 1, 1)); editor.trigger('test', 'type', { text: 'TYPING' }); assert.equal(editor.getValue(), 'TYPINGhellonhallohello'); resolve(); await timeout(10); assert.equal(editor.getValue(), 'TYPINGhellonhallohello'); assert.ok(editor.getSelection()?.equalsSelection(new Selection(1, 7, 1, 7))); }); test('resolve additionalTextEdits async when needed (cancel)', async function () { let resolve: Function[] = []; disposables.add(CompletionProviderRegistry.register({ scheme: 'test-ctrl' }, { provideCompletionItems(doc, pos) { return { suggestions: [{ kind: CompletionItemKind.Snippet, label: 'let', insertText: 'hello', range: Range.fromPositions(pos) }, { kind: CompletionItemKind.Snippet, label: 'let', insertText: 'hallo', range: Range.fromPositions(pos) }] }; }, async resolveCompletionItem(item) { await new Promise(_resolve => resolve.push(_resolve)); item.additionalTextEdits = [{ text: 'additionalTextEdits', range: { startLineNumber: 1, startColumn: 2, endLineNumber: 1, endColumn: 2 } }]; return item; } })); editor.setValue('abc'); editor.setSelection(new Selection(1, 1, 1, 1)); // trigger let p1 = Event.toPromise(controller.model.onDidSuggest); controller.triggerSuggest(); await p1; // let p2 = Event.toPromise(controller.model.onDidCancel); controller.acceptSelectedSuggestion(true, false); await p2; // insertText happens sync! assert.equal(editor.getValue(), 'helloabc'); // next controller.acceptNextSuggestion(); // resolve additional edits (MUST be cancelled) resolve.forEach(fn => fn); resolve.length = 0; await timeout(10); // next suggestion used assert.equal(editor.getValue(), 'halloabc'); }); </ins> });


// create the suggestion resolver if (typeof provider.resolveCompletionItem !== 'function') { this._resolveCache = Promise.resolve(); <ins> this._isResolved = true; </ins> } } // resolving get isResolved() { <del> return Boolean(this._resolveCache); </del> <ins> return Boolean(this._isResolved); </ins> } private _resolveCache?: Promise<void>; <ins> private _isResolved?: boolean; </ins> async resolve(token: CancellationToken) { if (!this._resolveCache) { const sub = token.onCancellationRequested(() => { this._resolveCache = undefined; <ins> this._isResolved = false; </ins> }); this._resolveCache = Promise.resolve(this.provider.resolveCompletionItem!(this.completion, token)).then(value => { Object.assign(this.completion, value); <ins> this._isResolved = true; </ins> sub.dispose(); }, err => { if (isPromiseCanceledError(err)) { // the IPC queue will reject the request with the // cancellation error -> reset cached this._resolveCache = undefined; <ins> this._isResolved = false; </ins> } }); }


readonly outputScrolling?: boolean; readonly outputLinkifyFilePaths?: boolean; readonly minimalError?: boolean; <ins> readonly readonly?: boolean; </ins> } const defaultConfigConstants = Object.freeze({


export type SocketCloseEvent = NodeSocketCloseEvent | WebSocketCloseEvent | undefined; <ins> export interface SocketTimeoutEvent { readonly unacknowledgedMsgCount: number; readonly timeSinceOldestUnacknowledgedMsg: number; readonly timeSinceLastReceivedSomeData: number; } </ins> export interface ISocket extends IDisposable { onData(listener: (e: VSBuffer) => void): IDisposable; onClose(listener: (e: SocketCloseEvent) => void): IDisposable;


<del> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ declare module 'vscode' { // https://github.com/microsoft/vscode/issues/144944 /** * Impacts the behavior and appearance of the validation message. */ export enum InputBoxValidationSeverity { Info = 1, Warning = 2, Error = 3 } /** * Object to configure the behavior of the validation message. */ export interface InputBoxValidationMessage { /** * The validation message to display. */ readonly message: string; /** * The severity of the validation message. * NOTE: When using `InputBoxValidationSeverity.Error`, the user will not be allowed to accept (hit ENTER) the input. * `Info` and `Warning` will still allow the InputBox to accept the input. */ readonly severity: InputBoxValidationSeverity; } export interface InputBoxOptions { /** * The validation message to display. This will become the new {@link InputBoxOptions#validateInput} upon finalization. */ validateInput2?(value: string): string | InputBoxValidationMessage | undefined | null | Thenable<string | InputBoxValidationMessage | undefined | null>; } export interface InputBox { /** * The validation message to display. This will become the new {@link InputBox#validationMessage} upon finalization. */ validationMessage2: string | InputBoxValidationMessage | undefined; } } </del>


return parsedPath.ext.slice(1); default: { // dirname and dirname(arg) const n = variable === 'dirname' ? 0 : parseInt(arg); <del> const nthDir = this.getNthDirname(parsedPath, n); </del> <ins> const nthDir = this.getNthDirname(relevantPath, n); </ins> if (nthDir) { return nthDir; }


readonly token?: CancellationToken; } <del> /*marked.* </del> <ins> /** </ins> * Renders a string of markdown as a document. * * Uses VS Code's syntax highlighting code blocks.


constructor() { super({ id: SETTINGS_EDITOR_COMMAND_FOCUS_CONTROL, <del> precondition: CONTEXT_SETTINGS_ROW_FOCUS, </del> <ins> precondition: ContextKeyExpr.and(CONTEXT_SETTINGS_EDITOR, CONTEXT_SETTINGS_ROW_FOCUS), </ins> keybinding: { primary: KeyCode.Enter, weight: KeybindingWeight.WorkbenchContrib,


@IInstantiationService private readonly instantiationService: IInstantiationService, @ISharedProcessService private readonly sharedProcessService: ISharedProcessService, @IProgressService private readonly progressService: IProgressService, <del> @ILabelService private readonly labelService: ILabelService, @IUriIdentityService private readonly uriIdentityService: IUriIdentityService </del> <ins> @ILabelService private readonly labelService: ILabelService </ins> ) { super();


# This makes sure the model is included in the package !@vscode/vscode-languagedetection/model/** <ins> # Ensure only the required telemetry pieces are loaded in web to reduce bundle size @microsoft/1ds-core-js/** @microsoft/1ds-post-js/** @microsoft/applicationinsights-core-js/** @microsoft/applicationinsights-shims/** !@microsoft/1ds-core-js/dist/ms.core.min.js !@microsoft/1ds-post-js/dist/ms.post.min.js !@microsoft/applicationinsights-core-js/browser/applicationinsights-core-js.min.js !@microsoft/applicationinsights-shims/dist/umd/applicationinsights-shims.min.js </ins>


})); } <ins> clearInput(): void { this.contentDisposables.clear(); this.transientDisposables.clear(); super.clearInput(); } </ins> focus(): void { if (this.activeElement) { this.activeElement.focus();


}, { "command": "npm.packageManager", <del> "title": "%command.packageManager" </del> <ins> "title": "%command.packageManager%" </ins> } ], "menus": {


return GitErrorCodes.RepositoryNotFound; } else if (/unable to access/.test(stderr)) { return GitErrorCodes.CantAccessRemote; <ins> } else if (/Couldn't find remote ref/.test(stderr)) { return GitErrorCodes.CantAccessRemote; </ins> } return void 0;


this.selectedConfig = config || (this.selectedLaunch && this.selectedName ? this.selectedLaunch.getConfiguration(this.selectedName) : undefined); if (this.selectedConfig) { this.debugConfigurationTypeContext.set(this.selectedConfig.type); <del> this.storageService.store(DEBUG_SELECTED_CONFIG, JSON.stringify(this.selectedConfig), StorageScope.WORKSPACE); </del> } else { this.debugConfigurationTypeContext.reset(); <del> this.storageService.remove(DEBUG_SELECTED_CONFIG, StorageScope.WORKSPACE); </del> } if (this.selectedLaunch !== previousLaunch || this.selectedName !== previousName) {


return this._modelService.createModel(resource.fragment, null, resource, false); } <ins> public showAccessibleViewHelp(): void { if (!this._currentProvider) { return; } const previousProvider = Object.assign({}, this._currentProvider); const accessibleViewHelpProvider = Object.assign({}, this._currentProvider); accessibleViewHelpProvider.options.type = AccessibleViewType.Help; accessibleViewHelpProvider.provideContent = () => this._getAccessibleViewHelpDialogContent(accessibleViewHelpProvider!); accessibleViewHelpProvider.onClose = () => this.show(previousProvider); this._accessiblityHelpIsShown.set(true); const delegate: IContextViewDelegate = { getAnchor: () => { return { x: (window.innerWidth / 2) - ((Math.min(this._layoutService.dimension.width * 0.62 /* golden cut */, DIMENSIONS.MAX_WIDTH)) / 2), y: this._layoutService.offset.quickPickTop }; }, render: (container) => { container.classList.add('accessible-view-container'); return this._render(accessibleViewHelpProvider, container, true); }, }; this._contextViewService.showContextView(delegate); } private _getAccessibleViewHelpDialogContent(provider: IAccessibleContentProvider): string { const navigationHint = this._getNavigationAriaHint(provider.verbositySettingKey); const goToSymbolHint = this._getGoToSymbolHint(provider); return [navigationHint, goToSymbolHint].filter(i => !!i).join('n'); } </ins> private _getNavigationAriaHint(verbositySettingKey: AccessibilityVerbositySettingId): string { let hint = ''; const nextKeybinding = this._keybindingService.lookupKeybinding('editor.action.accessibleViewNext')?.getAriaLabel();


import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures'; import { CopyAction } from 'vs/editor/contrib/clipboard/browser/clipboard'; import { localize } from 'vs/nls'; <ins> import { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from 'vs/platform/accessibility/common/accessibility'; </ins> import { Action2, MenuId, registerAction2 } from 'vs/platform/actions/common/actions'; import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; <ins> import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; </ins> import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { TerminalLocation } from 'vs/platform/terminal/common/terminal'; import { IUntitledTextResourceEditorInput } from 'vs/workbench/common/editor';


return undefined; } <del> export function getSelectionTextFromEditor(allowUnselectedWord: boolean, editor: IEditor): string | null { </del> <ins> export function getSelectionTextFromEditor(allowUnselectedWord: boolean, activeEditor: IEditor): string | null { let editor = activeEditor; if (isDiffEditor(editor)) { if (editor.getOriginalEditor().hasTextFocus()) { editor = editor.getOriginalEditor(); } else { editor = editor.getModifiedEditor(); } } </ins> if (!isCodeEditor(editor) || !editor.hasModel()) { return null;


const viewStartPosition = this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelStartPosition); const verticalOffsetStart = this._context.viewLayout.getVerticalOffsetForLineNumber(viewStartPosition.lineNumber); const editorScrollTop = this._context.viewLayout.getCurrentScrollTop(); <ins> const editorScrollLeft = this._context.viewLayout.getCurrentScrollLeft(); </ins> const top = parentBounds.top + verticalOffsetStart - editorScrollTop; const height = (this._primarySelection.endLineNumber - this._primarySelection.startLineNumber + 1) * lineHeight; <del> let left = parentBounds.left + contentLeft; </del> <ins> let left = parentBounds.left + contentLeft - editorScrollLeft; </ins> let width: number; if (this._primarySelection.isEmpty()) {


private hoverPosition: Position | null = null; private mouseDown = false; private exceptionWidgetVisible: IContextKey<boolean>; <ins> private gutterIsHovered = false; </ins> private exceptionWidget: ExceptionWidget | undefined; private configurationWidget: FloatingClickWidget | undefined;


// Dispose old listeners this.activeEditorListeners.clear(); <del> // Handle editor change unless the editor is transient </del> <ins> // Handle editor change unless the editor is transient. In that case // setup a listener to see if the transient editor becomes non-transient // (https://github.com/microsoft/vscode/issues/211769) </ins> if (!activeEditorPane?.group.isTransient(activeEditorPane.input)) { this.handleActiveEditorChange(activeEditorGroup, activeEditorPane); } else { <del> this.logService.trace(`[History]: ignoring transient editor change (editor: ${activeEditorPane.input?.resource?.toString()}})`); </del> <ins> this.logService.trace(`[History]: ignoring transient editor change until becoming non-transient (editor: ${activeEditorPane.input?.resource?.toString()}})`); const transientListener = activeEditorGroup.onDidModelChange(e => { if (e.kind === GroupModelChangeKind.EDITOR_TRANSIENT && e.editor === activeEditorPane.input && !activeEditorPane.group.isTransient(activeEditorPane.input)) { transientListener.dispose(); this.handleActiveEditorChange(activeEditorGroup, activeEditorPane); } }); this.activeEditorListeners.add(transientListener); </ins> } // Listen to selection changes unless the editor is transient


this.ariaLabel = label; } <del> setMarkerSelection(marker: Marker): void { </del> <ins> setMarkerSelection(selection?: Marker[], focus?: Marker[]): void { </ins> if (this.isVisible()) { <del> if (marker) { const markerNode = this.findMarkerNode(marker); </del> <ins> if (selection && selection.length > 0) { this.setSelection(selection.map(m => this.findMarkerNode(m))); </ins> <del> if (markerNode) { this.setFocus([markerNode]); this.setSelection([markerNode]); </del> <ins> if (focus && focus.length > 0) { this.setFocus(focus.map(f => this.findMarkerNode(f))); } else { this.setFocus([this.findMarkerNode(selection[0])]); </ins> } } else if (this.getSelection().length === 0) { const firstVisibleElement = this.firstVisibleElement;


readonly initialCwd?: string; readonly os?: OperatingSystem; readonly capabilities: ITerminalCapabilityStore; <ins> readonly usedShellIntegrationInjection: boolean; </ins> readonly statusList: ITerminalStatusList;


"vscode-proxy-agent": "^0.12.0", "vscode-regexpp": "^3.1.0", "vscode-textmate": "7.0.1", <del> "xterm": "4.19.0-beta.24", "xterm-addon-search": "0.9.0-beta.21", </del> <ins> "xterm": "4.19.0-beta.25", "xterm-addon-search": "0.9.0-beta.22", </ins> "xterm-addon-serialize": "0.7.0-beta.12", "xterm-addon-unicode11": "0.4.0-beta.3", <del> "xterm-addon-webgl": "0.12.0-beta.28", "xterm-headless": "4.19.0-beta.24", </del> <ins> "xterm-addon-webgl": "0.12.0-beta.29", "xterm-headless": "4.19.0-beta.25", </ins> "yauzl": "^2.9.2", "yazl": "^2.4.3" },


resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.207.tgz#9c3310ebace2952903d05dcaba8abe3a4ed44c01" integrity sha512-piH7MJDJp4rJCduWbVvmUd59AUne1AFBJ8JaRQvk0KzNTSUnZrVXHCZc+eg+CGE4OujkcLJznhGKD6tuAshj5Q== <del> electron@19.1.8: version "19.1.8" resolved "https://registry.yarnpkg.com/electron/-/electron-19.1.8.tgz#3ce19c270ca86d05bbf0df5ceeaea2d23edc7083" integrity sha512-UfPQdFjgKI0xCm1V5sV3iAVOs0kCwAE91xWzV5tI7ij14yOkxTdXp9BqTzFaSbQYLYxn6q1BUUe1nlzjJjzAnw== </del> <ins> electron@19.1.9: version "19.1.9" resolved "https://registry.yarnpkg.com/electron/-/electron-19.1.9.tgz#01995eea4014f7cdb2f616f5f3492d4ed6f5e4f0" integrity sha512-XT5LkTzIHB+ZtD3dTmNnKjVBWrDWReCKt9G1uAFLz6uJMEVcIUiYO+fph5pLXETiBw/QZBx8egduMEfIccLx+g== </ins> dependencies: "@electron/get" "^1.14.1" "@types/node" "^16.11.26"


} }); } <del> run(accessor: ServicesAccessor, args?: IOpenSettingsActionOptions) { args = sanitizeOpenSettingsArgs(args); </del> <ins> run(accessor: ServicesAccessor, args?: string | IOpenSettingsActionOptions) { // Match the behaviour of workbench.action.openSettings args = typeof args === 'string' ? { query: args } : sanitizeOpenSettingsArgs(args); </ins> return accessor.get(IPreferencesService).openWorkspaceSettings(args); } });


this.outputElements.get(request.outputId)?.updateScroll(request.outputOffset); if (request.forceDisplay) { <del> this.element.style.visibility = 'visible'; </del> <ins> this.element.style.visibility = ''; </ins> } } }


} } <del> private updateCompositeSwitcher(): void { </del> <ins> private updateCompositeSwitcher(donotTrigger?: boolean): void { </ins> const compositeSwitcherBar = this.compositeSwitcherBar; if (!compositeSwitcherBar || !this.dimension) { return; // We have not been rendered yet so there is nothing to update.


resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.4.0-beta.3.tgz#f350184155fafd5ad0d6fbf31d13e6ca7dea1efa" integrity sha512-FryZAVwbUjKTmwXnm1trch/2XO60F5JsDvOkZhzobV1hm10sFLVuZpFyHXiUx7TFeeFsvNP+S77LAtWoeT5z+Q== <del> xterm-addon-webgl@0.12.0-beta.28: version "0.12.0-beta.28" resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.12.0-beta.28.tgz#252f88fd15816c23789659a0e2545682cf1eec9c" integrity sha512-xpqZRYlyv+aNdDl46W2Hi2fxakNvdJDmWhOwGHPjOmex+kOYdBvVn4rRZmJ7xrKFuQVOfzb3SQCmpZ/njCpBJA== </del> <ins> xterm-addon-webgl@0.12.0-beta.29: version "0.12.0-beta.29" resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.12.0-beta.29.tgz#7a508595c4521d14d7ed4315a121f9e3f230a0f0" integrity sha512-NcZBsD0ar3ZpQX070hDIsyEBl/StRMNu6U+9crNpiD2rQVfkM1vcWkOv31Zlj3eu6/f8z5aStyZLRMCGFwiRbA== </ins> <del> xterm-headless@4.19.0-beta.24: version "4.19.0-beta.24" resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-4.19.0-beta.24.tgz#17dab68ae1b2600b0926d4c47032599f3b2f24cc" integrity sha512-Coq8gQ9f5/kNr1yhpXTZqatTOHOYDF4XVp93SM12vRROH64bM0rUMec6ukuTAd8DD97UOWYUgR+n7+xD0iTTSg== </del> <ins> xterm-headless@4.19.0-beta.25: version "4.19.0-beta.25" resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-4.19.0-beta.25.tgz#a0a1b59f386c44458f06b8ced64e3567371cc983" integrity sha512-UswSgymk3g9i6XTpFAasnqqIvWhi+AEWT+iO3kkjII6ll+dYEQgeZAv92EnCmeRHp11u5TP+IBAo8jy+aTYbtA== </ins> <del> xterm@4.19.0-beta.24: version "4.19.0-beta.24" resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0-beta.24.tgz#12b62877d4cf133f4626db3a15f6ed267b3bbcb5" integrity sha512-GydvC2ExdsfjkiXhUVuZtDhc89IZfyMLFgw/nwWHrvkyq4iCVsHbMloEObV3lZmv+0oRpcGtTiorfzdWGiHG0A== </del> <ins> xterm@4.19.0-beta.25: version "4.19.0-beta.25" resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0-beta.25.tgz#38f92d0fef1cfdb290ef8994449a04fa1a8c90a7" integrity sha512-pDiMWKN1Cj4+X/K9Xegp0SA0ZDEGVqiq7RPSy8oZO2wo2rze1BF20PAZb3/RSp30eY5WyOKilKnck4yNOsPzHw== </ins> y18n@^3.2.1: version "3.2.2"


} this.activeRequests.splice(this.activeRequests.indexOf(listener), 1); <ins> listener.dispose(); </ins> if (this.activeRequests.length === 0) { this.disposeDelayer.trigger(() => this.disposeClient());


return res; } <ins> // we are here when no provider prepared a location which means we can // just rely on the word under cursor and start with the first provider this._providerRenameIdx = 0; </ins> const word = this.model.getWordAtPosition(this.position); if (!word) { return {


private async render() { if (this._previewState !== PreviewState.Disposed) { <del> this.webviewEditor.webview.html = await this.getWebiewContents(); </del> <ins> this.webviewEditor.webview.html = await this.getWebviewContents(); </ins> } }


font-family: var(--monaco-monospace-font); font-size: 12px; color: var(--vscode-textPreformat-foreground); <del> background-color: var(--vscode-textPreformat-background); </del> padding: 1px 3px; border-radius: 4px; }


private async _sync(repository: Repository, rebase: boolean): Promise<void> { const HEAD = repository.HEAD; <del> if (!HEAD || !HEAD.upstream) { </del> <ins> if (!HEAD) { return; } else if (!HEAD.upstream) { const branchName = HEAD.name; const message = localize('confirm publish branch', "The branch '{0}' has no upstream branch. Would you like to publish this branch?", branchName); const yes = localize('ok', "OK"); const pick = await window.showWarningMessage(message, { modal: true }, yes); if (pick === yes) { await this.publish(repository); } </ins> return; }


Hover = 'accessibility.verbosity.hover', Notification = 'accessibility.verbosity.notification', EmptyEditorHint = 'accessibility.verbosity.emptyEditorHint', <del> Comments = 'accessibility.verbosity.comments' </del> <ins> Comments = 'accessibility.verbosity.comments', DiffEditorActive = 'accessibility.verbosity.diffEditorActive' </ins> } export const enum AccessibleViewProviderId {


} } <del> export class RevertButton implements IGlyphMarginWidget { </del> <ins> export class RevertButton extends Disposable implements IGlyphMarginWidget { </ins> public static counter = 0; private readonly _id: string = `revertButton${RevertButton.counter++}`;


const innerContent = document.createElement('div'); innerContent.classList.add('walkThroughContent'); // only for markdown files const markdown = this.expandMacros(content); <del> safeInnerHtml(innerContent, markdown); </del> <ins> safeInnerHtml(innerContent, markdown, { ALLOW_UNKNOWN_PROTOCOLS: true }); </ins> this.content.appendChild(innerContent); model.snippets.forEach((snippet, i) => {