.interactive-session .interactive-input-part .interactive-execute-toolbar { height: 22px; <ins> /* It's bottom-aligned, make it appear centered within the container */ margin-bottom: 7px; </ins> } .interactive-session .interactive-input-part .interactive-execute-toolbar .codicon-debug-stop {


@IConfigurationService configurationService: IConfigurationService, @IEditorService editorService: IEditorService, @IBackupFileService backupFileService: IBackupFileService, <ins> @IWorkspaceContextService contextService: IWorkspaceContextService, </ins> @ILifecycleService lifecycleService: ILifecycleService, ) { <del> const enabled = isWelcomePageEnabled(configurationService); </del> <ins> const enabled = isWelcomePageEnabled(configurationService, contextService); </ins> if (enabled && lifecycleService.startupKind !== StartupKind.ReloadedWindow) { backupFileService.hasBackups().then(hasBackups => { const activeEditor = editorService.activeEditor;


import { mainWindow } from 'vs/base/browser/window'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { TitlebarStyle } from 'vs/platform/window/common/window'; <ins> import { IPreferencesService } from 'vs/workbench/services/preferences/common/preferences'; </ins> // Register Icons const menubarIcon = registerIcon('menuBar', Codicon.layoutMenubar, localize('menuBarIcon', "Represents the menu bar"));


* Search text in files across all {@link workspace.workspaceFolders workspace folders} in the workspace. * @param query The query parameters for the search - the search string, whether it's case-sensitive, or a regex, or matches whole words. * @param options An optional set of query options. <del> * @param callback A callback, called for each result </del> <ins> * @param callback A callback, called for each {@link TextSearchResultNew result}. This can be a direct match, or context that surrounds a match. </ins> * @param token A token that can be used to signal cancellation to the underlying search engine. * @return A thenable that resolves when the search is complete. */


if (this._preLaunchInputQueue.length > 0) { this._process.send({ event: 'input', <del> data: this._sanitizeInput(this._preLaunchInputQueue) </del> <ins> data: this._preLaunchInputQueue </ins> }); this._preLaunchInputQueue = null; }


private getResourcePath(webviewEditor: vscode.WebviewPanel, resource: vscode.Uri, version: string) { switch (resource.scheme) { case 'data': <del> return encodeURI(resource.toString(true)); </del> <ins> return resource.toString(true); </ins> case 'git': // Show blank image <del> return encodeURI('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAEElEQVR42gEFAPr/AP///wAI/AL+Sr4t6gAAAABJRU5ErkJggg=='); </del> <ins> return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAEElEQVR42gEFAPr/AP///wAI/AL+Sr4t6gAAAABJRU5ErkJggg=='; </ins> default: // Avoid adding cache busting if there is already a query string if (resource.query) { <del> return encodeURI(webviewEditor.webview.asWebviewUri(resource).toString(true)); </del> <ins> return encodeURI(webviewEditor.webview.asWebviewUri(resource).toString()); </ins> } <del> return encodeURI(webviewEditor.webview.asWebviewUri(resource).toString(true) + `?version=${version}`); </del> <ins> return encodeURI(webviewEditor.webview.asWebviewUri(resource).toString() + `?version=${version}`); </ins> } }


import * as nls from 'vs/nls'; import { IContextKey, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; <del> import { editorSelectionBackground, iconForeground, registerColor, transparent } from 'vs/platform/theme/common/colorRegistry'; </del> import { FoldingDecorationProvider } from './foldingDecorations'; import { FoldingRegion, FoldingRegions, FoldRange, FoldSource, ILineRange } from './foldingRanges'; import { SyntaxRangeProvider } from './syntaxRangeProvider';


@ILabelService private readonly labelService: ILabelService, @IProductService private readonly productService: IProductService, @IBrowserWorkbenchEnvironmentService private readonly environmentService: IBrowserWorkbenchEnvironmentService, <del> @IWorkbenchLayoutService private readonly layoutService: IWorkbenchLayoutService </del> <ins> @IWorkbenchLayoutService private readonly layoutService: IWorkbenchLayoutService, @IHostService private readonly hostService: IHostService </ins> ) { super();


const scrollTop = scrollTopObservable.read(reader); const scrollHeight = scrollHeightObservable.read(reader); <del> const computedAvailableSize = Math.max(0, layoutInfo.height); const computedRepresentableSize = Math.max(0, computedAvailableSize - 2 * 0); const computedRatio = scrollHeight > 0 ? (computedRepresentableSize / scrollHeight) : 0; const computedSliderSize = Math.max(0, Math.floor(layoutInfo.height * computedRatio)); const computedSliderPosition = Math.floor(scrollTop * computedRatio); viewportDomElement.setTop(computedSliderPosition); viewportDomElement.setHeight(computedSliderSize); </del> <ins> const scrollBarOptions = this._editors.modified.getOption(EditorOption.scrollbar); const state = new ScrollbarState( scrollBarOptions.verticalHasArrows ? scrollBarOptions.arrowSize : 0, scrollBarOptions.verticalScrollbarSize, 0, layoutInfo.height, scrollHeight, scrollTop ); viewportDomElement.setTop(state.getSliderPosition()); viewportDomElement.setHeight(state.getSliderSize()); </ins> } else { viewportDomElement.setTop(0); viewportDomElement.setHeight(0);


// Get All types of recommendations, trimmed to show a max of 8 at any given time private async getAllRecommendationsModel(options: IQueryOptions, token: CancellationToken): Promise<IPagedModel<IExtension>> { <del> const local = (await this.extensionsWorkbenchService.queryLocal(this.options.server)).map(e => e.identifier.id.toLowerCase()); </del> <ins> const localExtensions = await this.extensionsWorkbenchService.queryLocal(this.options.server); const localExtensionIds = localExtensions.map(e => e.identifier.id.toLowerCase()); </ins> const allRecommendations = distinct( flatten(await Promise.all([


'use strict'; import * as assert from 'assert'; <del> import { IFilter, or, matchesPrefix, matchesStrictPrefix, matchesCamelCase, matchesSubString, matchesContiguousSubString, matchesWords } from 'vs/base/common/filters'; </del> <ins> import { IFilter, or, matchesPrefix, matchesStrictPrefix, matchesCamelCase, matchesSubString, matchesContiguousSubString, matchesWords, fuzzyMatchAndScore } from 'vs/base/common/filters'; </ins> function filterOk(filter: IFilter, word: string, wordToMatchAgainst: string, highlights?: { start: number; end: number; }[]) { let r = filter(word, wordToMatchAgainst);


interface UriState extends UriComponents { $mid: number; <del> fsPath: string; </del> external: string; <ins> fsPath: string; _sep: 1 | undefined; </ins> } <ins> const _pathSepMarker = isWindows ? 1 : undefined; </ins> // tslint:disable-next-line:class-name class _URI extends URI {


const workingCopyAdapter = new class implements IWorkingCopy { readonly resource = input.modelUri; get name() { return input.getName(); } <del> readonly capabilities = input.isUntitled() ? WorkingCopyCapabilities.Untitled : 0; </del> <ins> readonly capabilities = input.isUntitled() ? WorkingCopyCapabilities.Untitled : WorkingCopyCapabilities.None; </ins> readonly onDidChangeDirty = input.onDidChangeDirty; readonly onDidChangeContent = input.onDidChangeContent; isDirty(): boolean { return input.isDirty(); }


minimap: { enabled: false }, <ins> wordWrap: 'on', </ins> }; const diffEditorOptions: IDiffEditorConstructionOptions = {


moveTo(thisCursor, 1, 8); moveTo(thisCursor, 3, 9, true); moveToBeginningOfLine(thisCursor, false); <del> assertCursor(thisCursor, new Selection(1, 6, 1, 6)); </del> <ins> assertCursor(thisCursor, new Selection(3, 5, 3, 5)); </ins> }); test('move to beginning of line with selection multiline backward', () => {


this._slider.setHeight(layout.sliderHeight); // Compute horizontal slider coordinates <del> const scrollLeftChars = renderingCtx.scrollLeft / this._model.options.typicalHalfwidthCharacterWidth; const horizontalSliderLeft = Math.min(this._model.options.minimapWidth, Math.round(scrollLeftChars * this._model.options.minimapCharWidth / this._model.options.pixelRatio)); this._sliderHorizontal.setLeft(horizontalSliderLeft); this._sliderHorizontal.setWidth(this._model.options.minimapWidth - horizontalSliderLeft); </del> <ins> this._sliderHorizontal.setLeft(0); this._sliderHorizontal.setWidth(this._model.options.minimapWidth); </ins> this._sliderHorizontal.setTop(0); this._sliderHorizontal.setHeight(layout.sliderHeight);


return []; } <del> return [currentHistoryItemGroup.name, currentHistoryItemGroup.remote?.name ?? '', currentHistoryItemGroup.base?.name ?? '']; </del> <ins> return [ currentHistoryItemGroup.name, currentHistoryItemGroup.remote?.name, currentHistoryItemGroup.base?.name] .filter(l => l !== undefined); </ins> } private getTooltip(element: SCMHistoryItemViewModelTreeElement): IManagedHoverTooltipMarkdownString {


resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-7.0.1.tgz#8118a32b02735dccd14f893b495fa5389ad7de79" integrity sha512-zQ5U/nuXAAMsh691FtV0wPz89nSkHbs+IQV8FDk+wew9BlSDhf4UmWGlWJfTR2Ti6xZv87Tj5fENzKf6Qk7aLw== <del> xterm-addon-canvas@0.2.0-beta.15: version "0.2.0-beta.15" resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.2.0-beta.15.tgz#de863e46410b1de357b153abf1984227777760e4" integrity sha512-E1pNCDSVTINchwWLysZ9ZD/BPv1WLGV52xRHB00US1PHHELbhtvms+6dZ44WZEDXhtfpptRZ1VBx+QpvfJIuvw== xterm-addon-search@0.10.0-beta.3: version "0.10.0-beta.3" resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.10.0-beta.3.tgz#5194434d86105637c71f6f20139a9d0b5c1a956a" integrity sha512-UeGm/ymnp7HUYJJtsP0D+bljOWbdk3MctcLJ+0jv8AmU6YlAzJFtouvYSQrD5SAMyht5CRsvjzFgqic9X02JYg== xterm-addon-unicode11@0.4.0-beta.3: version "0.4.0-beta.3" resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.4.0-beta.3.tgz#f350184155fafd5ad0d6fbf31d13e6ca7dea1efa" integrity sha512-FryZAVwbUjKTmwXnm1trch/2XO60F5JsDvOkZhzobV1hm10sFLVuZpFyHXiUx7TFeeFsvNP+S77LAtWoeT5z+Q== xterm-addon-webgl@0.13.0-beta.32: version "0.13.0-beta.32" resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.13.0-beta.32.tgz#ae7335f788ae611733e03f6ca38280ab7b86d212" integrity sha512-xOudNzYXaRh9QZ+IigXM5EB3bM8l3/F8F35EpJRYvvsylVxiB6Km8X8l7+nxlWt+uYdnHZs0ka2rvtL8kOP/uw== xterm@5.0.0-beta.32: version "5.0.0-beta.32" resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.0.0-beta.32.tgz#62bb9902429c0055fd2fd85c9eecfbf1756ed31c" integrity sha512-OAM1GaBs/chK63Cr86XbVhfVCLLXLpNxxFrv3RK9xoyb9dwiY3gaMxK9jeGzTnrbGLWJb+k5nxaC0rx2YsHvUA== </del> <ins> xterm-addon-canvas@0.2.0-beta.17: version "0.2.0-beta.17" resolved "https://registry.yarnpkg.com/xterm-addon-canvas/-/xterm-addon-canvas-0.2.0-beta.17.tgz#e84a86530b20bd3edcce16b4566f346cd186ab4d" integrity sha512-2ukPdCA92VTFYQRE56ylzvI3cfaQYDWd/Mc4jlEItI6sV/EA5RnUbbP+2sFIx0JlmHK6nVYXXNY2p6QRB7MRew== xterm-addon-search@0.10.0-beta.5: version "0.10.0-beta.5" resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.10.0-beta.5.tgz#a2cb16bda4ddf8783b80433155ad94f5822271f8" integrity sha512-kjog7cm1iEZ2XyQFVs3KAvoI2pKoX0cq2WWjL0FuXYXpKQ9vXmfrWSR7PiJ6zpTIRvr6UtaSGKhmZVHLNA79WA== xterm-addon-unicode11@0.4.0-beta.5: version "0.4.0-beta.5" resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.4.0-beta.5.tgz#3900e66f10d2e506133b61d7421aab6878d32665" integrity sha512-+g+fuxAd/tkCEJ/jhdnebXKtdPrhsu4VKWNnB/3qM35GbuGQOasmYFYnKL+HYZMpbQ6YqeZcXTVg/wnCTttz0g== xterm-addon-webgl@0.13.0-beta.35: version "0.13.0-beta.35" resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.13.0-beta.35.tgz#98b5dc102583120de25c7c6e0f35cd34ab6bef98" integrity sha512-powgeb3ifEZK7zWwLJuE8YRz/Z0UzDrrVA9NTx9mH7+vWxrGt9ZgroychoeCqZBvKMofiUM5vlf1oWdSmsMfzw== xterm@5.0.0-beta.35: version "5.0.0-beta.35" resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.0.0-beta.35.tgz#3bbf5780c98aaaa6476e7590dff1d8f5014fce9d" integrity sha512-tzJTel1E/FmB0VQDb44xApVB+ln+BifIbHD4V9x9Z3D9m1cMmPHy8J8efdILkn1TxXGlCl7VC35nG122Qq5exw== </ins>


} while(m); return counter; } <del> } </del>  No newline at end of file <ins> } </ins>


public setInput(input: FileEditorInput, options?: EditorOptions): TPromise<void> { <del> // We have a current input in this editor and are about to either open a new editor or jump to a different // selection inside the editor. Thus we store the current selection into the navigation history so that // a user can navigate back to the exact position he left off. if (this.input) { const selection = this.getControl().getSelection(); if (selection) { this.historyService.add(this.input, { startLineNumber: selection.startLineNumber, startColumn: selection.startColumn }); } } </del> // Return early for same input unless we force to open const forceOpen = options && options.forceOpen; if (!forceOpen && input.matches(this.input)) {


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


private gotoDefinition(position: Position, openToSide: boolean): Promise<any> { this.editor.setPosition(position); <del> const action = new DefinitionAction({ openToSide, openInPeek: false, muteMessage: true }, { alias: '', label: '', id: '', precondition: undefined }); </del> <ins> const openInPeek = this.editor.getOption(EditorOption.definitionLinkOpensInPeek); const action = new DefinitionAction({ openToSide, openInPeek: openInPeek, muteMessage: true }, { alias: '', label: '', id: '', precondition: undefined }); </ins> return this.editor.invokeWithinContext(accessor => action.run(accessor, this.editor)); }


<del> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="36" viewBox="0 0 24 36.1"><defs><style>.a{fill:#fff;}</style></defs><title>flipped-cursor-mac-2x</title><polygon points="8.6 33.1 11.8 23.9 2.2 23.9 23 2.5 23 31.3 17.4 26.1 14.2 35.1 8.6 33.1"/><path class="a" d="M22,29.1l-5-4.6-3.062,8.938-4.062-1.5L13,23H5L22,5M0,25H10.4l-3,8.3L15,36.1l3.125-7.662L24,33V0Z"/></svg> </del>  No newline at end of file <ins> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 26 38" style="enable-background:new 0 0 26 38;" width="26" height="38"><style type="text/css">.st0{stroke:#FFFFFF;stroke-miterlimit:10;}</style>	<title>flipped-cursor-mac</title><path class="st0" d="M10.6,33.2l3.2-9.4H4.2L25,2.4v28.8L19.4,26l-3.2,9.2c-0.4,1-1.6,1.6-2.6,1.2L12,35.8 C10.8,35.4,10.2,34.4,10.6,33.2z"/></svg> </ins>


} const browserPlugins = [ <ins> new optimize.LimitChunkCountPlugin({ maxChunks: 1 }), </ins> new CopyWebpackPlugin({ patterns: [ { from: 'src', to: '.', globOptions: { ignore: ['**/test/**', '**/*.ts'] }, noErrorOnMissing: true }


focusNextNotebookCell(cell: IGenericCellViewModel, focus: 'editor' | 'container' | 'output'): Promise<void>; updateOutputHeight(cellInfo: ICommonCellInfo, output: ICellOutputViewModel, height: number, isInit: boolean): void; deltaCellOutputContainerClassNames(diffSide: DiffSide, cellId: string, added: string[], removed: string[]): void; <ins> previousChange(): void; nextChange(): void; </ins> } export interface IDiffNestedCellViewModel {


const storedRecents = data as ISerializedRecentlyOpened; if (Array.isArray(storedRecents.entries)) { <del> restoreGracefully(storedRecents.entries, (entry) => { </del> <ins> restoreGracefully(storedRecents.entries, entry => { </ins> const label = entry.label; const remoteAuthority = entry.remoteAuthority;


position: absolute; width: 100%; height: 100%; <del> background: transparent; </del> <ins> background: red; </ins> } .monaco-workbench:not(.reduce-motion) .monaco-sash:before {


return this._textModel.object.isDirty(); } <ins> isUntitled(): boolean { return this.textModel?.isUntitled() || false; } </ins> isReadonly() { return false; }


private _createBody(parent: HTMLElement): void { this._notebookTopToolbarContainer = document.createElement('div'); this._notebookTopToolbarContainer.classList.add('notebook-toolbar-container'); <del> this._notebookTopToolbarContainer.tabIndex = 0; </del> this._notebookTopToolbarContainer.style.display = 'none'; DOM.append(parent, this._notebookTopToolbarContainer); this._body = document.createElement('div');


import { isWindows } from 'vs/base/common/platform'; import URI from 'vs/base/common/uri'; import { ltrim } from 'vs/base/common/strings'; <ins> import { RunOnceScheduler } from 'vs/base/common/async'; import { memoize } from 'vs/base/common/decorators'; </ins> const SMART = true;


sendText(text: string, addNewLine: boolean): void; /** <ins> * Takes a path and returns the properly escaped path to send to the terminal. * On Windows, this included trying to prepare the path for WSL if needed. * * @param path The path to be escaped and formatted. * @returns An escaped version of the path to be execuded in the terminal. */ preparePathForTerminalAsync(path: string): Promise<string>; /** </ins> * Write text directly to the terminal, skipping the process if it exists. * @param text The text to write. */


}); }); <ins> // Support resolve keybindings event ipc.on('vscode:resolveKeybindings', (event: any, rawActionIds: string) => { let actionIds: string[] = []; try { actionIds = JSON.parse(rawActionIds); } catch (error) { // should not happen } // Resolve keys using the keybinding service and send back to browser process this.resolveKeybindings(actionIds).done(keybindings => { if (keybindings.length) { ipc.send('vscode:keybindingsResolved', JSON.stringify(keybindings)); } }, () => errors.onUnexpectedError); }); </ins> ipc.on('vscode:reportError', (event: any, error: string) => { if (error) { const errorParsed = JSON.parse(error);


import { MenuId, registerAction2, Action2 } from 'vs/platform/actions/common/actions'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { ContextKeyExpr, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; <del> import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; </del> <ins> import { IEditorService, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService'; </ins> import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { KeyCode } from 'vs/base/common/keyCodes'; import { EditorPaneDescriptor, IEditorPaneRegistry } from 'vs/workbench/browser/editor';


this.commentTheadDisposables.add(this._commentThreadWidget.onDidResize(() => { if (this.currentElement?.cellKind === CellKind.Code && this._commentThreadWidget) { <del> this.currentElement.commentHeight = dom.getClientArea(this._commentThreadWidget.container).height; </del> <ins> this.currentElement.commentHeight = this._calculateCommentThreadHeight(this._commentThreadWidget.getDimensions().height); </ins> } })); }


"@microsoft/1ds-core-js": "^3.2.13", "@microsoft/1ds-post-js": "^3.2.13", "@parcel/watcher": "2.1.0", <ins> "@vscode/deviceid": "^0.1.1", </ins> "@vscode/iconv-lite-umd": "0.7.0", "@vscode/proxy-agent": "^0.19.0", "@vscode/ripgrep": "^1.15.9",


import { Promises } from 'vs/base/common/async'; import { EditorGroupColumn } from 'vs/workbench/services/editor/common/editorGroupColumn'; import { ViewColumn } from 'vs/workbench/api/common/extHostTypeConverters'; <del> import { isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; </del> <ins> import { checkProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; </ins> export interface IExtHostTerminalService extends ExtHostTerminalServiceShape, IDisposable {


assert.ok(matchesWords('gipu', 'Category: Git: Pull', true) === null); assert.deepEqual(matchesWords('pu', 'Category: Git: Pull', true), [{ start: 15, end: 17 }]); }); <ins> test('fuzzyMatchAndScore', function () { function assertMatches(pattern: string, word: string, decoratedWord?: string) { let r = fuzzyMatchAndScore(pattern, word); assert.ok(Boolean(r) === Boolean(decoratedWord)); if (r) { const [, matches] = r; let pos = 0; for (let i = 0; i < matches.length; i++) { let actual = matches[i]; let expected = decoratedWord.indexOf('^', pos) - i; assert.equal(actual, expected); pos = expected + 1 + i; } } } assertMatches('no', 'match'); assertMatches('no', ''); assertMatches('', 'match'); assertMatches('BK', 'the_black_knight', 'the_^black_^knight'); assertMatches('bkn', 'the_black_knight', 'the_^black_^k^night'); assertMatches('bt', 'the_black_knight', 'the_^black_knigh^t'); assertMatches('bti', 'the_black_knight'); assertMatches('LLL', 'SVisualLoggerLogsList', 'SVisual^Logger^Logs^List'); assertMatches('LLLL', 'SVisualLoggerLogsList'); assertMatches('sllll', 'SVisualLoggerLogsList', '^SVisua^l^Logger^Logs^List'); assertMatches('sl', 'SVisualLoggerLogsList', '^SVisual^LoggerLogsList'); assertMatches('foobar', 'foobar', '^f^o^o^b^a^r'); assertMatches('fob', 'foobar', '^f^oo^bar'); assertMatches('ob', 'foobar'); assertMatches('gp', 'Git: Pull', '^Git: ^Pull'); assertMatches('gp', 'Git_Git_Pull', '^Git_Git_^Pull'); assertMatches('g p', 'Git: Pull', '^Git:^ ^Pull'); assertMatches('gip', 'Git: Pull', '^G^it: ^Pull'); assertMatches('is', 'isValid', '^i^sValid'); assertMatches('is', 'ImportStatement', '^Import^Statement'); assertMatches('lowrd', 'lowWord', '^l^o^wWo^r^d'); assertMatches('ccm', 'cacmelCase', '^ca^c^melCase'); assertMatches('ccm', 'camelCase'); assertMatches('ccm', 'camelCasecm', '^camel^Casec^m'); }); test('topScore', function () { function assertTopScore(pattern: string, expected: number, ...words: string[]) { let topScore = -1; let topIdx = 0; for (let i = 0; i < words.length; i++) { const word = words[i]; const m = fuzzyMatchAndScore(pattern, word); if (m) { const [score] = m; if (score > topScore) { topScore = score; topIdx = i; } } } assert.equal(topIdx, expected); } assertTopScore('Foo', 1, 'foo', 'Foo', 'foo'); assertTopScore('CC', 1, 'camelCase', 'CamelCase'); assertTopScore('cC', 0, 'camelCase', 'CamelCase'); assertTopScore('cC', 1, 'ccfoo', 'camelCase'); assertTopScore('cC', 1, 'ccfoo', 'camelCase', 'foo-cC-bar'); // issue #17836 assertTopScore('p', 0, 'parse', 'posix', 'pafdsa', 'path', 'p'); assertTopScore('pa', 0, 'parse', 'pafdsa', 'path'); // issue #14583 assertTopScore('log', 3, 'HTMLOptGroupElement', 'ScrollLogicalPosition', 'SVGFEMorphologyElement', 'log'); assertTopScore('e', 2, 'AbstractWorker', 'ActiveXObject', 'else'); // issue #14446 assertTopScore('workbench.sideb', 1, 'workbench.editor.defaultSideBySideLayout', 'workbench.sideBar.location'); // issue #11423 assertTopScore('editor.r', 2, 'diffEditor.renderSideBySide', 'editor.overviewRulerlanes', 'editor.renderControlCharacter', 'editor.renderWhitespace'); // assertTopScore('editor.R', 1, 'diffEditor.renderSideBySide', 'editor.overviewRulerlanes', 'editor.renderControlCharacter', 'editor.renderWhitespace'); // assertTopScore('Editor.r', 0, 'diffEditor.renderSideBySide', 'editor.overviewRulerlanes', 'editor.renderControlCharacter', 'editor.renderWhitespace'); assertTopScore('-mo', 1, '-ms-ime-mode', '-moz-columns'); // // dupe, issue #14861 assertTopScore('convertModelPosition', 0, 'convertModelPositionToViewPosition', 'convertViewToModelPosition'); // // dupe, issue #14942 assertTopScore('is', 0, 'isValidViewletId', 'import statement'); }); </ins> });


@INotificationService private readonly notificationService: INotificationService, @IStatusbarService private readonly statusbarService: IStatusbarService, @ILayoutService private readonly layoutService: ILayoutService, <del> @IKeybindingService private readonly keybindingService: IKeybindingService </del> <ins> @IKeybindingService private readonly keybindingService: IKeybindingService, @IUserActivityService private readonly userActivityService: IUserActivityService, </ins> ) { super(); } <del> async withProgress<R = unknown>(options: IProgressOptions, task: (progress: IProgress<IProgressStep>) => Promise<R>, onDidCancel?: (choice?: number) => void): Promise<R> { </del> <ins> async withProgress<R = unknown>(options: IProgressOptions, originalTask: (progress: IProgress<IProgressStep>) => Promise<R>, onDidCancel?: (choice?: number) => void): Promise<R> { </ins> const { location } = options; <ins> const task = (progress: IProgress<IProgressStep>) => { const activeLock = this.userActivityService.markActive(); return originalTask(progress).finally(() => activeLock.dispose()); }; </ins> const handleStringLocation = (location: string) => { const viewContainer = this.viewDescriptorService.getViewContainerById(location); if (viewContainer) {


this.updateIsNew(this.applicationStorage); <del> this.applicationStoragePromise.complete({ indededDb: applicationStorageIndexedDB, storage: this.applicationStorage }); </del> <ins> this.applicationStoragePromise.complete({ indexedDb: applicationStorageIndexedDB, storage: this.applicationStorage }); </ins> } private async createProfileStorage(profile: IUserDataProfile): Promise<void> {


'~/foo', 'c:/foo/bar', 'c:foobar', <ins> 'c:foobar+more', </ins> 'c:foo/barbaz', 'foo/bar', 'foo/bar', <del> 'foobar' </del> <ins> 'foobar', 'foobar+more', </ins> ]; interface LinkFormatInfo {


} private getMarkersTooltip(stats: MarkerStatistics): string { <del> const errorTitle = (n: number) => localize('totalErrors', "{0} Errors", n); const warningTitle = (n: number) => localize('totalWarnings', "{0} Warnings", n); const infoTitle = (n: number) => localize('totalInfos', "{0} Infos", n); </del> <ins> const errorTitle = (n: number) => localize('totalErrors', "Errors: {0}", n); const warningTitle = (n: number) => localize('totalWarnings', "Warnings: {0}", n); const infoTitle = (n: number) => localize('totalInfos', "Infos: {0}", n); </ins> const titles: string[] = [];


super(); const cellEditorOptions = this._register(new CellEditorOptions(this.notebookEditor, this.notebookEditor.notebookOptions, this.configurationService, this.viewCell.language)); <del> this._outputContainerRenderer = this.instantiationService.createInstance(CellOutputContainer, notebookEditor, viewCell, templateData, { limit: 2 }); </del> <ins> this._outputContainerRenderer = this.instantiationService.createInstance(CellOutputContainer, notebookEditor, viewCell, templateData, { limit: 500 }); </ins> this.cellParts = [...templateData.cellParts, cellEditorOptions, this._outputContainerRenderer]; const editorHeight = this.calculateInitEditorHeight();


} function renderError(outputInfo: OutputItem, container: HTMLElement, ctx: RendererContext<void> & { readonly settings: RenderOptions }): void { <ins> clearContainer(container); </ins> const element = document.createElement('div'); container.appendChild(element); type ErrorLike = Partial<Error>;


}; // Update group contexts based on group changes <del> this._register(this.onDidModelChange(e => { </del> <ins> const updateGroupContextKeys = (e: IGroupModelChangeEvent) => { </ins> switch (e.kind) { case GroupModelChangeKind.GROUP_LOCKED: groupLockedContext.set(this.isLocked);


*--------------------------------------------------------------------------------------------*/ import { $, addDisposableListener, append, scheduleAtNextAnimationFrame } from 'vs/base/browser/dom'; <ins> import { DomEmitter } from 'vs/base/browser/event'; </ins> import { ISashEvent as IBaseSashEvent, Orientation, Sash, SashState } from 'vs/base/browser/ui/sash/sash'; import { SmoothScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement'; import { pushToEnd, pushToStart, range } from 'vs/base/common/arrays';


private readonly _wrapLinkHandler: (handler: (event: MouseEvent | undefined, link: string) => void) => XtermLinkMatcherHandler, private readonly _tooltipCallback: (link: TerminalLink, viewportRange: IViewportRange, modifierDownCallback?: () => void, modifierUpCallback?: () => void) => void, private readonly _validationCallback: (link: string[], callback: (result: { uri: URI, link: string, isDirectory: boolean } | undefined) => void) => void, <ins> private readonly _testing: boolean, </ins> @IInstantiationService private readonly _instantiationService: IInstantiationService, @ICommandService private readonly _commandService: ICommandService, @IWorkspaceContextService private readonly _workspaceContextService: IWorkspaceContextService,


return super.getActionViewItem(action, options); } <ins> override focus(): void { super.focus(); const fakeKeyboardEvent = new KeyboardEvent('keydown'); this._tree.focusFirst(fakeKeyboardEvent); this._tree.domFocus(); } </ins> async refresh(): Promise<void> { this._treeViewModel.clearRepositoryState(); await this._updateChildren();


return welcomeEnabled.value; } } <del> return startupEditor.value === 'welcomePage'; </del> <ins> return startupEditor.value === 'welcomePage' || startupEditor.value === 'welcomePageInEmptyWorkbench' && contextService.getWorkbenchState() === WorkbenchState.EMPTY; </ins> } export class WelcomePageAction extends Action {


} } }); this.registerExtensionAction({ id: ClearLanguageAction.ID, title: ClearLanguageAction.TITLE,


<ins> { "comments": { "lineComment": ";", "blockComment": [ ";", " " ] }, "brackets": [ ["{", "}"], ["[", "]"], ["(", ")"] ], "autoClosingPairs": [ ["{", "}"], ["[", "]"], ["(", ")"], [""", """], ["'", "'"] ], "surroundingPairs": [ ["{", "}"], ["[", "]"], ["(", ")"], [""", """], ["'", "'"] ] } </ins>  No newline at end of file


return args.join(' '); }; if (needsFolderQualification && workspaceFolder) { <del> shellLaunchConfig.initialText = taskShellIntegrationStartSequence + formatMessageForTerminal(nls.localize({ </del> <ins> shellLaunchConfig.initialText = this.taskShellIntegrationStartSequence + formatMessageForTerminal(nls.localize({ </ins> key: 'task.executingInFolder', comment: ['The workspace folder the task is running in', 'The task command line or label'] <del> }, 'Executing task in folder {0}: {1}', workspaceFolder.name, `${shellLaunchConfig.executable} ${getArgsToEcho(shellLaunchConfig.args)}`), { excludeLeadingNewLine: true }) + taskShellIntegrationOutputSequence; </del> <ins> }, 'Executing task in folder {0}: {1}', workspaceFolder.name, `${shellLaunchConfig.executable} ${getArgsToEcho(shellLaunchConfig.args)}`), { excludeLeadingNewLine: true }) + this.taskShellIntegrationOutputSequence; </ins> } else { <del> shellLaunchConfig.initialText = taskShellIntegrationStartSequence + formatMessageForTerminal(nls.localize({ </del> <ins> shellLaunchConfig.initialText = this.taskShellIntegrationStartSequence + formatMessageForTerminal(nls.localize({ </ins> key: 'task.executing', comment: ['The task command line or label'] <del> }, 'Executing task: {0}', `${shellLaunchConfig.executable} ${getArgsToEcho(shellLaunchConfig.args)}`), { excludeLeadingNewLine: true }) + taskShellIntegrationOutputSequence; </del> <ins> }, 'Executing task: {0}', `${shellLaunchConfig.executable} ${getArgsToEcho(shellLaunchConfig.args)}`), { excludeLeadingNewLine: true }) + this.taskShellIntegrationOutputSequence; </ins> } } else { <del> shellLaunchConfig.initialText = taskShellIntegrationStartSequence + taskShellIntegrationOutputSequence; </del> <ins> shellLaunchConfig.initialText = this.taskShellIntegrationStartSequence + this.taskShellIntegrationOutputSequence; </ins> } }


private registered = false; private continueEditSessionOptions: ContinueEditSessionItem[] = []; <ins> private readonly shouldShowViewsContext: IContextKey<boolean>; </ins> constructor( @IEditSessionsWorkbenchService private readonly editSessionsWorkbenchService: IEditSessionsWorkbenchService, @IFileService private readonly fileService: IFileService,


test('* star', () => { linkAllowedByRules('https://a.x.org', ['https://*.x.org']); linkAllowedByRules('https://a.b.x.org', ['https://*.x.org']); <del> linkAllowedByRules('https://a.x.org', ['https://a.x.*']); linkAllowedByRules('https://a.x.org', ['https://a.*.org']); linkAllowedByRules('https://a.x.org', ['https://*.*.org']); linkAllowedByRules('https://a.b.x.org', ['https://*.b.*.org']); linkAllowedByRules('https://a.a.b.x.org', ['https://*.b.*.org']); </del> }); test('no scheme', () => {


@IInstantiationService private readonly _instantiationService: IInstantiationService, @IConfigurationService private readonly _configurationService: IConfigurationService, @ILifecycleService private readonly _lifecycleService: ILifecycleService, <del> @IContextKeyService _contextKeyService: IContextKeyService, </del> <ins> @IContextKeyService private _contextKeyService: IContextKeyService, </ins> @IDialogService private readonly _dialogService: IDialogService ) { super();


scheme: 'file', path: '/path/test.file', fsPath: '/path/test.file'.replace(///g, isWindows ? '' : '/'), <ins> _sep: isWindows ? 1 : undefined, </ins> }); assert.ok(uri.toString());


import { generateUuid } from 'vs/base/common/uuid'; import { getActiveWindow, runWhenWindowIdle } from 'vs/base/browser/dom'; import { mainWindow } from 'vs/base/browser/window'; <ins> import { shouldUseEnvironmentVariableCollection } from 'vs/platform/terminal/common/terminalEnvironment'; </ins> const enum ProcessConstants { /**


overviewRulerLanes = 63, parameterHints = 64, peekWidgetDefaultFocus = 65, <del> quickSuggestions = 66, quickSuggestionsDelay = 67, readOnly = 68, renderControlCharacters = 69, renderIndentGuides = 70, renderFinalNewline = 71, renderLineHighlight = 72, renderValidationDecorations = 73, renderWhitespace = 74, revealHorizontalRightPadding = 75, roundedSelection = 76, rulers = 77, scrollbar = 78, scrollBeyondLastColumn = 79, scrollBeyondLastLine = 80, selectionClipboard = 81, selectionHighlight = 82, selectOnLineNumbers = 83, semanticHighlighting = 84, showFoldingControls = 85, showUnused = 86, snippetSuggestions = 87, smoothScrolling = 88, stopRenderingLineAfter = 89, suggest = 90, suggestFontSize = 91, suggestLineHeight = 92, suggestOnTriggerCharacters = 93, suggestSelection = 94, tabCompletion = 95, useTabStops = 96, wordSeparators = 97, wordWrap = 98, wordWrapBreakAfterCharacters = 99, wordWrapBreakBeforeCharacters = 100, wordWrapColumn = 101, wordWrapMinified = 102, wrappingIndent = 103, wrappingStrategy = 104, editorClassName = 105, pixelRatio = 106, tabFocusMode = 107, layoutInfo = 108, wrappingInfo = 109 </del> <ins> definitionLinkOpensInPeek = 66, quickSuggestions = 67, quickSuggestionsDelay = 68, readOnly = 69, renderControlCharacters = 70, renderIndentGuides = 71, renderFinalNewline = 72, renderLineHighlight = 73, renderValidationDecorations = 74, renderWhitespace = 75, revealHorizontalRightPadding = 76, roundedSelection = 77, rulers = 78, scrollbar = 79, scrollBeyondLastColumn = 80, scrollBeyondLastLine = 81, selectionClipboard = 82, selectionHighlight = 83, selectOnLineNumbers = 84, semanticHighlighting = 85, showFoldingControls = 86, showUnused = 87, snippetSuggestions = 88, smoothScrolling = 89, stopRenderingLineAfter = 90, suggest = 91, suggestFontSize = 92, suggestLineHeight = 93, suggestOnTriggerCharacters = 94, suggestSelection = 95, tabCompletion = 96, useTabStops = 97, wordSeparators = 98, wordWrap = 99, wordWrapBreakAfterCharacters = 100, wordWrapBreakBeforeCharacters = 101, wordWrapColumn = 102, wordWrapMinified = 103, wrappingIndent = 104, wrappingStrategy = 105, editorClassName = 106, pixelRatio = 107, tabFocusMode = 108, layoutInfo = 109, wrappingInfo = 110 </ins> } export const EditorOptions: { acceptSuggestionOnCommitCharacter: IEditorOption<EditorOption.acceptSuggestionOnCommitCharacter, boolean>;


return ''; } }, <del> expandOnlyOnTwistieClick: (element: any) => { if (element instanceof CommentsModel || element instanceof ResourceWithCommentThreads) { return false; } return true; }, </del> <ins> expandOnlyOnTwistieClick: true, </ins> collapseByDefault: false, overrideStyles: options.overrideStyles, filter: options.filter,


this._onDidCustomEvent = new Emitter<debug.DebugEvent>(); this.sessionStates = new Map<string, debug.State>(); this.allProcesses = new Map<string, debug.IProcess>(); <ins> this.fetchThreadsSchedulers = new Map<string, RunOnceScheduler>(); </ins> this.configurationManager = this.instantiationService.createInstance(ConfigurationManager); this.toDispose.push(this.configurationManager);


assert.deepStrictEqual(actual, EXPECTED); }); <ins> test('cursorWordAccessibilityLeft', () => { const EXPECTED = ['|   /* |Just |some   |more   |text |a+= |3 +|5-|3 + |7 */  '].join('n'); const [text,] = deserializePipePositions(EXPECTED); const actualStops = testRepeatedActionAndExtractPositions( text, new Position(1000, 1000), ed => cursorWordAccessibilityLeft(ed), ed => ed.getPosition()!, ed => ed.getPosition()!.equals(new Position(1, 1)) ); const actual = serializePipePositions(text, actualStops); assert.deepStrictEqual(actual, EXPECTED); }); test('cursorWordAccessibilityRight', () => { const EXPECTED = ['   /* |Just |some   |more   |text |a+= |3 +|5-|3 + |7 */  |'].join('n'); const [text,] = deserializePipePositions(EXPECTED); const actualStops = testRepeatedActionAndExtractPositions( text, new Position(1, 1), ed => cursorWordAccessibilityRight(ed), ed => ed.getPosition()!, ed => ed.getPosition()!.equals(new Position(1, 50)) ); const actual = serializePipePositions(text, actualStops); assert.deepStrictEqual(actual, EXPECTED); }); </ins> test('deleteWordLeft for non-empty selection', () => { withTestCodeEditor([ '    tMy First Linet ',


}); } <del> public toggleShowBaseAtTop(): void { </del> <ins> public toggleShowBaseTop(): void { const showBaseTop = this._layoutMode.value.showBase && this._layoutMode.value.showBaseAtTop; </ins> this.setLayout({ ...this._layoutMode.value, <del> showBaseAtTop: !this._layoutMode.value.showBaseAtTop, </del> <ins> showBaseAtTop: true, showBase: !showBaseTop, }); } public toggleShowBaseCenter(): void { const showBaseCenter = this._layoutMode.value.showBase && !this._layoutMode.value.showBaseAtTop; this.setLayout({ ...this._layoutMode.value, showBaseAtTop: false, showBase: !showBaseCenter, </ins> }); }


@IClipboardService private readonly _clipboardService: IClipboardService, @IThemeService private readonly _themeService: IThemeService, @IConfigurationService private readonly _configurationService: IConfigurationService, <del> @ILogService private _logService: ILogService </del> <ins> @ILogService private _logService: ILogService, @IStorageService private readonly _storageService: IStorageService, </ins> ) { this._disposables = []; this._skipTerminalCommands = [];


} export class TerminalInstance implements ITerminalInstance { <del> private static readonly WINDOWS_EOL_REGEX = /r?n/g; </del> <ins> private static readonly EOL_REGEX = /r?n/g; </ins> private static _terminalProcessFactory: ITerminalProcessFactory = new StandardTerminalProcessFactory(); private static _lastKnownDimensions: Dimension = null;


// never wrap hidden editor result.wordWrapOverride1 = 'off'; result.wordWrapOverride2 = 'off'; <ins> result.stickyScroll = { enabled: false }; </ins> } else { result.wordWrapOverride1 = this._options.diffWordWrap; }


KeybindingsRegistry.registerCommandAndKeybindingRule({ id: 'scm.clearInput', weight: KeybindingWeight.WorkbenchContrib, <del> when: ContextKeyExpr.has('scmRepository'), </del> <ins> when: ContextKeyExpr.and(ContextKeyExpr.has('scmRepository'), SuggestContext.Visible.toNegated()), </ins> primary: KeyCode.Escape, handler: async (accessor) => { const scmService = accessor.get(ISCMService);


this.compressedFocusFirstContext = ExplorerCompressedFirstFocusContext.bindTo(contextKeyService); this.compressedFocusLastContext = ExplorerCompressedLastFocusContext.bindTo(contextKeyService); this.viewHasSomeCollapsibleRootItem = ViewHasSomeCollapsibleRootItemContext.bindTo(contextKeyService); <ins> this.viewVisibleContextKey = ExplorerViewletVisibleContext.bindTo(contextKeyService); </ins> this.explorerService.registerView(this); }


"statusBarItem.remoteBackground": "#16825D", "sideBarSectionHeader.background": "#0000", "sideBarSectionHeader.border": "#61616130", <del> "notebook.cellFocusBackground": "#c8ddf150", </del> <ins> "notebook.focusedCellBackground": "#c8ddf150", </ins> "notebook.cellBorderColor": "#dae3e9", "notebook.outputContainerBackgroundColor": "#c8ddf150", "notebook.focusedCellShadow": "#00315040"


.extensions-viewlet > .extensions .extension-list-item.loading > .icon-container { display: none; } <ins> .extensions-viewlet.narrow > .extensions .extension-list-item > .icon-container { display: flex; align-items: flex-start; padding-top: 10px; } </ins> .extensions-viewlet.narrow > .extensions .extension-list-item > .icon-container > .icon { width: 24px; height: 24px; <del> padding-top: 8px; padding-right: 6px; </del> <ins> padding-right: 8px; </ins> } .extensions-viewlet:not(.narrow) > .extensions .extension-list-item > .details > .header-container > .header > .extension-remote-badge-container,


} } }); this.registerExtensionAction({ id: SwitchToReleasedVersionAction.ID, title: SwitchToReleasedVersionAction.TITLE,


'type': 'object', 'properties': { 'problems.decorations.enabled': { <del> 'markdownDescription': localize('markers.showOnFile', "Show Errors & Warnings on files and folder. Overwritten by `#problems.visibility#` when `{0}` is off.", `problems.visibility`), </del> <ins> 'markdownDescription': localize('markers.showOnFile', "Show Errors & Warnings on files and folder. Overwritten by `#problems.visibility#` when it is off."), </ins> 'type': 'boolean', 'default': true }


Range.fromPositions(primaryPosition, primaryEditEndPosition) ); const positionWithinTextEdit = subtractPositions(primaryPosition, primaryEditStartPosition); <ins> if (positionWithinTextEdit.lineNumber < 1) { onUnexpectedError(new BugIndicatingError( `positionWithinTextEdit line number should be bigger than 0. Invalid subtraction between ${primaryPosition.toString()} and ${primaryEditStartPosition.toString()}` )); return []; } </ins> const secondaryEditText = substringPos(primaryEdit.text, positionWithinTextEdit); return secondaryPositions.map(pos => { const posEnd = addPositions(subtractPositions(pos, primaryEditStartPosition), primaryEditEndPosition);


dependencies: object-keys "~0.4.0" <del> xterm-addon-search@0.9.0-beta.39: version "0.9.0-beta.39" resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.9.0-beta.39.tgz#e8376e1485ee7d763c07d1a8f1354114f65b3e3e" integrity sha512-h45wkecgfqXXoAUqgNytAfSd6g0xNT6rZy/enVaEU0aes7QoL9pxHUKkCry8PP6hs03Slk0VxQ4AGsbSZGvK/w== </del> <ins> xterm-addon-search@0.9.0-beta.41: version "0.9.0-beta.41" resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.9.0-beta.41.tgz#0992da36fe01ff6d71449265a9dabeef7f9d0a3f" integrity sha512-b1vuWR5JZ8QIiObbKkwSzpzf4x0B9hdzGCHJG+PXWT/xbxk65DOe/X9rgrRyOnCWe5ylQGG4DIHTiREigTp0lg== </ins> <del> xterm-addon-serialize@0.7.0-beta.13: version "0.7.0-beta.13" resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.7.0-beta.13.tgz#5c859c8657cab7f28405aab1a0715daf54bc7714" integrity sha512-TYFlm/gds0pOmpzXw7ZWx8Cy48lMaOZZqZgfm5pWU37HPvzfKxXSVdYL1biWpRCH2zCH+3cWmOma8W1pBRr+Eg== </del> <ins> xterm-addon-serialize@0.7.0-beta.15: version "0.7.0-beta.15" resolved "https://registry.yarnpkg.com/xterm-addon-serialize/-/xterm-addon-serialize-0.7.0-beta.15.tgz#0f7d5f9b423802ac67c2a891d74de530a4fe6a65" integrity sha512-gO/dxqGgOAuj7DN2ETTeCHyalkb655XogZh5408CmH5D6mjI1lxqVLGUdiFeBVU/OHfWZT2PZ95k06VXqLU5kA== </ins> xterm-addon-unicode11@0.4.0-beta.3: version "0.4.0-beta.3" 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.41: version "0.12.0-beta.41" resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.12.0-beta.41.tgz#17dbca975b6e9b34526ebc57f4de59ee295da1b6" integrity sha512-wvQxC5diMYEJEMaILfz+4CWB2GgtzjzNQRNDnK7R7Y9wDI+P4idDlQKgyH0nA93sl9R4zgqlBVha//wuq4vfZg== </del> <ins> xterm-addon-webgl@0.12.0-beta.43: version "0.12.0-beta.43" resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.12.0-beta.43.tgz#916ed4e390371403aab0d277097cd8a61be436e8" integrity sha512-hGXfwT6TOmp0tBDiS/iF8s0SLHLd3shJ5zQyS4HNtq99B5cEhHhwaUAZAfjLt5rnUt0kvqR9YWtGsDux5dWVLA== </ins> <del> xterm-headless@4.19.0-beta.60: version "4.19.0-beta.60" resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-4.19.0-beta.60.tgz#ccd09a7c69ba487d3fd87d6a8d159f1a6a10e9b2" integrity sha512-mJ24BRnEDCASJDTGFZysZxiXkCmed3eMFiWCPvIF48LVrqxt1cImoVKBlxqkdgUkHKjfF2c92S1TTBL5aT1I0w== </del> <ins> xterm-headless@4.19.0-beta.67: version "4.19.0-beta.67" resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-4.19.0-beta.67.tgz#fe44a243974bf307c9a0694114ab45289734c7f9" integrity sha512-rpxUsE/te2LN4B/erI108uaAhuLTUsnRl9zIZgcqMqZGFRqDUTtyVM05jIA/8A32g06wFd3WioTkeKc6ow+sLg== </ins> <del> xterm@4.19.0-beta.60: version "4.19.0-beta.60" resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0-beta.60.tgz#de89d93153ae3ec17b53f3e5d03b8ea859126081" integrity sha512-YQjvp4xtSAyNm9+gF4OA5+QzkSWdKMCy4WABETpe7CsrEGx+mJVoXCZ9wgopmvwRXz7DeJvKM5dWz1HPjVLDtA== </del> <ins> xterm@4.19.0-beta.67: version "4.19.0-beta.67" resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0-beta.67.tgz#9a7d79be64469c91bb693b9f5a50b5a22e921cd3" integrity sha512-4bYTnT6g91N5QId1qPaiSvkpsxMQYpuPdPJItvBZFOcQLTuFSX85x5NeFuDvhNqi33eMFPimyGhzH/JvAV1v/Q== </ins> y18n@^3.2.1: version "3.2.2"


}); try { <del> const result = await this._proxy.$executeCommand<T>(id, toArgs, retry); </del> <ins> const result = await this._proxy.$executeCommand<T>(id, hasBuffers ? new SerializableObjectWithBuffers(toArgs) : toArgs, retry); </ins> return revive<any>(result); } catch (e) { // Rerun the command when it wasn't known, had arguments, and when retry


@memoize get onDidChangeFocus() { return Event.map( <del> this._tree.onDidChangeFocus, </del> <ins> Event.any(this._tree.onDidChangeFocus, this._onTriggerEmptySelectionOrFocus.event), </ins> e => e.elements.filter((e): e is QuickPickItemElement => e instanceof QuickPickItemElement).map(e => e.item) ); }


group: '', title: nls.localize('actions.clipboard.cutLabel', "Cut"), order: 1 <ins> }, { menuId: MenuId.SimpleEditorContext, group: CLIPBOARD_CONTEXT_MENU_GROUP, title: nls.localize('actions.clipboard.cutLabel', "Cut"), when: EditorContextKeys.writable, order: 1, </ins> }] })) : undefined;


"type": "array", "markdownDescription": "%config.branchRandomNameDictionary%", "items": { <del> "type": "string" </del> <ins> "type": "string", "enum": [ "adjectives", "animals", "colors", "numbers" ], "enumDescriptions": [ "%config.branchRandomNameDictionary.adjectives%", "%config.branchRandomNameDictionary.animals%", "%config.branchRandomNameDictionary.colors%", "%config.branchRandomNameDictionary.numbers%" ] </ins> }, "default": [ "adjectives",


return DOM.isAncestorOfActiveElement(this.container); } <ins> getFocus(): ExplorerItem[] { return this.tree.getFocus(); } focusNext(): void { this.tree.focusNext(); } focusLast(): void { this.tree.focusLast(); } </ins> getContext(respectMultiSelection: boolean): ExplorerItem[] { return getContext(this.tree.getFocus(), this.tree.getSelection(), respectMultiSelection, this.renderer); }


menu: [{ id: MenuId.ViewTitle, group: 'navigation', <del> order: 3, </del> <ins> order: 2, </ins> when: ContextKeyExpr.and(ContextKeyExpr.equals('view', VIEW_ID), Constants.InTreeViewKey.toNegated()), }] });


}); this.htmlElements.gutterDiv.style.width = '5px'; <ins> this.htmlElements.root.classList.add(`result`); </ins> this._register( autorunWithStore((reader, store) => {


} picker.contextKey = descriptor?.contextKey; picker.filterValue = (value: string) => value.substring(descriptor ? descriptor.prefix.length : 0); <del> if (descriptor?.placeholder) { picker.ariaLabel = descriptor?.placeholder; } </del> // Pick mode: setup a promise that can be resolved // with the selected items and prevent execution


if (configuration.enableTsServerTracing) { if (tsServerTraceDirectory) { <del> this._logger.info(`<${kind}> Trace directory: ${tsServerTraceDirectory}`); </del> <ins> this._logger.info(`<${kind}> Trace directory: ${tsServerTraceDirectory.fsPath}`); </ins> } else { this._logger.error(`<${kind}> Could not create trace directory`); }


VSCODE_CLI_TARGET: aarch64-unknown-linux-gnu VSCODE_CLI_ARTIFACT: vscode_cli_linux_arm64_cli VSCODE_CLI_ENV: <ins> CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc </ins> OPENSSL_LIB_DIR: $(Build.ArtifactStagingDirectory)/openssl/arm64-linux/lib OPENSSL_INCLUDE_DIR: $(Build.ArtifactStagingDirectory)/openssl/arm64-linux/include


}); } <del> async withNotebookDataProvider(resource: URI): Promise<ComplexNotebookProviderInfo | SimpleNotebookProviderInfo> { const [first] = this._notebookProviderInfoStore.getContributedNotebook(resource); if (!first) { </del> <ins> async withNotebookDataProvider(resource: URI, viewType?: string): Promise<ComplexNotebookProviderInfo | SimpleNotebookProviderInfo> { const providers = this._notebookProviderInfoStore.getContributedNotebook(resource); // If we have a viewtype specified we want that data provider, as the resource won't always map correctly const selected = viewType ? providers.find(p => p.id === viewType) : providers[0]; if (!selected) { </ins> throw new Error(`NO contribution for resource: '${resource.toString()}'`); } <del> await this.canResolve(first.id); const result = this._notebookProviders.get(first.id); </del> <ins> await this.canResolve(selected.id); const result = this._notebookProviders.get(selected.id); </ins> if (!result) { <del> throw new Error(`NO provider registered for view type: '${first.id}'`); </del> <ins> throw new Error(`NO provider registered for view type: '${selected.id}'`); </ins> } return result; }


const icon = alwaysPrompt ? '$(lock)' : alwaysCommitToNewBranch ? '$(git-branch)' : undefined; // Tooltip (default) <del> let tooltip = !alwaysCommitToNewBranch ? l10n.t('Commit Changes') : l10n.t('Commit Changes to New Branch'); </del> <ins> const branch = this.repository.HEAD?.name; let tooltip = alwaysCommitToNewBranch ? l10n.t('Commit Changes to New Branch') : branch ? l10n.t('Commit Changes on '{0}'', branch) : l10n.t('Commit Changes'); </ins> // Tooltip (in progress) if (this.repository.operations.isRunning(OperationKind.Commit)) {


} export function regExpLeadsToEndlessLoop(regexp: RegExp): boolean { <ins> // Exit early if it's one of these special cases which are meant to match // against an empty string if (regexp.source === "^" || regexp.source === "^$" || regexp.source === "$") { return false; } </ins> // We check against an empty string. If the regular expression doesn't advance // (e.g. ends in an endless loop) it will match an empty string. var match = regexp.exec(''); return (match && <any>regexp.lastIndex === 0); }


this.extensionRecommendationsService.getImportantRecommendations(), this.extensionRecommendationsService.getFileBasedRecommendations(), this.extensionRecommendationsService.getOtherRecommendations() <del> ])).filter(extensionId => !isString(extensionId) || !local.includes(extensionId.toLowerCase()))); </del> <ins> ])).filter(extensionId => { if (isString(extensionId)) { return !localExtensionIds.includes(extensionId.toLowerCase()); } return !localExtensions.some(localExtension => localExtension.local && this.uriIdentityService.extUri.isEqual(localExtension.local.location, extensionId)); })); </ins> const installableRecommendations = await this.getInstallableRecommendations(allRecommendations, { ...options, source: 'recommendations-all', sortBy: undefined }, token); <del> return new PagedModel(installableRecommendations.slice(0, 8)); </del> <ins> const result: IExtension[] = []; for (let i = 0; i < installableRecommendations.length && result.length < 8; i++) { const recommendation = allRecommendations[i]; if (isString(recommendation)) { const extension = installableRecommendations.find(extension => areSameExtensions(extension.identifier, { id: recommendation })); if (extension) { result.push(extension); } } else { const extension = installableRecommendations.find(extension => extension.resourceExtension && this.uriIdentityService.extUri.isEqual(extension.resourceExtension.location, recommendation)); if (extension) { result.push(extension); } } } return new PagedModel(result); </ins> } private async searchRecommendations(query: Query, options: IQueryOptions, token: CancellationToken): Promise<IPagedModel<IExtension>> {


import { isWeb } from 'vs/base/common/platform'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { Codicon } from 'vs/base/common/codicons'; <ins> import { IUserDataSyncMachinesService, UserDataSyncMachinesService } from 'vs/platform/userDataSync/common/userDataSyncMachines'; </ins> type ExistingSession = IQuickPickItem & { session: AuthenticationSession & { providerId: string } }; type AuthenticationProviderOption = IQuickPickItem & { provider: IAuthenticationProvider };


export interface UriComponents { scheme: string; <del> authority: string; path: string; query: string; fragment: string; </del> <ins> authority?: string; path?: string; query?: string; fragment?: string; </ins> } /** * Virtual Key Codes, the value does not hold any inherent meaning.


'activityBar.background': '#181818', 'statusBar.background': '#181818', 'statusBar.noFolderBackground': '#1f1f1f', <ins> 'titleBar.border': '#2B2B2B', 'titleBar.inactiveBackground': '#ff0000', 'titleBar.inactiveForeground': '#9D9D9D' </ins> }; export const COLOR_THEME_LIGHT_INITIAL_COLORS = { 'activityBar.background': '#f8f8f8', 'statusBar.background': '#f8f8f8', <del> 'statusBar.noFolderBackground': '#f8f8f8' </del> <ins> 'statusBar.noFolderBackground': '#f8f8f8', 'titleBar.border': '#E5E5E5', 'titleBar.inactiveBackground': '#F8F8F8', 'titleBar.inactiveForeground': '#8B949E', </ins> }; export interface IWorkbenchTheme {


const _cursorWordStartRightSelect = new CursorWordStartRightSelect(); const _cursorWordEndRightSelect = new CursorWordEndRightSelect(); const _cursorWordRightSelect = new CursorWordRightSelect(); <ins> const _cursorWordAccessibilityLeft = new CursorWordAccessibilityLeft(); const _cursorWordAccessibilityLeftSelect = new CursorWordAccessibilityLeftSelect(); const _cursorWordAccessibilityRight = new CursorWordAccessibilityRight(); const _cursorWordAccessibilityRightSelect = new CursorWordAccessibilityRightSelect(); </ins> const _deleteWordLeft = new DeleteWordLeft(); const _deleteWordStartLeft = new DeleteWordStartLeft(); const _deleteWordEndLeft = new DeleteWordEndLeft();


display: inline-block; } <del> .monaco-editor .suggest-widget .monaco-list .monaco-list-row:hover>.contents>.main>.right>.readMore { </del> <ins> .monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right>.readMore { </ins> visibility: visible; }


<dict> <key>begin</key> <string>(?x) <del> (*|_)(?=S)								# Open </del> <ins> b(*|_)(?=S)								# Open </ins> (?= ( <[^>]*+>							# HTML tags


} } <del> async $executeCommand<T>(id: string, args: any[], retry: boolean): Promise<T | undefined> { </del> <ins> async $executeCommand<T>(id: string, args: any[] | SerializableObjectWithBuffers<any[]>, retry: boolean): Promise<T | undefined> { if (args instanceof SerializableObjectWithBuffers) { args = args.value; } </ins> for (let i = 0; i < args.length; i++) { args[i] = revive(args[i]); }


<ins> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>fileTypes</key> <array> <string>ini</string> <string>conf</string> </array> <key>keyEquivalent</key> <string>^~I</string> <key>name</key> <string>Ini</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>(^[ t]+)?(?=#)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.whitespace.comment.leading.ini</string> </dict> </dict> <key>end</key> <string>(?!G)</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>#</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.comment.ini</string> </dict> </dict> <key>end</key> <string>n</string> <key>name</key> <string>comment.line.number-sign.ini</string> </dict> </array> </dict> <dict> <key>begin</key> <string>(^[ t]+)?(?=;)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.whitespace.comment.leading.ini</string> </dict> </dict> <key>end</key> <string>(?!G)</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>;</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.comment.ini</string> </dict> </dict> <key>end</key> <string>n</string> <key>name</key> <string>comment.line.semicolon.ini</string> </dict> </array> </dict> <dict> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.other.definition.ini</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.separator.key-value.ini</string> </dict> </dict> <key>match</key> <string>b([a-zA-Z0-9_.-]+)bs*(=)</string> </dict> <dict> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.definition.entity.ini</string> </dict> <key>3</key> <dict> <key>name</key> <string>punctuation.definition.entity.ini</string> </dict> </dict> <key>match</key> <string>^([)(.*?)(])</string> <key>name</key> <string>entity.name.section.group-title.ini</string> </dict> <dict> <key>begin</key> <string>'</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.ini</string> </dict> </dict> <key>end</key> <string>'</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.ini</string> </dict> </dict> <key>name</key> <string>string.quoted.single.ini</string> <key>patterns</key> <array> <dict> <key>match</key> <string>.</string> <key>name</key> <string>constant.character.escape.ini</string> </dict> </array> </dict> <dict> <key>begin</key> <string>"</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.ini</string> </dict> </dict> <key>end</key> <string>"</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.ini</string> </dict> </dict> <key>name</key> <string>string.quoted.double.ini</string> </dict> </array> <key>scopeName</key> <string>source.properties</string> <key>uuid</key> <string>77DC23B6-8A90-11D9-BAA4-000A9584EC8C</string> </dict> </plist> </ins>  No newline at end of file


registerThemingParticipant((theme: IColorTheme, collector: ICssStyleCollector) => { <ins> const editorBackgroundColor = theme.getColor(editorBackground)?.transparent(0.7); </ins> // Lightbulb Icon const editorLightBulbForegroundColor = theme.getColor(editorLightBulbForeground); if (editorLightBulbForegroundColor) { collector.addRule(` .monaco-editor .contentWidgets ${Codicon.lightBulb.cssSelector} { color: ${editorLightBulbForegroundColor}; <ins> background-color: ${editorBackgroundColor}; </ins> }`); }


autoFindInSelection?: 'never' | 'always' | 'multiline'; addExtraSpaceOnTop?: boolean; /** <del> * Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found </del> <ins> * Controls whether the search result and diff result automatically restarts from the beginning (or the end) when no further matches can be found </ins> */ loop?: boolean; }


