jiebi/CodeConvo huggingface dataset:
return; } <del> const result = await this._dialogService.confirm({ title: nls.localize('unusualLineTerminators.title', "Unusual Line Terminators"), message: nls.localize('unusualLineTerminators.message', "Detected unusual line terminators"), detail: nls.localize('unusualLineTerminators.detail', "The file '{0}' contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).nnIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.", basename(model.uri)), primaryButton: nls.localize('unusualLineTerminators.fix', "Remove Unusual Line Terminators"), secondaryButton: nls.localize('unusualLineTerminators.ignore', "Ignore") }); </del> <ins> if (this._isPresentingDialog) { // we're currently showing the dialog, which is async. // avoid spamming the user return; } let result: IConfirmationResult; try { this._isPresentingDialog = true; result = await this._dialogService.confirm({ title: nls.localize('unusualLineTerminators.title', "Unusual Line Terminators"), message: nls.localize('unusualLineTerminators.message', "Detected unusual line terminators"), detail: nls.localize('unusualLineTerminators.detail', "The file '{0}' contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).nnIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.", basename(model.uri)), primaryButton: nls.localize('unusualLineTerminators.fix', "Remove Unusual Line Terminators"), secondaryButton: nls.localize('unusualLineTerminators.ignore', "Ignore") }); } finally { this._isPresentingDialog = false; } </ins> if (!result.confirmed) { // this model should be ignored
contextKey.set(true); this.compositeBar.addComposite({ id: viewContainer.id, name: viewContainer.title, order: viewContainer.order, requestedIndex: viewContainer.requestedIndex }); <del> const activeComposite = this.getActiveComposite(); if (activeComposite === undefined || activeComposite.getId() === viewContainer.id) { this.compositeBar.activateComposite(viewContainer.id); </del> <ins> if (this.layoutService.isVisible(this.partId)) { const activeComposite = this.getActiveComposite(); if (activeComposite === undefined || activeComposite.getId() === viewContainer.id) { this.compositeBar.activateComposite(viewContainer.id); } </ins> } this.layoutCompositeBar();
// User data let userDataProvider; if (indexedDB) { <del> userDataProvider = new IndexedDBFileSystemProvider(logsPath.scheme, indexedDB, userDataStore, false); </del> <ins> userDataProvider = new IndexedDBFileSystemProvider(Schemas.vscodeUserData, indexedDB, userDataStore, true); </ins> this.registerDeveloperActions(<IndexedDBFileSystemProvider>userDataProvider); } else { logService.info('Using in-memory user data provider');
public static readonly layoutStatusbar = new Codicon('layout-statusbar', { fontCharacter: 'ebf5' }); public static readonly layoutMenubar = new Codicon('layout-menubar', { fontCharacter: 'ebf6' }); public static readonly layoutCentered = new Codicon('layout-centered', { fontCharacter: 'ebf7' }); <ins> public static readonly layoutSidebarRightOff = new Codicon('layout-sidebar-right-off', { fontCharacter: 'ec00' }); public static readonly layoutPanelOff = new Codicon('layout-panel-off', { fontCharacter: 'ec01' }); public static readonly layoutSidebarLeftOff = new Codicon('layout-sidebar-left-off', { fontCharacter: 'ec02' }); </ins> public static readonly target = new Codicon('target', { fontCharacter: 'ebf8' }); public static readonly indent = new Codicon('indent', { fontCharacter: 'ebf9' }); public static readonly recordSmall = new Codicon('record-small', { fontCharacter: 'ebfa' });
if (beforeCommandExecution && !this._placeholderDecoration) { this._placeholderDecoration = decoration; this._placeholderDecoration.onDispose(() => this._placeholderDecoration = undefined); <del> } else { </del> <ins> } else if (!this._decorations.get(decoration.marker.id)) { </ins> decoration.onDispose(() => this._decorations.delete(decoration.marker.id)); this._decorations.set(decoration.marker.id, {
getTargetPlatform(): Promise<TargetPlatform>; <del> scanAllExtensions(systemScanOptions: ScanOptions, userScanOptions: ScanOptions): Promise<IScannedExtension[]>; </del> <ins> scanAllExtensions(systemScanOptions: ScanOptions, userScanOptions: ScanOptions, includeExtensionsUnderDev: boolean): Promise<IScannedExtension[]>; </ins> scanSystemExtensions(scanOptions: ScanOptions): Promise<IScannedExtension[]>; scanUserExtensions(scanOptions: ScanOptions): Promise<IScannedExtension[]>; scanExtensionsUnderDevelopment(scanOptions: ScanOptions, existingExtensions: IScannedExtension[]): Promise<IScannedExtension[]>;
return this._targetPlatformPromise; } <del> async scanAllExtensions(systemScanOptions: ScanOptions, userScanOptions: ScanOptions): Promise<IScannedExtension[]> { </del> <ins> async scanAllExtensions(systemScanOptions: ScanOptions, userScanOptions: ScanOptions, includeExtensionsUnderDev: boolean): Promise<IScannedExtension[]> { </ins> const [system, user] = await Promise.all([ this.scanSystemExtensions(systemScanOptions), this.scanUserExtensions(userScanOptions), ]); <del> const development = await this.scanExtensionsUnderDevelopment(systemScanOptions, [...system, ...user]); </del> <ins> const development = includeExtensionsUnderDev ? await this.scanExtensionsUnderDevelopment(systemScanOptions, [...system, ...user]) : []; </ins> return this.dedupExtensions(system, user, development, await this.getTargetPlatform(), true); }
const userScanOptions: ScanOptions = { includeInvalid: true, profileLocation }; let scannedExtensions: IScannedExtension[] = []; if (type === null || type === ExtensionType.System) { <del> scannedExtensions.push(...await this.extensionsScannerService.scanAllExtensions({ includeInvalid: true }, userScanOptions)); </del> <ins> scannedExtensions.push(...await this.extensionsScannerService.scanAllExtensions({ includeInvalid: true }, userScanOptions, false)); </ins> } else if (type === ExtensionType.User) { scannedExtensions.push(...await this.extensionsScannerService.scanUserExtensions(userScanOptions)); }
} if (filepath.startsWith(this.inMemoryResourcePrefix)) { <del> const parts = filepath.match(/^^/([^/]+)/(.+)$/); </del> <ins> const parts = filepath.match(/^^/([^/]+)/([^/]*)/(.+)$/); </ins> if (parts) { <del> const resource = vscode.Uri.parse(parts[1] + '://' + parts[2]); </del> <ins> const resource = vscode.Uri.parse(parts[1] + '://' + (parts[2] === this.emptyAuthority ? '' : parts[2]) + '/' + parts[3]); </ins> return this.bufferSyncSupport.toVsCodeResource(resource); } }
this._buttonElements.forEach(b => b.remove()); const groups = menu.getActions({ shouldForwardArgs: true }); <ins> let isPrimary: boolean = true; </ins> for (const group of groups) { const [, actions] = group; this._actions = actions; <del> actions.forEach(action => { const button = new Button(this.container); </del> <ins> for (const action of actions) { const button = new Button(this.container, { secondary: !isPrimary }); isPrimary = false; </ins> this._buttonElements.push(button.element); this._toDispose.add(button);
} } <del> async function runCell(accessor: ServicesAccessor, context: INotebookActionContext): Promise<void> { const editorGroupService = accessor.get(IEditorGroupsService); const group = editorGroupService.activeGroup; </del> <ins> async function runCell(editorGroupsService: IEditorGroupsService, context: INotebookActionContext): Promise<void> { const group = editorGroupsService.activeGroup; </ins> if (group) { if (group.activeEditor) {
} async runWithContext(accessor: ServicesAccessor, context: INotebookCommandContext | INotebookCellToolbarActionContext): Promise<void> { <ins> const editorGroupsService = accessor.get(IEditorGroupsService); </ins> if (context.ui) { await context.notebookEditor.focusNotebookCell(context.cell, 'container', { skipReveal: true }); } <del> return runCell(accessor, context); </del> <ins> return runCell(editorGroupsService, context); </ins> } });
} async runWithContext(accessor: ServicesAccessor, context: INotebookCommandContext | INotebookCellToolbarActionContext): Promise<void> { <ins> const editorGroupsService = accessor.get(IEditorGroupsService); </ins> if (context.ui) { await context.notebookEditor.focusNotebookCell(context.cell, 'container', { skipReveal: true }); } else {
} async runWithContext(accessor: ServicesAccessor, context: INotebookCellActionContext): Promise<void> { <ins> const editorGroupsService = accessor.get(IEditorGroupsService); </ins> const idx = context.notebookEditor.getCellIndex(context.cell); const languageService = accessor.get(ILanguageService); const newFocusMode = context.cell.focusMode === CellFocusMode.Editor ? 'editor' : 'container';
"vscode-proxy-agent": "^0.12.0", "vscode-regexpp": "^3.1.0", "vscode-textmate": "7.0.1", <del> "xterm": "4.19.0-beta.47", </del> <ins> "xterm": "4.19.0-beta.49", </ins> "xterm-addon-search": "0.9.0-beta.37", "xterm-addon-serialize": "0.7.0-beta.12", "xterm-addon-unicode11": "0.4.0-beta.3", "xterm-addon-webgl": "0.12.0-beta.36", <del> "xterm-headless": "4.19.0-beta.47", </del> <ins> "xterm-headless": "4.19.0-beta.49", </ins> "yauzl": "^2.9.2", "yazl": "^2.4.3" },
"tas-client-umd": "0.1.5", "vscode-oniguruma": "1.6.1", "vscode-textmate": "7.0.1", <del> "xterm": "4.19.0-beta.47", </del> <ins> "xterm": "4.19.0-beta.49", </ins> "xterm-addon-search": "0.9.0-beta.37", "xterm-addon-unicode11": "0.4.0-beta.3", "xterm-addon-webgl": "0.12.0-beta.36"
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.12.0-beta.36.tgz#460f80829a78c979a448d5b764699af3f0366ff1" integrity sha512-sgX7OHSGZQZE5b4xtPqd/5NEcll0Z+00tnTVxKZlXf5XEENcG0tnBF4I4f+k9K3cmjE1UIUVG2yYPrqWlYCdpA== <del> xterm@4.19.0-beta.47: version "4.19.0-beta.47" resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0-beta.47.tgz#f5931201346a485e3bcb29d24e83583727e55707" integrity sha512-c8EcCSWCHnFYNdRMTnJIpYTV9J2Ze7kdB1GhTcPO2ipMEsqaP/u6Ca8rgBWwV9HeEVfe4rGRqWW2qcSy4U9hMQ== </del> <ins> xterm@4.19.0-beta.49: version "4.19.0-beta.49" resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0-beta.49.tgz#96d0d748c97a2f0cfa4c6112bc4de8b0d5d559fe" integrity sha512-qPhOeGtnB357mZOvfDckVlPDR7EDkSASQrB3aujhjgJlOiBBqcNRJcuSvF7v1DOho7xdEI9UQxiSiT5diHhMlg== </ins>
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.12.0-beta.36.tgz#460f80829a78c979a448d5b764699af3f0366ff1" integrity sha512-sgX7OHSGZQZE5b4xtPqd/5NEcll0Z+00tnTVxKZlXf5XEENcG0tnBF4I4f+k9K3cmjE1UIUVG2yYPrqWlYCdpA== <del> xterm-headless@4.19.0-beta.47: version "4.19.0-beta.47" resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-4.19.0-beta.47.tgz#9d5af8145c42b9a6241a040bb244b877c149761b" integrity sha512-chVTURPMNDEerQIsN4lIRotpXCfJsTHioZGQxDBNdktZO1gMXGvNxDjzsbsJg5ikLN5llz/HLDfXZrjCeb3elg== xterm@4.19.0-beta.47: version "4.19.0-beta.47" resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0-beta.47.tgz#f5931201346a485e3bcb29d24e83583727e55707" integrity sha512-c8EcCSWCHnFYNdRMTnJIpYTV9J2Ze7kdB1GhTcPO2ipMEsqaP/u6Ca8rgBWwV9HeEVfe4rGRqWW2qcSy4U9hMQ== </del> <ins> xterm-headless@4.19.0-beta.49: version "4.19.0-beta.49" resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-4.19.0-beta.49.tgz#8e4178620be9a9dee25a586ef992a6fc621a829a" integrity sha512-uRnHpR2pv1MJPbE3sa7XbP6x0uHubAWVMbiD26e3a5ICtWJQVVpLojkA0t4qU7CoMX85pRL1rIclg9CKY0B0xA== xterm@4.19.0-beta.49: version "4.19.0-beta.49" resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0-beta.49.tgz#96d0d748c97a2f0cfa4c6112bc4de8b0d5d559fe" integrity sha512-qPhOeGtnB357mZOvfDckVlPDR7EDkSASQrB3aujhjgJlOiBBqcNRJcuSvF7v1DOho7xdEI9UQxiSiT5diHhMlg== </ins> yallist@^4.0.0: version "4.0.0"
resolved "https://registry.yarnpkg.com/xterm-addon-webgl/-/xterm-addon-webgl-0.12.0-beta.36.tgz#460f80829a78c979a448d5b764699af3f0366ff1" integrity sha512-sgX7OHSGZQZE5b4xtPqd/5NEcll0Z+00tnTVxKZlXf5XEENcG0tnBF4I4f+k9K3cmjE1UIUVG2yYPrqWlYCdpA== <del> xterm-headless@4.19.0-beta.47: version "4.19.0-beta.47" resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-4.19.0-beta.47.tgz#9d5af8145c42b9a6241a040bb244b877c149761b" integrity sha512-chVTURPMNDEerQIsN4lIRotpXCfJsTHioZGQxDBNdktZO1gMXGvNxDjzsbsJg5ikLN5llz/HLDfXZrjCeb3elg== xterm@4.19.0-beta.47: version "4.19.0-beta.47" resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0-beta.47.tgz#f5931201346a485e3bcb29d24e83583727e55707" integrity sha512-c8EcCSWCHnFYNdRMTnJIpYTV9J2Ze7kdB1GhTcPO2ipMEsqaP/u6Ca8rgBWwV9HeEVfe4rGRqWW2qcSy4U9hMQ== </del> <ins> xterm-headless@4.19.0-beta.49: version "4.19.0-beta.49" resolved "https://registry.yarnpkg.com/xterm-headless/-/xterm-headless-4.19.0-beta.49.tgz#8e4178620be9a9dee25a586ef992a6fc621a829a" integrity sha512-uRnHpR2pv1MJPbE3sa7XbP6x0uHubAWVMbiD26e3a5ICtWJQVVpLojkA0t4qU7CoMX85pRL1rIclg9CKY0B0xA== xterm@4.19.0-beta.49: version "4.19.0-beta.49" resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.19.0-beta.49.tgz#96d0d748c97a2f0cfa4c6112bc4de8b0d5d559fe" integrity sha512-qPhOeGtnB357mZOvfDckVlPDR7EDkSASQrB3aujhjgJlOiBBqcNRJcuSvF7v1DOho7xdEI9UQxiSiT5diHhMlg== </ins> y18n@^3.2.1: version "3.2.2"
"configuration.markdown.links.openLocation.currentGroup": "Open links in the active editor group.", "configuration.markdown.links.openLocation.beside": "Open links beside the active editor.", "configuration.markdown.suggest.paths.enabled.description": "Enable/disable path suggestions for markdown links", <del> "configuration.markdown.editor.drop.enabled": "Enable/disable dropping into the markdown editor to insert shift. Requires enabling `#workbenck.experimental.editor.dropIntoEditor.enabled#`.", </del> <ins> "configuration.markdown.editor.drop.enabled": "Enable/disable dropping into the markdown editor to insert shift. Requires enabling `#workbench.experimental.editor.dropIntoEditor.enabled#`.", </ins> "configuration.markdown.experimental.validate.enabled.description": "Enable/disable all error reporting in Markdown files.", "configuration.markdown.experimental.validate.referenceLinks.enabled.description": "Validate reference links in Markdown files, e.g. `[link][ref]`.  Requires enabling `#markdown.experimental.validate.enabled#`.", "configuration.markdown.experimental.validate.headerLinks.enabled.description": "Validate links to headers in Markdown files, e.g. `[link](#header)`. Requires enabling `#markdown.experimental.validate.enabled#`.",
"configuration.markdown.links.openLocation.currentGroup": "Open links in the active editor group.", "configuration.markdown.links.openLocation.beside": "Open links beside the active editor.", "configuration.markdown.suggest.paths.enabled.description": "Enable/disable path suggestions for markdown links", <del> "configuration.markdown.editor.drop.enabled": "Enable/disable dropping into the markdown editor to insert shift. Requires enabling `#workbenck.experimental.editor.dropIntoEditor.enabled#`.", </del> <ins> "configuration.markdown.editor.drop.enabled": "Enable/disable dropping into the markdown editor to insert shift. Requires enabling `#workbench.experimental.editor.dropIntoEditor.enabled#`.", </ins> "configuration.markdown.editor.pasteLinks.enabled": "Enable/disable pasting files into a Markdown editor inserts Markdown links.", "configuration.markdown.experimental.validate.enabled.description": "Enable/disable all error reporting in Markdown files.", "configuration.markdown.experimental.validate.referenceLinks.enabled.description": "Validate reference links in Markdown files, e.g. `[link][ref]`.  Requires enabling `#markdown.experimental.validate.enabled#`.",
}); } <del> MenuRegistry.appendMenuItem(MenuId.TitleMenu, { command: { id: NavigateBackwardsAction.ID, title: NavigateBackwardsAction.LABEL, icon: Codicon.arrowLeft } }); MenuRegistry.appendMenuItem(MenuId.TitleMenu, { command: { id: NavigateForwardAction.ID, title: NavigateForwardAction.LABEL, icon: Codicon.arrowRight } }); </del> <ins> MenuRegistry.appendMenuItem(MenuId.TitleMenu, { order: 1, command: { id: NavigateBackwardsAction.ID, title: NavigateBackwardsAction.LABEL, icon: Codicon.arrowLeft } }); MenuRegistry.appendMenuItem(MenuId.TitleMenu, { order: 2, command: { id: NavigateForwardAction.ID, title: NavigateForwardAction.LABEL, icon: Codicon.arrowRight } }); </ins> // Empty Editor Group Toolbar MenuRegistry.appendMenuItem(MenuId.EmptyEditorGroup, { command: { id: UNLOCK_GROUP_COMMAND_ID, title: localize('unlockGroupAction', "Unlock Group"), icon: Codicon.lock }, group: 'navigation', order: 10, when: ActiveEditorGroupLockedContext });
// Shared before/after handling installAllHandlers(logger); <del> // skipped until translations are available https://github.com/microsoft/vscode/issues/150324 it.skip('starts with "DE" locale and verifies title and viewlets text is in German', async function () { </del> <ins> it('starts with "DE" locale and verifies title and viewlets text is in German', async function () { </ins> const app = this.app as Application; await app.workbench.extensions.openExtensionsViewlet();
// Check for invalid file name. if (names.some(folderName => !pathService.hasValidBasename(item.resource, os, folderName))) { <ins> // Escape * characters const escapedName = name.replace(/*/g, '*'); </ins> return { <del> content: nls.localize('invalidFileNameError', "The name **{0}** is not valid as a file or folder name. Please choose a different name.", trimLongName(name)), </del> <ins> content: nls.localize('invalidFileNameError', "The name **{0}** is not valid as a file or folder name. Please choose a different name.", trimLongName(escapedName)), </ins> severity: Severity.Error }; }
/** * Matches `[text](link)` */ <del> const linkPattern = /([((![[^]]*?](s*)([^s()]+?)s*)]|(?:]|[^]])*])(s*)(([^s()]|([^s()]*?))+)s*("[^"]*"|'[^']*'|([^()]*))?s*)/g; </del> <ins> const linkPattern = /([((![[^]]*?](s*)([^s()]+?)s*)]|(?:]|[^]]|][^(])*])(s*)(([^s()]|([^s()]*?))+)s*("[^"]*"|'[^']*'|([^()]*))?s*)/g; </ins> /** * Matches `[text](<link>)` */ <del> const linkPatternAngle = /([((![[^]]*?](s*)([^s()]+?)s*)]|(?:]|[^]])*])(s*<)(([^<>]|([^s()]*?))+)>s*("[^"]*"|'[^']*'|([^()]*))?s*)/g; </del> <ins> const linkPatternAngle = /([((![[^]]*?](s*)([^s()]+?)s*)]|(?:]|[^]]|][^(])*])(s*<)(([^<>]|([^s()]*?))+)>s*("[^"]*"|'[^']*'|([^()]*))?s*)/g; </ins> /**
} }); <ins> test('Should ignore texts in brackets inside link title (#150921)', async () => { { const links = await getLinksForFile('[some [inner bracket pairs] in title](<link>)'); assertLinksEqual(links, [ new vscode.Range(0, 39, 0, 43), ]); } { const links = await getLinksForFile('[some [inner bracket pairs] in title](link)'); assertLinksEqual(links, [ new vscode.Range(0, 38, 0, 42) ]); } }); </ins> test('Should handle two links without space', async () => { const links = await getLinksForFile('a ([test](test)[test2](test2)) c'); assertLinksEqual(links, [
private *getReferenceLinks(document: ITextDocument, noLinkRanges: NoLinkRanges): Iterable<MdLink> { const text = document.getText(); for (const match of text.matchAll(referenceLinkPattern)) { <del> const linkStart = document.positionAt(match.index ?? 0); </del> <ins> const linkStartOffset = (match.index ?? 0) + match[1].length; const linkStart = document.positionAt(linkStartOffset); </ins> if (noLinkRanges.contains(linkStart)) { continue; }
let reference = match[4]; if (reference === '') { // [ref][], reference = match[3]; <del> const offset = ((match.index ?? 0) + match[1].length) + 1; </del> <ins> const offset = linkStartOffset + 1; </ins> hrefStart = document.positionAt(offset); hrefEnd = document.positionAt(offset + reference.length); } else if (reference) { // [text][ref] const pre = match[2]; <del> const offset = ((match.index ?? 0) + match[1].length) + pre.length; </del> <ins> const offset = linkStartOffset + pre.length; </ins> hrefStart = document.positionAt(offset); hrefEnd = document.positionAt(offset + reference.length); } else if (match[5]) { // [ref] reference = match[5]; <del> const offset = ((match.index ?? 0) + match[1].length) + 1; </del> <ins> const offset = linkStartOffset + 1; </ins> hrefStart = document.positionAt(offset); const line = getLine(document, hrefStart.line); // See if link looks like a checkbox
new vscode.Range(0, 35, 0, 39), ]); } <ins> { const links = await getLinksForFile(joinLines( `# h`, `[[a]](http://example.com)`, )); assertLinksEqual(links, [ new vscode.Range(1, 6, 1, 24), ]); } </ins> }); test('Should handle two links without space', async () => {
import { dispose } from 'vs/base/common/lifecycle'; import { IExtension, ExtensionState, IExtensionsWorkbenchService, VIEWLET_ID, IExtensionsViewPaneContainer, IExtensionContainer, TOGGLE_IGNORE_EXTENSION_ACTION_ID, SELECT_INSTALL_VSIX_EXTENSION_COMMAND_ID, THEME_ACTIONS_GROUP, INSTALL_ACTIONS_GROUP } from 'vs/workbench/contrib/extensions/common/extensions'; import { ExtensionsConfigurationInitialContent } from 'vs/workbench/contrib/extensions/common/extensionsFileTemplate'; <del> import { IGalleryExtension, IExtensionGalleryService, ILocalExtension, InstallOptions, InstallOperation, TargetPlatformToString, ExtensionManagementErrorCode } from 'vs/platform/extensionManagement/common/extensionManagement'; </del> <ins> import { IGalleryExtension, IExtensionGalleryService, ILocalExtension, InstallOptions, InstallOperation, TargetPlatformToString, ExtensionManagementErrorCode, isTargetPlatformCompatible } from 'vs/platform/extensionManagement/common/extensionManagement'; </ins> import { IWorkbenchExtensionEnablementService, EnablementState, IExtensionManagementServerService, IExtensionManagementServer, IWorkbenchExtensionManagementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { ExtensionRecommendationReason, IExtensionIgnoredRecommendationsService, IExtensionRecommendationsService } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; import { areSameExtensions, getExtensionId } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
@IExtensionsWorkbenchService private readonly extensionsWorkbenchService: IExtensionsWorkbenchService, @IExtensionManagementServerService protected readonly extensionManagementServerService: IExtensionManagementServerService, @IExtensionManifestPropertiesService private readonly extensionManifestPropertiesService: IExtensionManifestPropertiesService, <ins> @IExtensionGalleryService private readonly extensionGalleryService: IExtensionGalleryService, </ins> ) { super(id, InstallInOtherServerAction.INSTALL_LABEL, InstallInOtherServerAction.Class, false); this.update();