jiebi/CodeConvo huggingface dataset:
} function prepareBracketForRegExp(str: string): string { <del> const escaped = escapeRegExpCharacters(str); // This bracket pair uses letters like e.g. "begin" - "end" (see https://github.com/microsoft/vscode/issues/132162) const needsWordBoundaries = (/^[w ]+$/.test(str)); return (needsWordBoundaries ? `b${escaped}b` : escaped); </del> <ins> let escaped = escapeRegExpCharacters(str); // These bracket pair delimiters start or end with letters // see https://github.com/microsoft/vscode/issues/132162 https://github.com/microsoft/vscode/issues/150440 if (/^[w ]+/.test(str)) { escaped = `b${escaped}`; } if (/[w ]+$/.test(str)) { escaped = `${escaped}b`; } return escaped; </ins> } export class LanguageAgnosticBracketTokens {
private _onDidChangeLogLevel = new EventEmitter<LogLevel>(); readonly onDidChangeLogLevel: Event<LogLevel> = this._onDidChangeLogLevel.event; <del> private _currentLogLevel: LogLevel; </del> <ins> private _currentLogLevel!: LogLevel; </ins> get currentLogLevel(): LogLevel { return this._currentLogLevel; } <ins> set currentLogLevel(value: LogLevel) { if (this._currentLogLevel === value) { return; } this._currentLogLevel = value; this._onDidChangeLogLevel.fire(value); this.log(localize('gitLogLevel', "Log level: {0}", LogLevel[value])); } </ins> <del> private _defaultLogLevel: LogLevel; </del> <ins> private _defaultLogLevel!: LogLevel; </ins> get defaultLogLevel(): LogLevel { return this._defaultLogLevel; }
commands.registerCommand('git.showOutput', () => this.showOutputChannel()); this._disposables.push(this._outputChannel); <del> // Initialize log level </del> <ins> this._disposables.push(workspace.onDidChangeConfiguration(e => { if (e.affectsConfiguration('git.logLevel')) { this.onLogLevelChange(); } })); this.onLogLevelChange(); } private onLogLevelChange(): void { </ins> const config = workspace.getConfiguration('git'); const logLevel: keyof typeof LogLevel = config.get('logLevel', 'Info'); <del> this._currentLogLevel = this._defaultLogLevel = LogLevel[logLevel] ?? LogLevel.Info; this.logInfo(localize('gitLogLevel', "Log level: {0}", LogLevel[this._currentLogLevel])); </del> <ins> this.currentLogLevel = this._defaultLogLevel = LogLevel[logLevel] ?? LogLevel.Info; </ins> } <del> private log(message: string, logLevel: LogLevel): void { if (logLevel < this._currentLogLevel) { </del> <ins> log(message: string, logLevel?: LogLevel): void { if (logLevel && logLevel < this._currentLogLevel) { </ins> return; } <del> this._outputChannel.appendLine(`[${new Date().toISOString()}] [${LogLevel[logLevel].toLowerCase()}] ${message}`); </del> <ins> this._outputChannel.appendLine(`[${new Date().toISOString()}]${logLevel ? ` [${LogLevel[logLevel].toLowerCase()}]` : ''} ${message}`); </ins> } logCritical(message: string): void {
this.log(message, LogLevel.Warning); } <del> logGitCommand(command: string): void { this._outputChannel.appendLine(`[${new Date().toISOString()}] ${command}`); } setLogLevel(logLevel: LogLevel): void { if (this._currentLogLevel === logLevel) { return; } this._currentLogLevel = logLevel; this._onDidChangeLogLevel.fire(logLevel); this.logInfo(localize('changed', "Log level changed to: {0}", LogLevel[logLevel])); } </del> showOutputChannel(): void { this._outputChannel.show(); }
import { IExtensionsViewPaneContainer, VIEWLET_ID as EXTENSIONS_VIEWLET_ID } from 'vs/workbench/contrib/extensions/common/extensions'; import { ViewContainerLocation } from 'vs/workbench/common/views'; import { IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement'; <ins> import { IProgressService, ProgressLocation } from 'vs/platform/progress/common/progress'; import { localize } from 'vs/nls'; </ins> export class NativeLocaleService implements ILocaleService { _serviceBrand: undefined;
@ILanguagePackService private readonly languagePackService: ILanguagePackService, @IPaneCompositePartService private readonly paneCompositePartService: IPaneCompositePartService, @IExtensionManagementService private readonly extensionManagementService: IExtensionManagementService, <ins> @IProgressService private readonly progressService: IProgressService </ins> ) { } private async writeLocaleValue(locale: string | undefined): Promise<void> {
// Only Desktop has the concept of installing language packs so we only do this for Desktop // and only if the language pack is not installed if (!installedLanguages.some(installedLanguage => installedLanguage.id === languagePackItem.id)) { <del> // Show the view so the user can see the language pack to be installed let viewlet = await this.paneCompositePartService.openPaneComposite(EXTENSIONS_VIEWLET_ID, ViewContainerLocation.Sidebar); (viewlet?.getViewPaneContainer() as IExtensionsViewPaneContainer).search(`@id:${languagePackItem.extensionId}`); </del> // Only actually install a language pack from Microsoft if (languagePackItem.galleryExtension?.publisher.toLowerCase() !== 'ms-ceintl') { <ins> // Show the view so the user can see the language pack that they should install // as of now, there are no 3rd party language packs available on the Marketplace. let viewlet = await this.paneCompositePartService.openPaneComposite(EXTENSIONS_VIEWLET_ID, ViewContainerLocation.Sidebar); (viewlet?.getViewPaneContainer() as IExtensionsViewPaneContainer).search(`@id:${languagePackItem.extensionId}`); </ins> return false; } <del> await this.extensionManagementService.installFromGallery(languagePackItem.galleryExtension); </del> <ins> await this.progressService.withProgress( { location: ProgressLocation.Notification, title: localize('installing', "Installing {0} language support...", languagePackItem.label), }, progress => this.extensionManagementService.installFromGallery(languagePackItem.galleryExtension!, { // Setting this to false is how you get the extension to be synced with Settings Sync (if enabled). isMachineScoped: false, }) ); </ins> } await this.writeLocaleValue(locale);
import { CancellationToken } from 'vs/base/common/cancellation'; import { KeyCode } from 'vs/base/common/keyCodes'; import { Disposable, DisposableStore, toDisposable } from 'vs/base/common/lifecycle'; <del> import { Constants } from 'vs/base/common/uint'; </del> import { ContentWidgetPositionPreference, IActiveCodeEditor, ICodeEditor, IContentWidget, IContentWidgetPosition, IEditorMouseEvent, MouseTargetType } from 'vs/editor/browser/editorBrowser'; import { ConfigurationChangedEvent, EditorOption } from 'vs/editor/common/config/editorOptions'; import { Position } from 'vs/editor/common/core/position';
} private _renderMessages(anchor: HoverAnchor, messages: IHoverPart[]): void { <del> // update column from which to show let renderColumn = Constants.MAX_SAFE_SMALL_INTEGER; let highlightRange: Range = messages[0].range; let forceShowAtRange: Range | null = null; for (const msg of messages) { renderColumn = Math.min(renderColumn, msg.range.startColumn); highlightRange = Range.plusRange(highlightRange, msg.range); if (msg.forceShowAtRange) { forceShowAtRange = msg.range; } } </del> <ins> const { showAtPosition, showAtRange, highlightRange } = ContentHoverController.computeHoverRanges(anchor.range, messages); </ins> const disposables = new DisposableStore(); const statusBar = disposables.add(new EditorHoverStatusBar(this._keybindingService));
this._widget.showAt(fragment, new ContentHoverVisibleData( colorPicker, <del> forceShowAtRange ? forceShowAtRange.getStartPosition() : new Position(anchor.range.startLineNumber, renderColumn), forceShowAtRange ? forceShowAtRange : highlightRange, </del> <ins> showAtPosition, showAtRange, </ins> this._editor.getOption(EditorOption.hover).above, this._computer.shouldFocus, disposables
description: 'content-hover-highlight', className: 'hoverHighlight' }); <ins> public static computeHoverRanges(anchorRange: Range, messages: IHoverPart[]) { // The anchor range is always on a single line const anchorLineNumber = anchorRange.startLineNumber; let renderStartColumn = anchorRange.startColumn; let renderEndColumn = anchorRange.endColumn; let highlightRange: Range = messages[0].range; let forceShowAtRange: Range | null = null; for (const msg of messages) { highlightRange = Range.plusRange(highlightRange, msg.range); if (msg.range.startLineNumber === anchorLineNumber && msg.range.endLineNumber === anchorLineNumber) { // this message has a range that is completely sitting on the line of the anchor renderStartColumn = Math.min(renderStartColumn, msg.range.startColumn); renderEndColumn = Math.max(renderEndColumn, msg.range.endColumn); } if (msg.forceShowAtRange) { forceShowAtRange = msg.range; } } return { showAtPosition: forceShowAtRange ? forceShowAtRange.getStartPosition() : new Position(anchorRange.startLineNumber, renderStartColumn), showAtRange: forceShowAtRange ? forceShowAtRange : new Range(anchorLineNumber, renderStartColumn, anchorLineNumber, renderEndColumn), highlightRange }; } </ins> } class ContentHoverVisibleData {
<ins> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as assert from 'assert'; import { ContentHoverController } from 'vs/editor/contrib/hover/browser/contentHover'; import { Range } from 'vs/editor/common/core/range'; import { Position } from 'vs/editor/common/core/position'; import { IHoverPart } from 'vs/editor/contrib/hover/browser/hoverTypes'; suite('Content Hover', () => { test('issue #151235: Gitlens hover shows up in the wrong place', () => { const actual = ContentHoverController.computeHoverRanges( new Range(5, 5, 5, 5), [<IHoverPart>{ range: new Range(4, 1, 5, 6) }] ); assert.deepStrictEqual( actual, { showAtPosition: new Position(5, 5), showAtRange: new Range(5, 5, 5, 5), highlightRange: new Range(4, 1, 5, 6) } ); }); }); </ins>
first.textContent = 'Output exceeds the '; const second = document.createElement('a'); second.textContent = 'size limit'; <del> second.href = `command:workbench.action.openSettings?["notebook.output.textLineLimit"]`; </del> <ins> second.href = `command:workbench.action.openSettings?%5B%22notebook.output.textLineLimit%22%5D`; </ins> const third = document.createElement('span'); third.textContent = '. Open the full output data'; const forth = document.createElement('a');
try { const installedExtensions = await this._installedExtensions; <del> const options = { text: `${this.marketplaceQuery} ${value}`, pageSize: 40 }; </del> <ins> const options = { text: `${this.marketplaceQuery} ${value}`, pageSize: 20 }; </ins> const pager = await this.extensionGalleryService.query(options, token); <del> for (let i = 0; i < pager.total && i < 1; i++) { </del> <ins> for (let i = 0; i < pager.total && i < 1; i++) { // loading multiple pages is turned of for now to avoid flickering </ins> if (token.isCancellationRequested) { break; } const nThemes = this._marketplaceThemes.length; <ins> const gallery = i === 0 ? pager.firstPage : await pager.getPage(i, token); </ins> <del> const gallery = await pager.getPage(i, token); </del> <ins> const promises: Promise<IWorkbenchTheme[]>[] = []; const promisesGalleries = []; </ins> for (let i = 0; i < gallery.length; i++) { if (token.isCancellationRequested) { break;
const ext = gallery[i]; if (!installedExtensions.has(ext.identifier.id) && !this._marketplaceExtensions.has(ext.identifier.id)) { this._marketplaceExtensions.add(ext.identifier.id); <del> const themes = await this.getMarketplaceColorThemes(ext.publisher, ext.name, ext.version); for (const theme of themes) { this._marketplaceThemes.push({ id: theme.id, theme: theme, label: theme.label, description: `${ext.displayName} · ${ext.publisherDisplayName}`, galleryExtension: ext, buttons: [configureButton] }); } </del> <ins> promises.push(this.getMarketplaceColorThemes(ext.publisher, ext.name, ext.version)); promisesGalleries.push(ext); } } const allThemes = await Promise.all(promises); for (let i = 0; i < allThemes.length; i++) { const ext = promisesGalleries[i]; for (const theme of allThemes[i]) { this._marketplaceThemes.push({ id: theme.id, theme: theme, label: theme.label, description: `${ext.displayName} · ${ext.publisherDisplayName}`, galleryExtension: ext, buttons: [configureButton] }); </ins> } } if (nThemes !== this._marketplaceThemes.length) { this._marketplaceThemes.sort((t1, t2) => t1.label.localeCompare(t2.label)); this._onDidChange.fire();
this.clearDecorations(); } <ins> private _clearPlaceholder(): void { this._placeholderDecoration?.dispose(); this._placeholderDecoration = undefined; } </ins> public clearDecorations(): void { <del> if (this._placeholderDecoration) { this._placeholderDecoration.marker.dispose(); this._placeholderDecoration.dispose(); this._placeholderDecoration = undefined; } </del> <ins> this._placeholderDecoration?.marker.dispose(); this._clearPlaceholder(); </ins> for (const value of this._decorations.values()) { value.decoration.dispose(); dispose(value.disposables);
} if (beforeCommandExecution && !this._placeholderDecoration) { this._placeholderDecoration = decoration; <del> this._placeholderDecoration.onDispose(() => this._placeholderDecoration = undefined); </del> } else if (!this._decorations.get(decoration.marker.id)) { decoration.onDispose(() => this._decorations.delete(decoration.marker.id)); this._decorations.set(decoration.marker.id,
if (value.extensionId === extensionId) { return value.content; } <del> } catch (e) { this.logService.error(e); throw new Error('Cannot get password'); </del> <ins> } catch (parseError) { this.logService.error(parseError); // If we can't parse the decrypted value, then it's not a valid secret so we should try to delete it try { await this.credentialsService.deletePassword(fullKey, key); } catch (e) { this.logService.error(e); } throw new Error('Unable to parse decrypted password'); </ins> } }
] }, [TerminalSettingId.EnablePersistentSessions]: { <del> description: localize('terminal.integrated.enablePersistentSessions', "Persist terminal sessions for the workspace across window reloads."), </del> <ins> description: localize('terminal.integrated.enablePersistentSessions', "Persist terminal sessions/history for the workspace across window reloads."), </ins> type: 'boolean', default: true }, [TerminalSettingId.PersistentSessionReviveProcess]: { <del> markdownDescription: localize('terminal.integrated.persistentSessionReviveProcess', "When the terminal process must be shutdown (eg. on window or application close), this determines when the previous terminal session contents should be restored and processes be recreated when the workspace is next opened.nnCaveats:nn- Restoring of the process current working directory depends on whether it is supported by the shell.n- Time to persist the session during shutdown is limited, so it may be aborted when using high-latency remote connections."), </del> <ins> markdownDescription: localize('terminal.integrated.persistentSessionReviveProcess', "When the terminal process must be shutdown (eg. on window or application close), this determines when the previous terminal session contents/history should be restored and processes be recreated when the workspace is next opened.nnCaveats:nn- Restoring of the process current working directory depends on whether it is supported by the shell.n- Time to persist the session during shutdown is limited, so it may be aborted when using high-latency remote connections."), </ins> type: 'string', enum: ['onExit', 'onExitAndWindowClose', 'never'], markdownEnumDescriptions: [
"vscode-proxy-agent": "^0.12.0", "vscode-regexpp": "^3.1.0", "vscode-textmate": "7.0.1", <del> "xterm": "4.19.0", "xterm-addon-search": "0.9.0", "xterm-addon-serialize": "0.7.0", </del> <ins> "xterm": "4.20.0-beta.5", "xterm-addon-search": "0.10.0-beta.1", "xterm-addon-serialize": "0.8.0-beta.1", </ins> "xterm-addon-unicode11": "0.4.0-beta.3", <del> "xterm-addon-webgl": "0.12.0", "xterm-headless": "4.19.0", </del> <ins> "xterm-addon-webgl": "0.13.0-beta.2", "xterm-headless": "4.20.0-beta.5", </ins> "yauzl": "^2.9.2", "yazl": "^2.4.3" },
"tas-client-umd": "0.1.6", "vscode-oniguruma": "1.6.1", "vscode-textmate": "7.0.1", <del> "xterm": "4.19.0", "xterm-addon-search": "0.9.0", </del> <ins> "xterm": "4.20.0-beta.5", "xterm-addon-search": "0.10.0-beta.1", </ins> "xterm-addon-unicode11": "0.4.0-beta.3", <del> "xterm-addon-webgl": "0.12.0" </del> <ins> "xterm-addon-webgl": "0.13.0-beta.2" </ins> } }
resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-7.0.1.tgz#8118a32b02735dccd14f893b495fa5389ad7de79" integrity sha512-zQ5U/nuXAAMsh691FtV0wPz89nSkHbs+IQV8FDk+wew9BlSDhf4UmWGlWJfTR2Ti6xZv87Tj5fENzKf6Qk7aLw== <del> xterm-addon-search@0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.9.0.tgz#95278ebb818cfcf882209ae75be96e0bea5d52a5" integrity sha512-aoolI8YuHvdGw+Qjg8g2M4kst0v86GtB7WeBm4F0jNXA005/6QbWWy9eCsvnIDLJOFI5JSSrZnD6CaOkvBQYPA== </del> <ins> xterm-addon-search@0.10.0-beta.1: version "0.10.0-beta.1" resolved "https://registry.yarnpkg.com/xterm-addon-search/-/xterm-addon-search-0.10.0-beta.1.tgz#ee15b954b6f78585cd3a212ec662018263470266" integrity sha512-rp68SwoYHIQ1SY4MoILNK+0HcN8OR4hzczHOYCFdeKYZFvH/16vgqg0OJT6t6WlL1cq971rLsEDXT1SKcpoJqA== </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: version "0.12.0" resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.12.0.tgz#2fba8d31890a122adafa1c2fb945482e2ae12973" integrity sha512-3P5ihdjPnxH6Wrvqjki9UD+duoVrp1fvnO/pSpXP2F1L2GwY6TDNExgj8Yg141vMCNgQbcVqmsTLYEYZxjY92A== </del> <ins> xterm-addon-webgl@0.13.0-beta.2: version "0.13.0-beta.2" resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.13.0-beta.2.tgz#f58a7a3641ad7c8ac82dd24cfb0165656ed9ac1c" integrity sha512-98tX0BkpD402RoCO6SyikUXpzCn9/OQhlXsRmM/kRFCxMWWofStWTXzCPhN0MjIx2IdGueDjCmnShhidwihErg== </ins> <del> xterm@4.19.0: version "4.19.0" resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0.tgz#c0f9d09cd61de1d658f43ca75f992197add9ef6d" integrity sha512-c3Cp4eOVsYY5Q839dR5IejghRPpxciGmLWWaP9g+ppfMeBChMeLa1DCA+pmX/jyDZ+zxFOmlJL/82qVdayVoGQ== </del> <ins> xterm@4.20.0-beta.5: version "4.20.0-beta.5" resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.20.0-beta.5.tgz#d707b0dcb477a554135fb767b24003fced079866" integrity sha512-KBWfk9UPBKRy662DVGGTZEcW1becEjYvlyWbn2hLj9h2gy6Q4EEEEbggJh8I7SGwdFizl+apHQGhEOZmFCA70w== </ins>
import { TerminalStatus } from 'vs/workbench/contrib/terminal/browser/terminalStatusList'; import { getPartByLocation } from 'vs/workbench/browser/parts/views/viewsService'; <del> const SPLIT_PANE_MIN_SIZE = 120; </del> <ins> const enum Constants { /** * The minimum size in pixels of a split pane. */ SplitPaneMinSize = 120, /** * The number of cells the terminal gets added or removed when asked to increase or decrease * the view size. */ ResizePartCellCount = 4 } </ins> class SplitPaneContainer extends Disposable { private _height: number;
} // Ensure the size is not reduced beyond the minimum, otherwise weird things can happen <del> if (sizes[index] + amount < SPLIT_PANE_MIN_SIZE) { amount = SPLIT_PANE_MIN_SIZE - sizes[index]; } else if (sizes[indexToChange] - amount < SPLIT_PANE_MIN_SIZE) { amount = sizes[indexToChange] - SPLIT_PANE_MIN_SIZE; </del> <ins> if (sizes[index] + amount < Constants.SplitPaneMinSize) { amount = Constants.SplitPaneMinSize - sizes[index]; } else if (sizes[indexToChange] - amount < Constants.SplitPaneMinSize) { amount = sizes[indexToChange] - Constants.SplitPaneMinSize; </ins> } // Apply the size change
const isHorizontal = (direction === Direction.Left || direction === Direction.Right); const font = this._terminalService.configHelper.getFont(); // TODO: Support letter spacing and line height <del> const amount = isHorizontal ? font.charWidth : font.charHeight; if (amount) { this._splitPaneContainer.resizePane(this._activeInstanceIndex, direction, amount, getPartByLocation(this._terminalLocation)); </del> <ins> const charSize = (isHorizontal ? font.charWidth : font.charHeight); if (charSize) { this._splitPaneContainer.resizePane(this._activeInstanceIndex, direction, charSize * Constants.ResizePartCellCount, getPartByLocation(this._terminalLocation)); </ins> } }
import * as vscode from 'vscode'; /** <del> * This interface describes the shape for the references viewlet API. It consists * of a single `setInput` function which must be called with a full implementation </del> <ins> * This interface describes the shape for the references viewlet API. It consists * of a single `setInput` function which must be called with a full implementation </ins> * of the `SymbolTreeInput`-interface. To acquire this API use the default mechanics, e.g: <del> * </del> <ins> * </ins> * ```ts * // get references viewlet API <del> * const api = await vscode.extensions.getExtension<SymbolTree>('ms-vscode.references-view').activate(); * </del> <ins> * const api = await vscode.extensions.getExtension<SymbolTree>('vscode.references-view').activate(); * </ins> * // instantiate and set input which updates the view * const myInput: SymbolTreeInput<MyItems> = ... * api.setInput(myInput)
readonly location: vscode.Location; /** <del> * Resolve this input to a model that contains the actual data. When there are no result </del> <ins> * Resolve this input to a model that contains the actual data. When there are no result </ins> * than `undefined` or `null` should be returned. */ resolve(): vscode.ProviderResult<SymbolTreeModel<T>>; /** * This function is called when re-running from history. The symbols tree has tracked <del> * the original location of this input and that is now passed to this input. The </del> <ins> * the original location of this input and that is now passed to this input. The </ins> * implementation of this function should return a clone where the `location`-property * uses the provided `location` <del> * </del> <ins> * </ins> * @param location The location at which the new input should be anchored. * @returns A new input which location is anchored at the position. */
import { combinedDisposable } from 'vs/base/common/lifecycle'; import { checkProposedApiEnabled, ExtensionIdentifierSet, isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; import { DebugConfigurationProviderTriggerKind } from 'vs/workbench/contrib/debug/common/debug'; <ins> import { equalsIgnoreCase } from 'vs/base/common/strings'; </ins> export interface IExtensionRegistries { mine: ExtensionDescriptionRegistry;
const extensions: typeof vscode.extensions = { getExtension(extensionId: string, includeFromDifferentExtensionHosts?: boolean): vscode.Extension<any> | undefined { <ins> if (equalsIgnoreCase(extensionId, 'ms-vscode.references-view')) { extHostApiDeprecation.report(`The extension 'ms-vscode.references-view' has been renamed.`, extension, `Use 'vscode.references-view' instead.`); extensionId = 'vscode.references-view'; } </ins> if (!isProposedApiEnabled(extension, 'extensionsAny')) { includeFromDifferentExtensionHosts = false; }
const range = modifiedBaseRange.getInputRange(this.inputNumber); if (range && !range.isEmpty) { const blockClassNames = ['merge-editor-block']; const isHandled = model.isHandled(modifiedBaseRange).read(reader); if (isHandled) { blockClassNames.push('handled'); } if (modifiedBaseRange === activeModifiedBaseRange) { <del> blockClassNames.push('active'); </del> <ins> blockClassNames.push('focused'); </ins> } <del> blockClassNames.push('input' + this.inputNumber); </del> <ins> const inputClassName = this.inputNumber === 1 ? 'input1' : 'input2'; blockClassNames.push(inputClassName); </ins> result.push({ range: range.toInclusiveRange()!, options: { isWholeLine: true, blockClassName: blockClassNames.join(' '), <del> description: 'Base Range Projection', </del> <ins> description: 'Merge Editor', </ins> minimap: { position: MinimapPosition.Gutter, color: { id: isHandled ? handledConflictMinimapOverViewRulerColor : unhandledConflictMinimapOverViewRulerColor },