const lineNumber = this.inputModel.getLineCount(); this._inputEditor.setPosition({ lineNumber, column: this.inputModel.getLineMaxColumn(lineNumber) }); } <ins> const onDidChangeCursorPosition = () => { const model = this._inputEditor.getModel(); if (!model) { return; } const position = this._inputEditor.getPosition(); if (!position) { return; } const atTop = position.column === 1 && position.lineNumber === 1; this.chatCursorAtTop.set(atTop); this.historyNavigationBackwardsEnablement.set(atTop); this.historyNavigationForewardsEnablement.set(position.equals(getLastPosition(model))); }; this._register(this._inputEditor.onDidChangeCursorPosition(e => onDidChangeCursorPosition())); onDidChangeCursorPosition(); </ins> } private initAttachedContext(container: HTMLElement) {


hasFocus(): boolean { return this._zone.widget.hasFocus(); } <del> needsMargin(): boolean { return true; } </del> }


}, menu: [ { id: MenuId.CommandPalette }, <del> { id: MenuId.MenubarViewMenu, group: '5_editor', order: 2 }, </del> <ins> { id: MenuId.MenubarAppearanceMenu, group: '4_editor', order: 3 }, </ins> { id: MenuId.StickyScrollContext } ] });


'preview.showPreviewSecuritySelector.title', 'Select security settings for Markdown previews in this workspace'), }); if (!selection) { return; }


