diff --git a/extensions/git/package.json b/extensions/git/package.json index 5f2acfa890d..d3b0cd4aeb7 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -25,7 +25,6 @@ "timeline", "contribMergeEditorMenus", "scmInputBoxActionButton", - "scmInputBoxValueProvider", "contribSourceControlInputBoxMenu" ], "categories": [ diff --git a/extensions/git/tsconfig.json b/extensions/git/tsconfig.json index 6cfce2b8fc2..022beed0bcb 100644 --- a/extensions/git/tsconfig.json +++ b/extensions/git/tsconfig.json @@ -14,7 +14,6 @@ "../../src/vscode-dts/vscode.proposed.scmActionButton.d.ts", "../../src/vscode-dts/vscode.proposed.scmHistoryProvider.d.ts", "../../src/vscode-dts/vscode.proposed.scmInputBoxActionButton.d.ts", - "../../src/vscode-dts/vscode.proposed.scmInputBoxValueProvider.d.ts", "../../src/vscode-dts/vscode.proposed.scmSelectedProvider.d.ts", "../../src/vscode-dts/vscode.proposed.scmValidation.d.ts", "../../src/vscode-dts/vscode.proposed.tabInputTextMerge.d.ts", diff --git a/src/vs/workbench/api/browser/mainThreadSCM.ts b/src/vs/workbench/api/browser/mainThreadSCM.ts index 2158231e16f..25ec522a3a1 100644 --- a/src/vs/workbench/api/browser/mainThreadSCM.ts +++ b/src/vs/workbench/api/browser/mainThreadSCM.ts @@ -5,8 +5,8 @@ import { URI, UriComponents } from 'vs/base/common/uri'; import { Event, Emitter } from 'vs/base/common/event'; -import { IDisposable, DisposableStore, combinedDisposable, dispose, DisposableMap } from 'vs/base/common/lifecycle'; -import { ISCMService, ISCMRepository, ISCMProvider, ISCMResource, ISCMResourceGroup, ISCMResourceDecorations, IInputValidation, ISCMViewService, InputValidationType, ISCMActionButtonDescriptor, ISCMInputValueProvider, ISCMInputValueProviderContext } from 'vs/workbench/contrib/scm/common/scm'; +import { IDisposable, DisposableStore, combinedDisposable, dispose } from 'vs/base/common/lifecycle'; +import { ISCMService, ISCMRepository, ISCMProvider, ISCMResource, ISCMResourceGroup, ISCMResourceDecorations, IInputValidation, ISCMViewService, InputValidationType, ISCMActionButtonDescriptor } from 'vs/workbench/contrib/scm/common/scm'; import { ExtHostContext, MainThreadSCMShape, ExtHostSCMShape, SCMProviderFeatures, SCMRawResourceSplices, SCMGroupFeatures, MainContext, SCMHistoryItemGroupDto, SCMInputActionButtonDto } from '../common/extHost.protocol'; import { Command } from 'vs/editor/common/languages'; import { extHostNamedCustomer, IExtHostContext } from 'vs/workbench/services/extensions/common/extHostCustomers'; @@ -452,27 +452,12 @@ class MainThreadSCMProvider implements ISCMProvider, QuickDiffProvider { } } -class MainThreadSCMInputBoxValueProvider implements ISCMInputValueProvider { - - constructor( - private readonly proxy: ExtHostSCMShape, - private readonly handle: number, - readonly label: string, - readonly icon?: URI | ThemeIcon | { light: URI; dark: URI }) { } - - provideValue(rootUri: URI, context: ISCMInputValueProviderContext[], token: CancellationToken): Promise { - return this.proxy.$provideInputBoxValue(this.handle, rootUri, context, token); - } - -} - @extHostNamedCustomer(MainContext.MainThreadSCM) export class MainThreadSCM implements MainThreadSCMShape { private readonly _proxy: ExtHostSCMShape; private _repositories = new Map(); private _repositoryDisposables = new Map(); - private _inputBoxValueProviders = new DisposableMap(); private readonly _disposables = new DisposableStore(); constructor( @@ -493,7 +478,6 @@ export class MainThreadSCM implements MainThreadSCMShape { dispose(this._repositoryDisposables.values()); this._repositoryDisposables.clear(); - this._inputBoxValueProviders.dispose(); this._disposables.dispose(); } @@ -543,23 +527,6 @@ export class MainThreadSCM implements MainThreadSCMShape { this._repositories.delete(handle); } - $registerSourceControlInputBoxValueProvider(handle: number, sourceControlId: string, label: string, icon?: UriComponents | { light: UriComponents; dark: UriComponents } | ThemeIcon): void { - const provider = new MainThreadSCMInputBoxValueProvider(this._proxy, handle, label, getIconFromIconDto(icon)); - const disposable = this.scmService.registerSCMInputValueProvider(sourceControlId, provider); - - this._inputBoxValueProviders.set(handle, disposable); - } - - $unregisterSourceControlInputBoxValueProvider(handle: number): void { - const provider = this._inputBoxValueProviders.get(handle); - if (!provider) { - return; - } - - provider.dispose(); - this._inputBoxValueProviders.deleteAndDispose(handle); - } - $registerGroups(sourceControlHandle: number, groups: [number /*handle*/, string /*id*/, string /*label*/, SCMGroupFeatures][], splices: SCMRawResourceSplices[]): void { const repository = this._repositories.get(sourceControlHandle); diff --git a/src/vs/workbench/api/common/extHost.api.impl.ts b/src/vs/workbench/api/common/extHost.api.impl.ts index 569d44cdfe4..b3546f88c2b 100644 --- a/src/vs/workbench/api/common/extHost.api.impl.ts +++ b/src/vs/workbench/api/common/extHost.api.impl.ts @@ -1170,10 +1170,6 @@ export function createApiFactoryAndRegisterActors(accessor: ServicesAccessor): I }, createSourceControl(id: string, label: string, rootUri?: vscode.Uri) { return extHostSCM.createSourceControl(extension, id, label, rootUri); - }, - registerSourceControlInputBoxValueProvider(sourceControlId: string, provider: vscode.SourceControlInputBoxValueProvider): vscode.Disposable { - checkProposedApiEnabled(extension, 'scmInputBoxValueProvider'); - return extHostSCM.registerSourceControlInputBoxValueProvider(extension, sourceControlId, provider); } }; diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index 00a746427f1..391234eac91 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -1502,9 +1502,6 @@ export interface MainThreadSCMShape extends IDisposable { $setValidationProviderIsEnabled(sourceControlHandle: number, enabled: boolean): void; $onDidChangeHistoryProviderCurrentHistoryItemGroup(sourceControlHandle: number, historyItemGroup: SCMHistoryItemGroupDto | undefined): void; - - $registerSourceControlInputBoxValueProvider(inputBoxValueProviderHandle: number, sourceControlId: string, label: string, icon?: ThemeIcon | UriComponents | { light: UriComponents; dark: UriComponents }): void; - $unregisterSourceControlInputBoxValueProvider(inputBoxValueProviderHandle: number): void; } export interface MainThreadQuickDiffShape extends IDisposable { @@ -2219,7 +2216,6 @@ export interface ExtHostTerminalServiceShape { export interface ExtHostSCMShape { $provideOriginalResource(sourceControlHandle: number, uri: UriComponents, token: CancellationToken): Promise; - $provideInputBoxValue(inputBoxValueProviderHandle: number, rootUri: UriComponents, context: any, token: CancellationToken): Promise; $onInputBoxValueChange(sourceControlHandle: number, value: string): void; $executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number, preserveFocus: boolean): Promise; $validateInput(sourceControlHandle: number, value: string, cursorPosition: number): Promise<[string | IMarkdownString, number] | undefined>; diff --git a/src/vs/workbench/api/common/extHostSCM.ts b/src/vs/workbench/api/common/extHostSCM.ts index ea744a44aa5..e51541a30fa 100644 --- a/src/vs/workbench/api/common/extHostSCM.ts +++ b/src/vs/workbench/api/common/extHostSCM.ts @@ -8,7 +8,7 @@ import { URI, UriComponents } from 'vs/base/common/uri'; import { Event, Emitter } from 'vs/base/common/event'; import { debounce } from 'vs/base/common/decorators'; -import { DisposableStore, IDisposable, MutableDisposable, toDisposable } from 'vs/base/common/lifecycle'; +import { DisposableStore, IDisposable, MutableDisposable } from 'vs/base/common/lifecycle'; import { asPromise } from 'vs/base/common/async'; import { ExtHostCommands } from 'vs/workbench/api/common/extHostCommands'; import { MainContext, MainThreadSCMShape, SCMRawResource, SCMRawResourceSplice, SCMRawResourceSplices, IMainContext, ExtHostSCMShape, ICommandDto, MainThreadTelemetryShape, SCMGroupFeatures, SCMHistoryItemDto, SCMHistoryItemChangeDto, SCMHistoryItemGroupDto } from './extHost.protocol'; @@ -84,19 +84,6 @@ function getHistoryItemIconDto(historyItem: vscode.SourceControlHistoryItem): Ur } } -function getSourceControlInputBoxValueProviderIcon(provider: vscode.SourceControlInputBoxValueProvider): UriComponents | { light: UriComponents; dark: UriComponents } | ThemeIcon | undefined { - if (!provider.icon) { - return undefined; - } else if (URI.isUri(provider.icon)) { - return provider.icon; - } else if (ThemeIcon.isThemeIcon(provider.icon)) { - return provider.icon; - } else { - const icon = provider.icon as { light: URI; dark: URI }; - return { light: icon.light, dark: icon.dark }; - } -} - function compareResourceThemableDecorations(a: vscode.SourceControlResourceThemableDecorations, b: vscode.SourceControlResourceThemableDecorations): number { if (!a.iconPath && !b.iconPath) { return 0; @@ -808,7 +795,6 @@ class ExtHostSourceControl implements vscode.SourceControl { export class ExtHostSCM implements ExtHostSCMShape { private static _handlePool: number = 0; - private static _inputBoxValueProviderHandlePool: number = 0; private _proxy: MainThreadSCMShape; private readonly _telemetry: MainThreadTelemetryShape; @@ -818,8 +804,6 @@ export class ExtHostSCM implements ExtHostSCMShape { private readonly _onDidChangeActiveProvider = new Emitter(); get onDidChangeActiveProvider(): Event { return this._onDidChangeActiveProvider.event; } - private _inputBoxValueProviders: Map = new Map(); - private _selectedSourceControlHandle: number | undefined; constructor( @@ -894,28 +878,6 @@ export class ExtHostSCM implements ExtHostSCMShape { return sourceControl; } - registerSourceControlInputBoxValueProvider(extension: IExtensionDescription, sourceControlId: string, provider: vscode.SourceControlInputBoxValueProvider): vscode.Disposable { - this.logService.trace('ExtHostSCM#registerSourceControlInputBoxValueProvider', extension.identifier.value, provider.label); - - const handle = ExtHostSCM._inputBoxValueProviderHandlePool++; - this._inputBoxValueProviders.set(handle, provider); - this._proxy.$registerSourceControlInputBoxValueProvider(handle, sourceControlId, provider.label, getSourceControlInputBoxValueProviderIcon(provider)); - - return toDisposable(() => { - this._proxy.$unregisterSourceControlInputBoxValueProvider(handle); - this._inputBoxValueProviders.delete(handle); - }); - } - - async $provideInputBoxValue(inputBoxValueProviderHandle: number, rootUri: UriComponents, context: vscode.SourceControlInputBoxValueProviderContext[], token: CancellationToken): Promise { - const provider = this._inputBoxValueProviders.get(inputBoxValueProviderHandle); - if (!provider) { - return undefined; - } - - return await provider.provideValue(URI.revive(rootUri), context, token) ?? undefined; - } - // Deprecated getLastInputBox(extension: IExtensionDescription): ExtHostSCMInputBox | undefined { this.logService.trace('ExtHostSCM#getLastInputBox', extension.identifier.value); diff --git a/src/vs/workbench/contrib/scm/browser/scmViewPane.ts b/src/vs/workbench/contrib/scm/browser/scmViewPane.ts index 2ea9008e4ab..bad5fc40df6 100644 --- a/src/vs/workbench/contrib/scm/browser/scmViewPane.ts +++ b/src/vs/workbench/contrib/scm/browser/scmViewPane.ts @@ -2095,7 +2095,6 @@ class SCMInputWidget { this.repositoryDisposables.add(Event.filter(this.toolbarContextKeyService.onDidChangeContext, e => e.affectsSome(ctxKeys))(onDidChangeActionButton, this)); this.repositoryDisposables.add(input.onDidChangeActionButton(onDidChangeActionButton, this)); - this.repositoryDisposables.add(this.scmService.onDidChangeInputValueProviders(onDidChangeActionButton, this)); this.repositoryDisposables.add(Event.filter(this.configurationService.onDidChangeConfiguration, e => e.affectsConfiguration('scm.showInputActionButton'))(onDidChangeActionButton, this)); onDidChangeActionButton(); @@ -2170,7 +2169,6 @@ class SCMInputWidget { @IKeybindingService private keybindingService: IKeybindingService, @IConfigurationService private configurationService: IConfigurationService, @IInstantiationService private readonly instantiationService: IInstantiationService, - @ISCMService private readonly scmService: ISCMService, @ISCMViewService private readonly scmViewService: ISCMViewService, @IContextViewService private readonly contextViewService: IContextViewService, @IOpenerService private readonly openerService: IOpenerService, diff --git a/src/vs/workbench/contrib/scm/common/scm.ts b/src/vs/workbench/contrib/scm/common/scm.ts index 9bf065c0f68..7040ee2df1f 100644 --- a/src/vs/workbench/contrib/scm/common/scm.ts +++ b/src/vs/workbench/contrib/scm/common/scm.ts @@ -14,7 +14,6 @@ import { ThemeIcon } from 'vs/base/common/themables'; import { IMarkdownString } from 'vs/base/common/htmlContent'; import { ResourceTree } from 'vs/base/common/resourceTree'; import { ISCMHistoryProvider, ISCMHistoryProviderMenus } from 'vs/workbench/contrib/scm/common/history'; -import { CancellationToken } from 'vs/base/common/cancellation'; export const VIEWLET_ID = 'workbench.view.scm'; export const VIEW_PANE_ID = 'workbench.scm'; @@ -87,12 +86,6 @@ export interface ISCMInputValueProviderContext { readonly resources: readonly URI[]; } -export interface ISCMInputValueProvider { - readonly label: string; - readonly icon?: URI | { light: URI; dark: URI } | ThemeIcon; - provideValue(rootUri: URI, context: ISCMInputValueProviderContext[], token: CancellationToken): Promise; -} - export const enum InputValidationType { Error = 0, Warning = 1, @@ -185,11 +178,6 @@ export interface ISCMService { registerSCMProvider(provider: ISCMProvider): ISCMRepository; getRepository(id: string): ISCMRepository | undefined; - - readonly onDidChangeInputValueProviders: Event; - - getDefaultInputValueProvider(repository: ISCMRepository): ISCMInputValueProvider | undefined; - registerSCMInputValueProvider(sourceControlId: string, provider: ISCMInputValueProvider): IDisposable; } export interface ISCMTitleMenu { diff --git a/src/vs/workbench/contrib/scm/common/scmService.ts b/src/vs/workbench/contrib/scm/common/scmService.ts index e3d7db2a168..2bc030d479c 100644 --- a/src/vs/workbench/contrib/scm/common/scmService.ts +++ b/src/vs/workbench/contrib/scm/common/scmService.ts @@ -5,7 +5,7 @@ import { DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { Event, Emitter } from 'vs/base/common/event'; -import { ISCMService, ISCMProvider, ISCMInput, ISCMRepository, IInputValidator, ISCMInputChangeEvent, SCMInputChangeReason, InputValidationType, IInputValidation, ISCMActionButtonDescriptor, ISCMInputValueProvider } from './scm'; +import { ISCMService, ISCMProvider, ISCMInput, ISCMRepository, IInputValidator, ISCMInputChangeEvent, SCMInputChangeReason, InputValidationType, IInputValidation, ISCMActionButtonDescriptor } from './scm'; import { ILogService } from 'vs/platform/log/common/log'; import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; @@ -365,17 +365,12 @@ export class SCMService implements ISCMService { private inputHistory: SCMInputHistory; private providerCount: IContextKey; - private readonly _inputValueProviders = new Map>(); - private readonly _onDidAddProvider = new Emitter(); readonly onDidAddRepository: Event = this._onDidAddProvider.event; private readonly _onDidRemoveProvider = new Emitter(); readonly onDidRemoveRepository: Event = this._onDidRemoveProvider.event; - private readonly _onDidChangeInputValueProviders = new Emitter(); - readonly onDidChangeInputValueProviders: Event = this._onDidChangeInputValueProviders.event; - constructor( @ILogService private readonly logService: ILogService, @IWorkspaceContextService workspaceContextService: IWorkspaceContextService, @@ -411,38 +406,4 @@ export class SCMService implements ISCMService { return this._repositories.get(id); } - registerSCMInputValueProvider(sourceControlId: string, provider: ISCMInputValueProvider): IDisposable { - const providers = this._inputValueProviders.get(sourceControlId) ?? new Set(); - this._inputValueProviders.set(sourceControlId, providers.add(provider)); - - this._onDidChangeInputValueProviders.fire(); - - return toDisposable(() => { - const providers = this._inputValueProviders.get(sourceControlId)!; - - providers.delete(provider); - this._inputValueProviders.set(sourceControlId, providers); - - if (providers.size === 0) { - this._inputValueProviders.delete(sourceControlId); - } - - this._onDidChangeInputValueProviders.fire(); - }); - } - - getDefaultInputValueProvider(repository: ISCMRepository): ISCMInputValueProvider | undefined { - if (!repository.provider.rootUri) { - return undefined; - } - - const sourceControlId = repository.provider.contextValue; - const providers = this._inputValueProviders.get(sourceControlId) ?? new Set(); - if (providers.size === 0) { - return undefined; - } - - return Iterable.first(providers); - } - } diff --git a/src/vs/workbench/services/extensions/common/extensionsApiProposals.ts b/src/vs/workbench/services/extensions/common/extensionsApiProposals.ts index 9f0da9dbb1e..e45c2d9a5ec 100644 --- a/src/vs/workbench/services/extensions/common/extensionsApiProposals.ts +++ b/src/vs/workbench/services/extensions/common/extensionsApiProposals.ts @@ -83,7 +83,6 @@ export const allApiProposals = Object.freeze({ scmActionButton: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmActionButton.d.ts', scmHistoryProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmHistoryProvider.d.ts', scmInputBoxActionButton: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmInputBoxActionButton.d.ts', - scmInputBoxValueProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmInputBoxValueProvider.d.ts', scmSelectedProvider: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmSelectedProvider.d.ts', scmTextDocument: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmTextDocument.d.ts', scmValidation: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.scmValidation.d.ts', diff --git a/src/vscode-dts/vscode.proposed.scmInputBoxValueProvider.d.ts b/src/vscode-dts/vscode.proposed.scmInputBoxValueProvider.d.ts deleted file mode 100644 index 9b44dee665a..00000000000 --- a/src/vscode-dts/vscode.proposed.scmInputBoxValueProvider.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -declare module 'vscode' { - // https://github.com/microsoft/vscode/issues/195474 - - export namespace scm { - export function registerSourceControlInputBoxValueProvider(sourceControlId: string, provider: SourceControlInputBoxValueProvider): Disposable; - } - - export interface SourceControlInputBoxValueProviderContext { - readonly resourceGroupId: string; - readonly resources: readonly Uri[]; - } - - export interface SourceControlInputBoxValueProvider { - readonly label: string; - readonly icon?: Uri | { light: Uri; dark: Uri } | ThemeIcon; - - provideValue(rootUri: Uri, context: SourceControlInputBoxValueProviderContext[], token: CancellationToken): ProviderResult; - } - -}