diff --git a/extensions/git/src/actionButton.ts b/extensions/git/src/actionButton.ts index 311e9dc84d5..84c75067e3e 100644 --- a/extensions/git/src/actionButton.ts +++ b/extensions/git/src/actionButton.ts @@ -50,6 +50,8 @@ export class ActionButtonCommand { repository.onDidRunGitStatus(this.onDidRunGitStatus, this, this.disposables); repository.onDidChangeOperations(this.onDidChangeOperations, this, this.disposables); + this.disposables.push(postCommitCommandsProviderRegistry.onDidChangePostCommitCommandsProviders(() => this._onDidChange.fire())); + const root = Uri.file(repository.root); this.disposables.push(workspace.onDidChangeConfiguration(e => { if (e.affectsConfiguration('git.enableSmartCommit', root) || diff --git a/extensions/git/src/model.ts b/extensions/git/src/model.ts index 505ceeb16c0..5fc1b4d06ac 100644 --- a/extensions/git/src/model.ts +++ b/extensions/git/src/model.ts @@ -108,6 +108,9 @@ export class Model implements IRemoteSourcePublisherRegistry, IPostCommitCommand private postCommitCommandsProviders = new Set(); + private _onDidChangePostCommitCommandsProviders = new EventEmitter(); + readonly onDidChangePostCommitCommandsProviders = this._onDidChangePostCommitCommandsProviders.event; + private showRepoOnHomeDriveRootWarning = true; private pushErrorHandlers = new Set(); @@ -591,8 +594,12 @@ export class Model implements IRemoteSourcePublisherRegistry, IPostCommitCommand registerPostCommitCommandsProvider(provider: PostCommitCommandsProvider): Disposable { this.postCommitCommandsProviders.add(provider); + this._onDidChangePostCommitCommandsProviders.fire(); - return toDisposable(() => this.postCommitCommandsProviders.delete(provider)); + return toDisposable(() => { + this.postCommitCommandsProviders.delete(provider); + this._onDidChangePostCommitCommandsProviders.fire(); + }); } getPostCommitCommandsProviders(): PostCommitCommandsProvider[] { diff --git a/extensions/git/src/postCommitCommands.ts b/extensions/git/src/postCommitCommands.ts index 2fd6dc5676b..85d1689011a 100644 --- a/extensions/git/src/postCommitCommands.ts +++ b/extensions/git/src/postCommitCommands.ts @@ -4,10 +4,12 @@ *--------------------------------------------------------------------------------------------*/ import * as nls from 'vscode-nls'; -import { Command, Disposable } from 'vscode'; +import { Command, Disposable, Event } from 'vscode'; import { PostCommitCommandsProvider } from './api/git'; export interface IPostCommitCommandsProviderRegistry { + readonly onDidChangePostCommitCommandsProviders: Event; + getPostCommitCommandsProviders(): PostCommitCommandsProvider[]; registerPostCommitCommandsProvider(provider: PostCommitCommandsProvider): Disposable; }