<del> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.icon-canvas-transparent,.icon-vs-out{fill:#252526;}.icon-canvas-transparent{opacity:0;}.icon-vs-bg{fill:#c5c5c5;}.icon-vs-action-blue{fill:#75beff;}</style></defs><title>Compare_16x</title><g id="canvas"><path class="icon-canvas-transparent" d="M16,0V16H0V0Z"/></g><g id="outline" style="display: none;"><path class="icon-vs-out" d="M16,11H12.121l1.939,1.94a1.5,1.5,0,1,1-2.12,2.12L9.433,12.554A4.4,4.4,0,0,1,9,12.735V16H0V5H4.706A4.445,4.445,0,0,1,7,4.051V0h5.621L16,3.379Z" style="display: none;"/></g><g id="iconBg"><path class="icon-vs-bg" d="M15,3.793V10H11.735a4.4,4.4,0,0,0,.237-1H14V4.207L11.793,2H9V4.276a4.485,4.485,0,0,0-1-.225V1h4.207ZM7,12.949V14H2V7H3.276a4.493,4.493,0,0,1,.486-1H1v9H8V12.972A4.612,4.612,0,0,1,7.5,13,4.342,4.342,0,0,1,7,12.949Z"/></g><g id="colorAction"><path class="icon-vs-action-blue" d="M13.354,13.646l-3-3a.545.545,0,0,0-.071-.047A3.462,3.462,0,0,0,11,8.5,3.5,3.5,0,1,0,7.5,12a3.462,3.462,0,0,0,2.1-.717.57.57,0,0,0,.047.07l3,3a.5.5,0,1,0,.708-.707ZM7.5,11A2.5,2.5,0,1,1,10,8.5,2.5,2.5,0,0,1,7.5,11Z"/></g></svg> </del>  No newline at end of file <ins> <svg fill="none" height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="m6 12h-1c-.27-.02-.48-.11-.69-.31s-.3-.42-.31-.69v-6.28c.59-.34 1-.98 1-1.72 0-1.11-.89-2-2-2s-2 .89-2 2c0 .73.41 1.38 1 1.72v6.28c.03.78.34 1.47.94 2.06s1.28.91 2.06.94c0 0 1.02 0 1 0v2l3-3-3-3zm-3-10.2c.66 0 1.2.55 1.2 1.2s-.55 1.2-1.2 1.2-1.2-.55-1.2-1.2.55-1.2 1.2-1.2zm11 9.48c0-1.73 0-6.28 0-6.28-.03-.78-.34-1.47-.94-2.06s-1.28-.91-2.06-.94h-1v-2l-3 3 3 3v-2h1c.27.02.48.11.69.31s.3.42.31.69v6.28c-.59.34-1 .98-1 1.72 0 1.11.89 2 2 2s2-.89 2-2c0-.73-.41-1.38-1-1.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2s.55-1.2 1.2-1.2 1.2.55 1.2 1.2-.55 1.2-1.2 1.2z" fill="#c5c5c5" fill-rule="evenodd"/></svg> </ins>  No newline at end of file


# Install the desktop entry if hash desktop-file-install 2>/dev/null; then desktop-file-install /usr/share/applications/@@NAME@@.desktop <ins> desktop-file-install /usr/share/applications/@@NAME@@-url-handler.desktop </ins> fi if [ "@@NAME@@" != "code-oss" ]; then


import { IMarkerData, IMarkerService } from 'vs/platform/markers/common/markers'; import { IRange } from 'vs/editor/common/core/range'; import { ICellExecutionError, ICellExecutionStateChangedEvent, IExecutionStateChangedEvent, INotebookExecutionStateService, NotebookExecutionType } from 'vs/workbench/contrib/notebook/common/notebookExecutionStateService'; <del> import { IInlineChatService } from 'vs/workbench/contrib/inlineChat/common/inlineChat'; </del> import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { CellKind, NotebookSetting } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { INotebookEditor, INotebookEditorContribution } from 'vs/workbench/contrib/notebook/browser/notebookBrowser';


const is32ProcessOn64Windows = process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432'); const system32Path = `${process.env['windir']}${is32ProcessOn64Windows ? 'Sysnative' : 'System32'}`; <del> const osVersion = (/(d+).(d+).(d+)/g).exec(os.release()); </del> let useWSLexe = false; <del> if (osVersion && osVersion.length === 4) { const buildNumber = parseInt(osVersion[3]); if (buildNumber >= 16299) { useWSLexe = true; } </del> <ins> if (TerminalInstance.getWindowsBuildNumber() >= 16299) { useWSLexe = true; </ins> } const expectedLocations = {


} public static moveToBeginningOfLine(config: CursorConfiguration, model: ICursorSimpleModel, cursor: SingleCursorState, inSelectionMode: boolean): SingleMoveOperationResult { <del> let lineNumber = cursor.selection.startLineNumber; </del> <ins> let lineNumber = cursor.position.lineNumber; </ins> let minColumn = model.getLineMinColumn(lineNumber); let firstNonBlankColumn = model.getLineFirstNonWhitespaceColumn(lineNumber) || minColumn; let column: number; <del> if (cursor.selection.startColumn === firstNonBlankColumn) { </del> <ins> let relevantColumnNumber = cursor.position.column; if (relevantColumnNumber === firstNonBlankColumn) { </ins> column = minColumn; } else { column = firstNonBlankColumn;


@ILogService logService: ILogService ) { super(lifecycleMainService, configurationService, environmentService, requestService, logService); <ins> } initialize(): void { super.initialize(); </ins> this.onRawError(this.onError, this, this.disposables); this.onRawUpdateAvailable(this.onUpdateAvailable, this, this.disposables); this.onRawUpdateDownloaded(this.onUpdateDownloaded, this, this.disposables);


// this._logService.debug('match found without corresponding matchIndex', match, matcher); break; } <ins> const originalLink = link; const cachedLinkResult = map.get(originalLink); if (cachedLinkResult && !this._testing) { if (typeof cachedLinkResult !== 'string') { result.push(cachedLinkResult); } break; } </ins> // Get index, match.index is for the outer match which includes negated chars // therefore we cannot use match.index directly, instead we search the position


return localize('trustedFolderWithHostAriaLabel', "{0} on {1}, trusted", this.labelService.getUriLabel(item.uri), hostLabel); }, getWidgetAriaLabel: () => localize('trustedFoldersAndWorkspaces', "Trusted Folders & Workspaces") <ins> }, identityProvider: { getId(element: ITrustedUriItem) { return element.uri.toString(); }, </ins> } } ) as WorkbenchTable<ITrustedUriItem>;


