diff --git a/extensions/git/package.json b/extensions/git/package.json index 947045af064..b6fda4495ed 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -440,6 +440,11 @@ } ], "scm/title": [ + { + "command": "git.init", + "group": "navigation", + "when": "config.git.enabled && !scmProvider && gitOpenRepositoryCount == 0" + }, { "command": "git.commit", "group": "navigation", diff --git a/src/vs/workbench/parts/scm/electron-browser/scmMenus.ts b/src/vs/workbench/parts/scm/electron-browser/scmMenus.ts index c22ee5b75e8..eb68ce4b647 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmMenus.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmMenus.ts @@ -28,13 +28,18 @@ export class SCMMenus implements IDisposable { private disposables: IDisposable[] = []; constructor( - private provider: ISCMProvider, + private provider: ISCMProvider | undefined, @IContextKeyService contextKeyService: IContextKeyService, @IMenuService private menuService: IMenuService ) { this.contextKeyService = contextKeyService.createScoped(); const scmProviderKey = this.contextKeyService.createKey('scmProvider', void 0); - scmProviderKey.set(provider.contextValue); + + if (provider) { + scmProviderKey.set(provider.contextValue); + } else { + scmProviderKey.set(''); + } this.titleMenu = this.menuService.createMenu(MenuId.SCMTitle, this.contextKeyService); this.disposables.push(this.titleMenu); diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts index d4a9ac7327c..12226e6bcd2 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts @@ -479,6 +479,7 @@ class InstallAdditionalSCMProvidersAction extends Action { export class SCMViewlet extends PersistentViewsViewlet { + private menus: SCMMenus; private disposables: IDisposable[] = []; constructor( @@ -501,6 +502,9 @@ export class SCMViewlet extends PersistentViewsViewlet { ) { super(VIEWLET_ID, ViewLocation.SCM, 'scm', true, telemetryService, storageService, instantiationService, themeService, contextService, contextKeyService, contextMenuService, extensionService); + + this.menus = instantiationService.createInstance(SCMMenus, undefined); + this.menus.onDidChangeTitle(this.updateTitleArea, this, this.disposables); } private onDidAddRepository(repository: ISCMRepository): void { @@ -553,17 +557,23 @@ export class SCMViewlet extends PersistentViewsViewlet { return this.views[0].getActions(); } - return []; + return this.menus.getTitleActions(); } getSecondaryActions(): IAction[] { - let result: IAction[] = []; + let result: IAction[]; if (this.showHeaderInTitleArea() && this.views.length === 1) { result = [ ...this.views[0].getSecondaryActions(), new Separator() ]; + } else { + result = this.menus.getTitleSecondaryActions(); + + if (result.length > 0) { + result.push(new Separator()); + } } result.push(this.instantiationService.createInstance(InstallAdditionalSCMProvidersAction));