diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index a0ebb292a510cafc4ff289c135fba2c432acb159..0c7ab9fa573f27e19e550ddb264696190ff8fe58 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -385,6 +385,7 @@ export class Repository implements Disposable { const label = `${path.basename(repository.root)} (Git)`; this._sourceControl = scm.createSourceControl('git', label); + this._sourceControl.inputBox.placeholder = localize('commitMessage', "Message (press {0} to commit)", process.platform === 'darwin' ? 'Cmd+Enter' : 'Ctrl+Enter'); this._sourceControl.acceptInputCommand = { command: 'git.commitWithInput', title: localize('commit', "Commit"), arguments: [this._sourceControl] }; this._sourceControl.quickDiffProvider = this; this.disposables.push(this._sourceControl); diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index a7708f6555b6315f0a1843812394e1077eebf07f..6994c45332496a2594c397e48a3c8feb6149ddc4 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -5326,6 +5326,11 @@ declare module 'vscode' { * Setter and getter for the contents of the input box. */ value: string; + + /** + * A string to show as place holder in the input box to guide the user. + */ + placeholder: string; } interface QuickDiffProvider { diff --git a/src/vs/workbench/api/electron-browser/mainThreadSCM.ts b/src/vs/workbench/api/electron-browser/mainThreadSCM.ts index 46b56f0e89696317a163ffcf44fc6eee86e143ae..a4ed7afc0433a81222e3d8d940dcdd21b0925652 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadSCM.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadSCM.ts @@ -343,4 +343,14 @@ export class MainThreadSCM implements MainThreadSCMShape { repository.input.value = value; } + + $setInputBoxPlaceholder(sourceControlHandle: number, placeholder: string): void { + const repository = this._repositories[sourceControlHandle]; + + if (!repository) { + return; + } + + repository.input.placeholder = placeholder; + } } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 3291bc7ef5ff5efbc384e4887c92b9863a0aae8c..f4c31081d8fb82ae94ffc99e3a432980d7ef275d 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -348,6 +348,7 @@ export interface MainThreadSCMShape extends IDisposable { $unregisterGroup(sourceControlHandle: number, handle: number): void; $setInputBoxValue(sourceControlHandle: number, value: string): void; + $setInputBoxPlaceholder(sourceControlHandle: number, placeholder: string): void; } export type DebugSessionUUID = string; diff --git a/src/vs/workbench/api/node/extHostSCM.ts b/src/vs/workbench/api/node/extHostSCM.ts index 60b4aee43f9e461615cdde58b04c3b7dc1c75c03..cafa3986f1cf8f20c4e40b41b99df7c8f8a06df6 100644 --- a/src/vs/workbench/api/node/extHostSCM.ts +++ b/src/vs/workbench/api/node/extHostSCM.ts @@ -43,6 +43,17 @@ export class ExtHostSCMInputBox { return this._onDidChange.event; } + private _placeholder: string = ''; + + get placeholder(): string { + return this._placeholder; + } + + set placeholder(placeholder: string) { + this._proxy.$setInputBoxPlaceholder(this._sourceControlHandle, placeholder); + this._placeholder = placeholder; + } + constructor(private _proxy: MainThreadSCMShape, private _sourceControlHandle: number) { // noop } diff --git a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts index b5123eca628d656c4a1bee359a2c0ee7a6642c80..c23e25a0802a0cca28de277498927020f31717a8 100644 --- a/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts +++ b/src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts @@ -48,7 +48,6 @@ import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; import { ViewSizing } from 'vs/base/browser/ui/splitview/splitview'; import { IExtensionsViewlet, VIEWLET_ID as EXTENSIONS_VIEWLET_ID } from 'vs/workbench/parts/extensions/common/extensions'; import { InputBox } from 'vs/base/browser/ui/inputbox/inputBox'; -import * as platform from 'vs/base/common/platform'; import { domEvent } from 'vs/base/browser/event'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; @@ -307,15 +306,16 @@ class SourceControlView extends CollapsibleView { this.inputBoxContainer = append(container, $('.scm-editor')); this.inputBox = new InputBox(this.inputBoxContainer, this.contextViewService, { - placeholder: localize('commitMessage', "Message (press {0} to commit)", platform.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'), flexibleHeight: true }); this.disposables.push(attachInputBoxStyler(this.inputBox, this.themeService)); this.disposables.push(this.inputBox); this.inputBox.value = this.repository.input.value; + this.inputBox.setPlaceHolder(this.repository.input.placeholder); this.inputBox.onDidChange(value => this.repository.input.value = value, null, this.disposables); this.repository.input.onDidChange(value => this.inputBox.value = value, null, this.disposables); + this.repository.input.onDidChangePlaceholder(placeholder => this.inputBox.setPlaceHolder(placeholder), null, this.disposables); this.disposables.push(this.inputBox.onDidHeightChange(() => this.layoutBody())); chain(domEvent(this.inputBox.inputElement, 'keydown')) diff --git a/src/vs/workbench/services/scm/common/scm.ts b/src/vs/workbench/services/scm/common/scm.ts index 902c80182bd5d600ae9f09ef8dcca319c90efad5..166d540cd5b5846f31060232f4acf1ae305442f7 100644 --- a/src/vs/workbench/services/scm/common/scm.ts +++ b/src/vs/workbench/services/scm/common/scm.ts @@ -58,6 +58,8 @@ export interface ISCMProvider extends IDisposable { export interface ISCMInput { value: string; readonly onDidChange: Event; + placeholder: string; + readonly onDidChangePlaceholder: Event; } export interface ISCMRepository extends IDisposable { diff --git a/src/vs/workbench/services/scm/common/scmService.ts b/src/vs/workbench/services/scm/common/scmService.ts index d88e80f3f4eb66017a4771aadb245362a51fc15f..139a988b7708967b1a59b71b723b82343f94d759 100644 --- a/src/vs/workbench/services/scm/common/scmService.ts +++ b/src/vs/workbench/services/scm/common/scmService.ts @@ -24,6 +24,20 @@ class SCMInput implements ISCMInput { private _onDidChange = new Emitter(); get onDidChange(): Event { return this._onDidChange.event; } + + private _placeholder = ''; + + get placeholder(): string { + return this._placeholder; + } + + set placeholder(placeholder: string) { + this._placeholder = placeholder; + this._onDidChangePlaceholder.fire(placeholder); + } + + private _onDidChangePlaceholder = new Emitter(); + get onDidChangePlaceholder(): Event { return this._onDidChangePlaceholder.event; } } class SCMRepository implements ISCMRepository {