private globalExcludePattern?: glob.ParsedExpression; <del> constructor(private config: IFileQuery, private provider: FileSearchProviderNew, private sessionToken?: unknown) { </del> <ins> constructor(private config: IFileQuery, private provider: FileSearchProviderNew, private sessionLifecycle?: SessionLifecycle) { </ins> this.filePattern = config.filePattern; this.includePattern = config.includePattern && glob.parse(config.includePattern); this.maxResults = config.maxResults || undefined;


pull(): Promise<void> { return this._repository.pull(); } <ins> push(head: Branch): Promise<void> { return this._repository.push(head); } pushTo(remote?: string, name?: string, setUpstream: boolean = false): Promise<void> { return this._repository.pushTo(remote, name, setUpstream); } </ins> } export class ApiGit implements Git {


static readonly DebugWatchContext = new MenuId('DebugWatchContext'); static readonly DebugToolBar = new MenuId('DebugToolBar'); static readonly EditorContext = new MenuId('EditorContext'); <ins> static readonly SimpleEditorContext = new MenuId('SimpleEditorContext'); </ins> static readonly EditorContextCopy = new MenuId('EditorContextCopy'); static readonly EditorContextPeek = new MenuId('EditorContextPeek'); static readonly EditorTitle = new MenuId('EditorTitle');


return this.input.selectionEnd === this.input.value.length && this.input.selectionStart === this.input.selectionEnd; } <del> public getSelection(): IRange | null { const selectionStart = this.input.selectionStart; if (selectionStart === null) { return null; } const selectionEnd = this.input.selectionEnd ?? selectionStart; return { start: selectionStart, end: selectionEnd, }; } </del> public enable(): void { this.input.removeAttribute('disabled'); }


widgetPosition = this._editor.getSelection().getStartPosition().delta(-1); } <del> let needsMargin = false; </del> if (initialRender) { this._zone.value.setContainerMargins(); }


