diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 692348f1154d0593131e38e856233e6abc24bec1..fae45d555b4458450d3b875fb81234f36cd35e4a 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -4515,6 +4515,211 @@ declare module 'vscode' { export function setLanguageConfiguration(language: string, configuration: LanguageConfiguration): Disposable; } + /** + * The theme-aware decorations for a [SCM resource](#SCMResource). + */ + export interface SCMResourceThemableDecorations { + + /** + * The icon path for a specific [SCM resource](#SCMResource). + */ + readonly iconPath?: string | Uri; + } + + /** + * The decorations for a [SCM resource](#SCMResource). Can be specified + * for light and dark themes, independently. + */ + export interface SCMResourceDecorations extends SCMResourceThemableDecorations { + + /** + * Whether the [SCM resource](#SCMResource) should be striked-through + * in the UI. + */ + readonly strikeThrough?: boolean; + + /** + * The light theme decorations. + */ + readonly light?: SCMResourceThemableDecorations; + + /** + * The dark theme decorations. + */ + readonly dark?: SCMResourceThemableDecorations; + } + + /** + * An SCM resource represents the state of an underlying workspace + * resource within a certain SCM provider state. + */ + export interface SCMResource { + + /** + * The [uri](#Uri) of this SCM resource. This uri should uniquely + * identify this SCM resource. Its value should be semantically + * related to your [SCM provider](#SCMProvider). + * + * For example, consider file `/foo/bar` to be modified. An SCM + * resource which would represent such state could have the + * following properties: + * + * - `uri = 'git:workingtree/A'` + * - `sourceUri = 'file:///foo/bar'` + */ + readonly uri: Uri; + + /** + * The [uri](#Uri) of the underlying resource inside the workspace. + */ + readonly sourceUri: Uri; + + /** + * The [decorations](#SCMResourceDecorations) for this SCM resource. + */ + readonly decorations?: SCMResourceDecorations; + } + + /** + * An SCM resource group is a collection of [SCM resources](#SCMResource). + */ + export interface SCMResourceGroup { + + /** + * The [uri](#Uri) of this SCM resource group. This uri should + * uniquely identify this SCM resource group. Its value should be + * semantically related to your [SCM provider](#SCMProvider). + * + * For example, consider a Working Tree resource group. An SCM + * resource group which would represent such state could have the + * following properties: + * + * - `uri = 'git:workingtree'` + * - `label = 'Working Tree'` + */ + readonly uri: Uri; + + /** + * The UI label of the SCM resource group. + */ + readonly label: string; + + /** + * The context key of the SCM resource group, which will be used to populate + * the value of the `scmResourceGroup` context key. + */ + readonly contextKey?: string; + + /** + * The collection of [SCM resources](#SCMResource) within the SCM resource group. + */ + readonly resources: SCMResource[]; + } + + /** + * An SCM provider is able to provide [SCM resources](#SCMResource) to the editor, + * notify of changes in them and interact with the editor in several SCM related ways. + */ + export interface SCMProvider { + + /** + * A human-readable label for the name of the SCM Provider. + */ + readonly label: string; + + /** + * The context key of the SCM provider, which will be used to populate + * the value of the `scmProvider` context key. + */ + readonly contextKey?: string; + + /** + * The list of SCM resource groups. + */ + readonly resources: SCMResourceGroup[]; + + /** + * A count of resources, used in the UI as the label for the SCM changes count. + */ + readonly count?: number; + + /** + * A state identifier, which will be used to populate the value of the + * `scmProviderState` context key. + */ + readonly stateContextKey?: string; + + /** + * An [event](#Event) which should fire when any of the following attributes + * have changed: + * - [resources](#SCMProvider.resources) + * - [count](#SCMProvider.count) + * - [state](#SCMProvider.state) + */ + readonly onDidChange?: Event; + + /** + * Provide a [uri](#Uri) to the original resource of any given resource uri. + * + * @param uri The uri of the resource open in a text editor. + * @param token A cancellation token. + * @return A thenable that resolves to uri of the matching original resource. + */ + provideOriginalResource?(uri: Uri, token: CancellationToken): ProviderResult; + + /** + * Open a specific [SCM resource](#SCMResource). Called when SCM resources + * are clicked in the UI, for example. + * + * @param resource The [SCM resource](#SCMResource) which should be open. + * @param token A cancellation token. + * @return A thenable which resolves when the resource is open. + */ + open?(resource: SCMResource): void; + } + + /** + * Represents the input box in the SCM view. + */ + export interface SCMInputBox { + + /** + * Setter and getter for the contents of the input box. + */ + value: string; + } + + export namespace scm { + + /** + * The currently active [SCM provider](#SCMProvider). + */ + export let activeProvider: SCMProvider | undefined; + + /** + * An [event](#Event) which fires when the active [SCM provider](#SCMProvider) + * has changed. + */ + export const onDidChangeActiveProvider: Event; + + /** + * The [input box](#SCMInputBox) in the SCM view. + */ + export const inputBox: SCMInputBox; + + /** + * An [event](#Event) which fires when the user has accepted the changes. + */ + export const onDidAcceptInputValue: Event; + + /** + * Registers an [SCM provider](#SCMProvider). + * + * @return A disposable which unregisters the provider. + */ + export function registerSCMProvider(provider: SCMProvider): Disposable; + } + /** * Namespace for dealing with installed extensions. Extensions are represented * by an [extension](#Extension)-interface which allows to reflect on them. diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 7b93d3ff683e0b551abecaac5f09a85b0288235f..a0dc373f265813e3ae48f4669f1bd0ab90f07412 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -584,211 +584,6 @@ declare module 'vscode' { getClickCommand?(node: T): string; } - /** - * The theme-aware decorations for a [SCM resource](#SCMResource). - */ - export interface SCMResourceThemableDecorations { - - /** - * The icon path for a specific [SCM resource](#SCMResource). - */ - readonly iconPath?: string | Uri; - } - - /** - * The decorations for a [SCM resource](#SCMResource). Can be specified - * for light and dark themes, independently. - */ - export interface SCMResourceDecorations extends SCMResourceThemableDecorations { - - /** - * Whether the [SCM resource](#SCMResource) should be striked-through - * in the UI. - */ - readonly strikeThrough?: boolean; - - /** - * The light theme decorations. - */ - readonly light?: SCMResourceThemableDecorations; - - /** - * The dark theme decorations. - */ - readonly dark?: SCMResourceThemableDecorations; - } - - /** - * An SCM resource represents the state of an underlying workspace - * resource within a certain SCM provider state. - */ - export interface SCMResource { - - /** - * The [uri](#Uri) of this SCM resource. This uri should uniquely - * identify this SCM resource. Its value should be semantically - * related to your [SCM provider](#SCMProvider). - * - * For example, consider file `/foo/bar` to be modified. An SCM - * resource which would represent such state could have the - * following properties: - * - * - `uri = 'git:workingtree/A'` - * - `sourceUri = 'file:///foo/bar'` - */ - readonly uri: Uri; - - /** - * The [uri](#Uri) of the underlying resource inside the workspace. - */ - readonly sourceUri: Uri; - - /** - * The [decorations](#SCMResourceDecorations) for this SCM resource. - */ - readonly decorations?: SCMResourceDecorations; - } - - /** - * An SCM resource group is a collection of [SCM resources](#SCMResource). - */ - export interface SCMResourceGroup { - - /** - * The [uri](#Uri) of this SCM resource group. This uri should - * uniquely identify this SCM resource group. Its value should be - * semantically related to your [SCM provider](#SCMProvider). - * - * For example, consider a Working Tree resource group. An SCM - * resource group which would represent such state could have the - * following properties: - * - * - `uri = 'git:workingtree'` - * - `label = 'Working Tree'` - */ - readonly uri: Uri; - - /** - * The UI label of the SCM resource group. - */ - readonly label: string; - - /** - * The context key of the SCM resource group, which will be used to populate - * the value of the `scmResourceGroup` context key. - */ - readonly contextKey?: string; - - /** - * The collection of [SCM resources](#SCMResource) within the SCM resource group. - */ - readonly resources: SCMResource[]; - } - - /** - * An SCM provider is able to provide [SCM resources](#SCMResource) to the editor, - * notify of changes in them and interact with the editor in several SCM related ways. - */ - export interface SCMProvider { - - /** - * A human-readable label for the name of the SCM Provider. - */ - readonly label: string; - - /** - * The context key of the SCM provider, which will be used to populate - * the value of the `scmProvider` context key. - */ - readonly contextKey?: string; - - /** - * The list of SCM resource groups. - */ - readonly resources: SCMResourceGroup[]; - - /** - * A count of resources, used in the UI as the label for the SCM changes count. - */ - readonly count?: number; - - /** - * A state identifier, which will be used to populate the value of the - * `scmProviderState` context key. - */ - readonly stateContextKey?: string; - - /** - * An [event](#Event) which should fire when any of the following attributes - * have changed: - * - [resources](#SCMProvider.resources) - * - [count](#SCMProvider.count) - * - [state](#SCMProvider.state) - */ - readonly onDidChange?: Event; - - /** - * Provide a [uri](#Uri) to the original resource of any given resource uri. - * - * @param uri The uri of the resource open in a text editor. - * @param token A cancellation token. - * @return A thenable that resolves to uri of the matching original resource. - */ - provideOriginalResource?(uri: Uri, token: CancellationToken): ProviderResult; - - /** - * Open a specific [SCM resource](#SCMResource). Called when SCM resources - * are clicked in the UI, for example. - * - * @param resource The [SCM resource](#SCMResource) which should be open. - * @param token A cancellation token. - * @return A thenable which resolves when the resource is open. - */ - open?(resource: SCMResource): void; - } - - /** - * Represents the input box in the SCM view. - */ - export interface SCMInputBox { - - /** - * Setter and getter for the contents of the input box. - */ - value: string; - } - - export namespace scm { - - /** - * The currently active [SCM provider](#SCMProvider). - */ - export let activeProvider: SCMProvider | undefined; - - /** - * An [event](#Event) which fires when the active [SCM provider](#SCMProvider) - * has changed. - */ - export const onDidChangeActiveProvider: Event; - - /** - * The [input box](#SCMInputBox) in the SCM view. - */ - export const inputBox: SCMInputBox; - - /** - * An [event](#Event) which fires when the user has accepted the changes. - */ - export const onDidAcceptInputValue: Event; - - /** - * Registers an [SCM provider](#SCMProvider). - * - * @return A disposable which unregisters the provider. - */ - export function registerSCMProvider(provider: SCMProvider): Disposable; - } - /** * The contiguous set of modified lines in a diff. */ diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index ff01bb24c103cccacabf44d5862cce6d9e21d1ee..241b7150f91991a1029b156764dde90e28978871 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -448,27 +448,22 @@ export function createApiFactory( class SCM { - @proposed(extension) get activeProvider() { return extHostSCM.activeProvider; } - @proposed(extension) get onDidChangeActiveProvider() { return extHostSCM.onDidChangeActiveProvider; } - @proposed(extension) get onDidAcceptInputValue() { return mapEvent(extHostSCM.inputBox.onDidAccept, () => extHostSCM.inputBox); } - @proposed(extension) get inputBox() { return extHostSCM.inputBox; } - @proposed(extension) registerSCMProvider(provider: vscode.SCMProvider) { telemetryService.publicLog('registerSCMProvider', { extensionId: extension.id,