if (!this.url) { return Promise.resolve(undefined); } return this.requestService.request({ url: this.url }, CancellationToken.None).then(context => { // The update server replies with 204 (No Content) when no // update is available - that's all we want to know.


}); } <ins> disposeElement(element: ActionBarCell, index: number, templateData: IActionBarTemplateData, height: number | undefined) { templateData.elementDisposable.dispose(); } </ins> disposeTemplate(templateData: IActionBarTemplateData): void { <ins> templateData.label.dispose(); </ins> templateData.actionBar.dispose(); templateData.elementDisposable.dispose(); <ins> templateData.button?.dispose(); </ins> } }


private _getAccessibleViewHelpDialogContent(providerHasSymbols?: boolean): string { const navigationHint = this._getNavigationHint(); const goToSymbolHint = this._getGoToSymbolHint(providerHasSymbols); <del> const toolbarHint = localize('toolbar', "Navigate to the toolbar (Shift+Tab))."); </del> <ins> const toolbarHint = localize('toolbar', "Navigate to the toolbar (Shift+Tab)."); </ins> const chatHints = this._getChatHints(); let hint = localize('intro', "In the accessible view, you can:n");


} @command('git.clone') <del> async clone(url?: string): Promise<void> { </del> <ins> async clone(url?: string, parentPath?: string): Promise<void> { </ins> if (!url) { url = await window.showInputBox({ prompt: localize('repourl', "Repository URL"),


import { CATEGORIES } from 'vs/workbench/common/actions'; import { ActiveGroupEditorsByMostRecentlyUsedQuickAccess } from 'vs/workbench/browser/parts/editor/editorQuickAccess'; import { IOpenerService } from 'vs/platform/opener/common/opener'; <del> import { EditorResolution, IEditorOptions, ITextEditorOptions } from 'vs/platform/editor/common/editor'; </del> <ins> import { EditorResolution, IEditorOptions, IResourceEditorInput, ITextEditorOptions } from 'vs/platform/editor/common/editor'; </ins> import { Schemas } from 'vs/base/common/network'; import { SideBySideEditorInput } from 'vs/workbench/common/editor/sideBySideEditorInput'; import { SideBySideEditor } from 'vs/workbench/browser/parts/editor/sideBySideEditor'; import { IJSONSchema } from 'vs/base/common/jsonSchema'; import { IEditorResolverService } from 'vs/workbench/services/editor/common/editorResolverService'; <ins> import { IPathService } from 'vs/workbench/services/path/common/pathService'; </ins> export const CLOSE_SAVED_EDITORS_COMMAND_ID = 'workbench.action.closeUnmodifiedEditors'; export const CLOSE_EDITORS_IN_GROUP_COMMAND_ID = 'workbench.action.closeEditorsInGroup';


<del> 88cafda8394985e59d3d84cb4a6692ad04d8e32db9ecd6429e748e41526ddad7 *electron-v25.8.0-darwin-arm64-symbols.zip 6e33d3b8041561722ed41777e055a8c15d3f4e61b67367b2618918bcf0cfea76 *electron-v25.8.0-darwin-arm64.zip 438ac9915e062a239fb6d2595323c4783d2c820efc9cbcf3d2c1253d0e057e83 *electron-v25.8.0-darwin-x64-symbols.zip 798907d2a66bc79202c8213c61e7fd147ae2a8c31c485d814950b11d43bbbba8 *electron-v25.8.0-darwin-x64.zip 3243f3764319cff6c942d9f90a86323c36ec05ec51ef01e782c4e9a7194187e1 *electron-v25.8.0-linux-arm64-symbols.zip f24f858b76bf8a2e18419f62e0f891712b2fa541089123e9caa8d5cd67fc3276 *electron-v25.8.0-linux-arm64.zip dc3ff0489a0ebeda56d06b31eeae75dd7321a52bb601069c4475c56462b4814a *electron-v25.8.0-linux-armv7l-symbols.zip 3b7a0c3899f828a5cf30043b73992e90231400b90c1afa700a44f892a55e326b *electron-v25.8.0-linux-armv7l.zip 44803b2487406eca8fff9cec405e9e50bd92a911808dfaaa523b9ef52a0e72d8 *electron-v25.8.0-linux-x64-symbols.zip d54fb2df0ad7318240220aa26327171ed1e891fb296f3c27c58b8b487c4df8eb *electron-v25.8.0-linux-x64.zip bf7be6c0c8d0df06f0ce22e16c97aea823415d7f5cbf0ffdadf65d75feaf3cd8 *electron-v25.8.0-win32-arm64-pdb.zip 5d91757660b44bf30907f9c2b52225ade4d127d0fe48dc83dec134cc06c949f0 *electron-v25.8.0-win32-arm64-symbols.zip d1e6f30a8d8c7aed28d08ddf915d79de6b16b3a0a7c84c45fd3cc0d47f2b7f53 *electron-v25.8.0-win32-arm64.zip e389fef61c14ea0eefad91a9725aa0afd4dbdc982f7b30aba97bd9c2871c2061 *electron-v25.8.0-win32-ia32-pdb.zip 374d6c8897f97fab04e990ecf928e05f643ae33801546bf7d39bf4045b9d8b52 *electron-v25.8.0-win32-ia32-symbols.zip 73fc3382202b70dcaf7928f09a791662de82c701b8f403ed72cc5aa9b1401593 *electron-v25.8.0-win32-ia32.zip 010d248bd2e77585e1fa977e58b016659566de5a91c1e6845c85a7e6e1851bb9 *electron-v25.8.0-win32-x64-pdb.zip 72adb74fd92edff35c177c3c5d96765f230bc7adb8af11b30d5122b9e54c26e1 *electron-v25.8.0-win32-x64-symbols.zip 0051d0f241aedc6cdab4751c60f48758936122796f06c9e3033c7710a531686c *electron-v25.8.0-win32-x64.zip 2956915642c45eb0099228368d0af50e891e4c10014fa4d3d3bcfb135fbb89a7 *ffmpeg-v25.8.0-darwin-arm64.zip 099ee69d44f8ac3802cdd612895f279f7adb043a5b9c9d123479b0f96514a44c *ffmpeg-v25.8.0-darwin-x64.zip bd52d57ff97fb56ac01a3482af905d04f0d4e9c13c53858c6d9f99957eca82da *ffmpeg-v25.8.0-linux-arm64.zip 9b3d09177fa1e63e2a6beecfa70aeec30aeb5c1873ff21128a68051c4e23f95d *ffmpeg-v25.8.0-linux-armv7l.zip edc7b1c9f1a0733f109a2c0375a4e40c5bfe0bf28b7f06dcc76e1ada0aa2f125 *ffmpeg-v25.8.0-linux-x64.zip a58e9480dab981ff973749e9d1e08936b2dd63a4b7f9523c030b1833387a4eb5 *ffmpeg-v25.8.0-win32-arm64.zip 6866b23a4d561c0322aeb7690aae646718c54398739946e352bf80d0dd721bfd *ffmpeg-v25.8.0-win32-ia32.zip 7b906df4ad6252881cf1e58619285b624f74d593379fbc6728e238b852d6abad *ffmpeg-v25.8.0-win32-x64.zip </del> <ins> 197a62bdc616148537af5c8f1256563a27a733cae0d41b9a42e9e9f2901cc9ae *electron-v25.8.1-darwin-arm64-symbols.zip 985f4beee009ef6dbe7af75009a1b281aff591b989ee544bd4d2c814f9c4428d *electron-v25.8.1-darwin-arm64.zip 56209b302eb30bff3727dbb74467cb2e6e93e5a99d6939d1c3a7c8320fa26d72 *electron-v25.8.1-darwin-x64-symbols.zip fe61a3221d4c5dc9415dc2cce81010db61bb4a5ab5021d1023f48786dbaf0b28 *electron-v25.8.1-darwin-x64.zip 1b52beba5b1b133cccd253c32648cdfa51659e5db2f20441baafd6a3c8fcb56a *electron-v25.8.1-linux-arm64-symbols.zip 931208419f859f528e19805ae14b5b075213bc40dd20da9e03d8b71d849c147d *electron-v25.8.1-linux-arm64.zip 61929b61541f23b75cca6b1a6764c219499a9799376298cc9061fc1a8716d1e1 *electron-v25.8.1-linux-armv7l-symbols.zip dd3390de2426a1cea9d3176e404b8fb250844a9b0e48cf01822fa66f3c3c4a48 *electron-v25.8.1-linux-armv7l.zip 1812459d2bd0440e35134ddb3f56e8e173a8791db888756d22080ace244248ba *electron-v25.8.1-linux-x64-symbols.zip de556aef0a80a8fe7b2b39d74ab0bdecc65d72bba3b7349460d18ef2a22fa323 *electron-v25.8.1-linux-x64.zip baa1bb8985b09100b1b2b710cea2c3f8e72a7f5d0e3421cbf675c25e732b0d9f *electron-v25.8.1-win32-arm64-pdb.zip 4a22945c2584677a822d8f9eb6cb23e5607b985f85ec7523ab977b73dd6487c2 *electron-v25.8.1-win32-arm64-symbols.zip 567d3188f86176a875fb6562040a3767c638814cf06073e7131495ec681b3957 *electron-v25.8.1-win32-arm64.zip 148589f41cd4175b85138450a0a0e32eef1a519d5cb5f471374e167518a2ed47 *electron-v25.8.1-win32-ia32-pdb.zip f284ac337a8d5e564081fee6d26c2b2f782feed0bcbe29b7507f749da36b6e5c *electron-v25.8.1-win32-ia32-symbols.zip 6737e56588a2707534979e5dcfbf68399971a5e98d4848fa29fb43b7ae1dc378 *electron-v25.8.1-win32-ia32.zip 23c6ef26f7e1914149def7525b728212340fc6befa6bac30eafec8f8229f9e67 *electron-v25.8.1-win32-x64-pdb.zip 3eb3b87587b136e636d82fa4d28015d8ef6709468b3bb33eddae80d83076a053 *electron-v25.8.1-win32-x64-symbols.zip 963c05266bf83bc77f690b75a76855d7b7bc0be9bac4973292f3e7d506fd2c94 *electron-v25.8.1-win32-x64.zip ab608119c4bb4ebcefede6afdd911ef8ea007465ab7d2093a091bdb9ff466236 *ffmpeg-v25.8.1-darwin-arm64.zip 5abaf6356bb40fdfcaf88177e13c50447a48fe7fc6c1c3869cf4536148eb60d4 *ffmpeg-v25.8.1-darwin-x64.zip bd52d57ff97fb56ac01a3482af905d04f0d4e9c13c53858c6d9f99957eca82da *ffmpeg-v25.8.1-linux-arm64.zip 9b3d09177fa1e63e2a6beecfa70aeec30aeb5c1873ff21128a68051c4e23f95d *ffmpeg-v25.8.1-linux-armv7l.zip edc7b1c9f1a0733f109a2c0375a4e40c5bfe0bf28b7f06dcc76e1ada0aa2f125 *ffmpeg-v25.8.1-linux-x64.zip 6b2494dd5bf7f17eec800f41d232506007b36c7cae6f885565e035d3168a0c64 *ffmpeg-v25.8.1-win32-arm64.zip 8b57594cd2065437cf3378e845bae4de3501ebff7f1f1f516fc0aaf09c311c2b *ffmpeg-v25.8.1-win32-ia32.zip 95bb8e167e96bb4f902e6238312e245ed0acfae45eeda471e0f8ad0f0baaac2f *ffmpeg-v25.8.1-win32-x64.zip </ins>


VSCODE_BUILD_LINUX: ${{ parameters.VSCODE_BUILD_LINUX }} VSCODE_BUILD_LINUX_ALPINE: ${{ parameters.VSCODE_BUILD_LINUX_ALPINE }} <del> - ${{ if or(eq(parameters.VSCODE_BUILD_LINUX_ALPINE_ARM64, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true)) }}: - job: LinuxArm64 </del> <ins> - ${{ if or(eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true)) }}: - job: LinuxGnuARM pool: vscode-1es-linux steps: - template: ./linux/cli-build-linux.yml parameters: VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} VSCODE_BUILD_LINUX_ARMHF: ${{ parameters.VSCODE_BUILD_LINUX_ARMHF }} VSCODE_BUILD_LINUX_ARM64: ${{ parameters.VSCODE_BUILD_LINUX_ARM64 }} - ${{ if eq(parameters.VSCODE_BUILD_LINUX_ALPINE_ARM64, true) }}: - job: LinuxAlpineARM64 </ins> pool: vscode-1es-linux-20.04-arm64 <del> variables: VSCODE_ARCH: arm64 </del> steps: - task: NodeTool@0 displayName: Install Node.js


import { WorkbenchState, IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { coalesce } from 'vs/base/common/arrays'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; <ins> import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { isEqual } from 'vs/base/common/resources'; </ins> const TextInputActions: IAction[] = [ new Action('undo', nls.localize('undo', "Undo"), undefined, true, () => Promise.resolve(document.execCommand('undo'))),


const CONFIG_HELP_TEXT_PRE = `// Links matching one or more entries in the list below can be opened without link protection. // The following examples show what entries can look like: // - "https://microsoft.com": Matches this specific domain using https <ins> // - "https://microsoft.com:8080": Matches this specific domain on this port using https // - "https://microsoft.com:*": Matches this specific domain on any port using https </ins> // - "https://microsoft.com/foo": Matches https://microsoft.com/foo and https://microsoft.com/foo/bar, //   but not https://microsoft.com/foobar or https://microsoft.com/bar // - "https://*.microsoft.com": Match all domains ending in "microsoft.com" using https // - "microsoft.com": Match this specific domain using either http or https // - "*.microsoft.com": Match all domains ending in "microsoft.com" using either http or https <ins> // - "http://192.168.0.1: Matches this specific IP using http // - "http://192.168.0.*: Matches all IP's with this prefix using http </ins> // - "*": Match all domains using either http or https // `;


} getScopedEnvironmentVariableCollection(scope: vscode.EnvironmentVariableScope | undefined): IEnvironmentVariableCollection { <ins> if (this._extension && scope) { // TODO: This should be removed when the env var extension API(s) are stabilized checkProposedApiEnabled(this._extension, 'envCollectionWorkspace'); } </ins> const scopedCollectionKey = this.getScopeKey(scope); let scopedCollection = this.scopedCollections.get(scopedCollectionKey); if (!scopedCollection) {


}); } await this.storeForwarded(); <ins> this.checkExtensionActivationEvents(); </ins> this.remoteTunnels.set(key, tunnel); this._onForwardPort.fire(this.forwarded.get(key)!); })); this._register(this.tunnelService.onTunnelClosed(address => { return this.onTunnelClosed(address, TunnelCloseReason.Other); })); <del> this.checkExtensionActivationEvents(); </del> } private extensionHasActivationEvent() {


*/ app.commandLine.appendSwitch('disable-features', 'CalculateNativeWinOcclusion'); <del> /* Following features are enabled from the runtime. * `AutoDisableAccessibility` - https://github.com/microsoft/vscode/issues/162331#issue-1390744354 */ app.commandLine.appendSwitch('enable-features', 'AutoDisableAccessibility'); </del> // Support JS Flags const jsFlags = getJSFlags(cliArgs); if (jsFlags) {


.search-view .monaco-tree .monaco-tree-row:hover:not(.highlighted) .monaco-action-bar, .search-view .monaco-tree .monaco-tree-row.focused .monaco-action-bar { <del> display: inline-block; } .search-view:not(.wide) .monaco-tree .monaco-tree-row .linematch .actionBarContainer { flex: 1; </del> <ins> display: block; </ins> } .search-view:not(.wide) .monaco-tree .monaco-tree-row .monaco-action-bar { <del> float: right; </del> <ins> flex: 1 0 auto; </ins> } .search-view .monaco-tree .monaco-tree-row .monaco-action-bar .action-label {


* Provide results that match the given text pattern. * @param query The parameters for this query. * @param options A set of options to consider while searching. <del> * @param progress A progress callback that must be invoked for all results. </del> <ins> * @param progress A progress callback that must be invoked for all {@link TextSearchResultNew results}. * These results can be direct matches, or context that surrounds matches. </ins> * @param token A cancellation token. */ provideTextSearchResults(query: TextSearchQueryNew, options: TextSearchProviderOptions, progress: Progress<TextSearchResultNew>, token: CancellationToken): ProviderResult<TextSearchCompleteNew>;


const replace = DOM.append(parent, DOM.$('span.replaceMatch')); const after = DOM.append(parent, DOM.$('span')); const lineNumber = DOM.append(container, DOM.$('span.matchLineNum')); <del> const actionBarContainer = DOM.append(container, DOM.$('span.actionBarContainer')); const actions = new ActionBar(actionBarContainer, { animated: false }); </del> <ins> const actions = new ActionBar(container, { animated: false }); </ins> return { parent,


export class WelcomeDialogService implements IWelcomeDialogService { declare readonly _serviceBrand: undefined; <del> private dialog: Dialog | undefined; private disposableStore: DisposableStore = new DisposableStore(); </del> constructor( <del> @ILayoutService private readonly layoutService: ILayoutService, @IInstantiationService private readonly instantiationService: IInstantiationService) { } private static iconWidgetFor(icon: string) { const themeIcon = ThemeIcon.fromId(icon); if (themeIcon) { const widget = $(ThemeIcon.asCSSSelector(themeIcon)); widget.classList.add('icon-widget'); return widget; } return ''; </del> <ins> @IDialogService private readonly dialogService: IDialogService) { </ins> } async show(welcomeDialogItem: IWelcomeDialogItem): Promise<void> { <del> this.disposableStore.clear(); const renderBody = (parent: HTMLElement) => { parent.classList.add(...('dialog-items')); parent.appendChild(document.createElement('hr')); </del> <ins> const renderBody = (icon: string, message: string): MarkdownString => { const mds = new MarkdownString(undefined, { supportThemeIcons: true, supportHtml: true }); mds.appendMarkdown(`<a>$(${icon})</a>`); mds.appendMarkdown(message); return mds; }; </ins> <del> for (const message of welcomeDialogItem.messages) { const descriptorComponent = $('.dialog-message', {}, WelcomeDialogService.iconWidgetFor(message.icon), $('.description-container', {}, $('.description.description.max-lines-3', { 'x-description-for': 'description' }, ...renderLabelWithIcons(message.message)))); parent.appendChild(descriptorComponent); } </del> <ins> const hr = new MarkdownString(undefined, { supportThemeIcons: true, supportHtml: true }); hr.appendMarkdown('<hr>'); </ins> <del> const actionsContainer = $('div.dialog-action-container'); parent.appendChild(actionsContainer); if (welcomeDialogItem.action) { this.disposableStore.add(this.instantiationService.createInstance(Link, actionsContainer, welcomeDialogItem.action, {})); } }; </del> <ins> const link = new MarkdownString(undefined, { supportThemeIcons: true, supportHtml: true }); if (welcomeDialogItem.action) { link.appendLink(welcomeDialogItem.action.href, welcomeDialogItem.action.label as string); } </ins> <del> this.dialog = new Dialog( this.layoutService.container, welcomeDialogItem.title, [welcomeDialogItem.buttonText], { detail: '', type: 'none', renderBody: renderBody, </del> <ins> await this.dialogService.prompt({ type: 'none', message: welcomeDialogItem.title, cancelButton: welcomeDialogItem.buttonText, custom: { </ins> disableCloseAction: true, <del> buttonStyles: defaultButtonStyles, checkboxStyles: defaultCheckboxStyles, inputBoxStyles: defaultInputBoxStyles, dialogStyles: defaultDialogStyles }); </del> <ins> markdownDetails: [ { markdown: hr, classes: ['hr'] }, ...welcomeDialogItem.messages.map(value => { return { markdown: renderBody(value.icon, value.message), classes: ['message-body'] }; }), { markdown: link, classes: ['link'] } ] } }); </ins> <del> this.disposableStore.add(this.dialog); await this.dialog.show(); </del> welcomeDialogItem.onClose?.(); <del> this.disposableStore.dispose(); </del> } }


export const INotebookCellOutlineProviderFactory = createDecorator<INotebookCellOutlineProviderFactory>('INotebookCellOutlineProviderFactory'); export interface INotebookCellOutlineProviderFactory { <del> getOrCreate(editor: INotebookEditor, target: OutlineTarget): IReference<NotebookCellOutlineProvider> </del> <ins> getOrCreate(editor: INotebookEditor, target: OutlineTarget): IReference<NotebookCellOutlineProvider>; </ins> } export class NotebookCellOutlineProviderFactory implements INotebookCellOutlineProviderFactory {


} function renderText(outputInfo: OutputItem, container: HTMLElement, ctx: RendererContext<void> & { readonly settings: { readonly lineLimit: number } }): void { <ins> clearContainer(container); </ins> const contentNode = document.createElement('div'); contentNode.classList.add('output-plaintext'); const text = outputInfo.text();


for (const panel of this.getPanels()) { this.compositeBar.addComposite(panel, false); } <ins> this.activePanelContextKey = ActivePanelContext.bindTo(contextKeyService); this.onDidPanelOpen(this._onDidPanelOpen, this, this.disposables); this.onDidPanelClose(this._onDidPanelClose, this, this.disposables); </ins> this.registerListeners(); }


import * as nls from 'vs/nls'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import Event, { Emitter, chain } from 'vs/base/common/event'; <del> import { KeyCode } from 'vs/base/common/keyCodes'; </del> <ins> import { KeyCode, KeyCodeUtils } from 'vs/base/common/keyCodes'; </ins> import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import * as dom from 'vs/base/browser/dom'; import * as arrays from 'vs/base/common/arrays';


private updateEnabled() { const settingEnabled = this.configurationService.getValue(NotebookSetting.cellFailureDiagnostics); <del> if (this.enabled && (!settingEnabled || Iterable.isEmpty(this.inlineChatService.getAllProvider()))) { </del> <ins> if (this.enabled && (!settingEnabled || Iterable.isEmpty(this.chatAgentService.getAgents()))) { </ins> this.enabled = false; this.clearAll(); <del> } else if (!this.enabled && settingEnabled && !Iterable.isEmpty(this.inlineChatService.getAllProvider())) { </del> <ins> } else if (!this.enabled && settingEnabled && !Iterable.isEmpty(this.chatAgentService.getAgents())) { </ins> this.enabled = true; if (!this.listening) { this.listening = true;


private _usedShellIntegrationInjection: boolean = false; get usedShellIntegrationInjection(): boolean { return this._usedShellIntegrationInjection; } private _lineDataEventAddon: LineDataEventAddon | undefined; <ins> private readonly _scopedContextKeyService: IContextKeyService; </ins> readonly capabilities = new TerminalCapabilityStoreMultiplexer(); readonly statusList: ITerminalStatusList;


.pipe(replace('@@ICON@@', product.applicationName)) .pipe(rename('BUILD/usr/share/applications/' + product.applicationName + '.desktop')); <ins> const desktopUrlHandler = gulp.src('resources/linux/code-url-handler.desktop', { base: '.' }) .pipe(replace('@@NAME_LONG@@', product.nameLong)) .pipe(replace('@@NAME_SHORT@@', product.nameShort)) .pipe(replace('@@NAME@@', product.applicationName)) .pipe(replace('@@ICON@@', product.applicationName)) .pipe(rename('BUILD/usr/share/applications/' + product.applicationName + '-url-handler.desktop')); </ins> const appdata = gulp.src('resources/linux/code.appdata.xml', { base: '.' }) .pipe(replace('@@NAME_LONG@@', product.nameLong)) .pipe(replace('@@NAME@@', product.applicationName))


resolved "https://registry.yarnpkg.com/xterm-addon-unicode11/-/xterm-addon-unicode11-0.5.0.tgz#41c0d96acc1e3bb6c6596eee64e163b6bca74be7" integrity sha512-Jm4/g4QiTxiKiTbYICQgC791ubhIZyoIwxAIgOW8z8HWFNY+lwk+dwaKEaEeGBfM48Vk8fklsUW9u/PlenYEBg== <del> xterm-addon-webgl@0.15.0-beta.7: version "0.15.0-beta.7" resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.15.0-beta.7.tgz#ab247b499f61e8eebff92e08ec5ca999d87e06af" integrity sha512-7WCI/D6uFNp3y9TeTsbSo1h7gCy4h/yP2lWn8ZEjCaiGvO11DbKMq17fbiwaR3YmGWXoRKkcLaNIiqxFnjKO4w== </del> <ins> xterm-addon-webgl@0.15.0-beta.8: version "0.15.0-beta.8" resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.15.0-beta.8.tgz#2005198582f6f1f4a9b2612b9354c0bcc9f148d8" integrity sha512-HjTr9bi3FvdOIPaaIpih6qdHX2z+H7sQPluLj5KzwCqRiEVUVRi19dl8SdHjf6dCmN3GahMhjV7D+zxHi2pLTw== </ins> <del> xterm-headless@5.2.0-beta.30: version "5.2.0-beta.30" resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-5.2.0-beta.30.tgz#f40b950f744111537a6403d33782669b1149fabb" integrity sha512-aW6yljrcuu74kxg3w1DG1CZJSz38nKY/HOX3YOOE7cqxlkVXM7lltXZFEiF0xXDR0GHcmnEwnFWqA2rDmdhoDA== </del> <ins> xterm-headless@5.2.0-beta.33: version "5.2.0-beta.33" resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-5.2.0-beta.33.tgz#a1fbed45b0afbd73fbd6bdd22f1f8f7644244f7c" integrity sha512-h9gdzCl3jGSrq7FoZ+e0qWdSYhhKA3hkyuIMelYWIMz8HihxbLAZHErYKtYyDhgXRLNM2ZpS1sjeXLrDC7m2dA== </ins> <del> xterm@5.2.0-beta.30: version "5.2.0-beta.30" resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.2.0-beta.30.tgz#6f50796d1652a61b30eeed7fa2bdd9c485a7d8ee" integrity sha512-l1YBwMnakKXd638oxbzEg9Y1sWqxcrm/q7i5gBuWaK8N7Tq1NvF51FCamxXtfdL4dostgw8WoM+/6KRlL53t6A== </del> <ins> xterm@5.2.0-beta.33: version "5.2.0-beta.33" resolved "https://registry.yarnpkg.com/xterm/-/xterm-5.2.0-beta.33.tgz#584fb261ec283573ddb9d3ef4b3ea63a9a359f81" integrity sha512-HIkQgn0/akWLWLzUJquAeVF1/nqPgqL6KzmhkAOJbOtNHftNZbEK+lDGfzz1dUC/smpXQkKm7X2nn92h3i1tgQ== </ins> y18n@^3.2.1: version "3.2.2"


import { IFileMatch, IFileSearchProviderStats, IFolderQuery, ISearchCompleteStats, IFileQuery, QueryGlobTester, resolvePatternsForProvider, hasSiblingFn, excludeToGlobPattern, DEFAULT_MAX_SEARCH_RESULTS } from 'vs/workbench/services/search/common/search'; import { FileSearchProviderFolderOptions, FileSearchProviderNew, FileSearchProviderOptions } from 'vs/workbench/services/search/common/searchExtTypes'; import { TernarySearchTree } from 'vs/base/common/ternarySearchTree'; <ins> import { Disposable } from 'vs/base/common/lifecycle'; import { OldFileSearchProviderConverter } from 'vs/workbench/services/search/common/searchExtConversionTypes'; </ins> interface IInternalFileMatch { base: URI;


import * as vscode from 'vscode'; import * as nls from 'vscode-nls'; <ins> import { Utils } from 'vscode-uri'; </ins> import { Command } from '../commandManager'; import { createUriListSnippet, getParentDocumentUri, imageFileExtensions } from '../languageFeatures/dropIntoEditor'; import { coalesce } from '../util/arrays';


import { Registry } from 'vs/platform/registry/common/platform'; import { TreeView, TreeViewPane } from 'vs/workbench/browser/parts/views/treeView'; import { Extensions, ITreeItem, ITreeViewDataProvider, ITreeViewDescriptor, IViewsRegistry, TreeItemCollapsibleState, TreeViewItemHandleArg, ViewContainer } from 'vs/workbench/common/views'; <del> import { EDIT_SESSIONS_SCHEME, EDIT_SESSIONS_TITLE, IEditSessionsWorkbenchService } from 'vs/workbench/contrib/editSessions/common/editSessions'; </del> <ins> import { EDIT_SESSIONS_SCHEME, EDIT_SESSIONS_SHOW_VIEW, EDIT_SESSIONS_SIGNED_IN, EDIT_SESSIONS_TITLE, IEditSessionsWorkbenchService } from 'vs/workbench/contrib/editSessions/common/editSessions'; </ins> import { URI } from 'vs/base/common/uri'; import { fromNow } from 'vs/base/common/date'; import { Codicon } from 'vs/base/common/codicons';