vscode.proposed.d.ts 10.2 KB
Newer Older
1 2 3 4 5 6 7 8 9
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

// This is the place for API experiments and proposal.

declare module 'vscode' {

J
Johannes Rieken 已提交
10 11 12 13
	// todo@joh discover files etc
	export interface FileSystemProvider {
		// todo@joh -> added, deleted, renamed, changed
		onDidChange: Event<Uri>;
D
Dirk Baeumer 已提交
14

J
Johannes Rieken 已提交
15 16
		resolveContents(resource: Uri): string | Thenable<string>;
		writeContents(resource: Uri, contents: string): void | Thenable<void>;
17 18
	}

19 20 21 22
	export interface SearchProvider {
		provideSearchResults(query: any, progress: Progress<Uri>, token?: CancellationToken): Thenable<void>;
	}

23
	export namespace workspace {
J
Johannes Rieken 已提交
24 25

		export function registerFileSystemProvider(authority: string, provider: FileSystemProvider): Disposable;
26 27
	}

28 29 30 31
	export namespace window {

		export function sampleFunction(): Thenable<any>;
	}
P
Pine Wu 已提交
32

J
Joao Moreno 已提交
33 34 35
	/**
	 * The contiguous set of modified lines in a diff.
	 */
J
Joao Moreno 已提交
36 37 38 39 40 41 42
	export interface LineChange {
		readonly originalStartLineNumber: number;
		readonly originalEndLineNumber: number;
		readonly modifiedStartLineNumber: number;
		readonly modifiedEndLineNumber: number;
	}

43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
	export namespace commands {

		/**
		 * Registers a diff information command that can be invoked via a keyboard shortcut,
		 * a menu item, an action, or directly.
		 *
		 * Diff information commands are different from ordinary [commands](#commands.registerCommand) as
		 * they only execute when there is an active diff editor when the command is called, and the diff
		 * information has been computed. Also, the command handler of an editor command has access to
		 * the diff information.
		 *
		 * @param command A unique identifier for the command.
		 * @param callback A command handler function with access to the [diff information](#LineChange).
		 * @param thisArg The `this` context used when invoking the handler function.
		 * @return Disposable which unregisters this command on disposal.
		 */
		export function registerDiffInformationCommand(command: string, callback: (diff: LineChange[], ...args: any[]) => any, thisArg?: any): Disposable;
	}
D
Daniel Imms 已提交
61

62
	/**
C
Christof Marti 已提交
63
	 * Namespace for handling credentials.
64
	 */
C
Christof Marti 已提交
65
	export namespace credentials {
66 67

		/**
C
Christof Marti 已提交
68
		 * Read a previously stored secret from the credential store.
D
Daniel Imms 已提交
69
		 *
C
Christof Marti 已提交
70 71 72
		 * @param service The service of the credential.
		 * @param account The account of the credential.
		 * @return A promise for the secret of the credential.
73
		 */
C
Christof Marti 已提交
74
		export function readSecret(service: string, account: string): Thenable<string | undefined>;
75 76

		/**
C
Christof Marti 已提交
77
		 * Write a secret to the credential store.
D
Daniel Imms 已提交
78
		 *
C
Christof Marti 已提交
79 80 81 82
		 * @param service The service of the credential.
		 * @param account The account of the credential.
		 * @param secret The secret of the credential to write to the credential store.
		 * @return A promise indicating completion of the operation.
83
		 */
C
Christof Marti 已提交
84
		export function writeSecret(service: string, account: string, secret: string): Thenable<void>;
85 86

		/**
C
Christof Marti 已提交
87
		 * Delete a previously stored secret from the credential store.
D
Daniel Imms 已提交
88
		 *
C
Christof Marti 已提交
89 90 91
		 * @param service The service of the credential.
		 * @param account The account of the credential.
		 * @return A promise resolving to true if there was a secret for that service and account.
92
		 */
C
Christof Marti 已提交
93
		export function deleteSecret(service: string, account: string): Thenable<boolean>;
94
	}
95

J
Joao Moreno 已提交
96 97 98
	/**
	 * Represents a color in RGBA space.
	 */
99
	export class Color {
J
Joao Moreno 已提交
100 101 102 103

		/**
		 * The red component of this color in the range [0-1].
		 */
104
		readonly red: number;
J
Joao Moreno 已提交
105 106 107 108

		/**
		 * The green component of this color in the range [0-1].
		 */
109
		readonly green: number;
J
Joao Moreno 已提交
110 111 112 113

		/**
		 * The blue component of this color in the range [0-1].
		 */
114 115
		readonly blue: number;

J
Joao Moreno 已提交
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
		/**
		 * The alpha component of this color in the range [0-1].
		 */
		readonly alpha: number;

		constructor(red: number, green: number, blue: number, alpha: number);

		/**
		 * Creates a color from the HSLA space.
		 *
		 * @param hue The hue component in the range [0-1].
		 * @param saturation The saturation component in the range [0-1].
		 * @param luminance The luminance component in the range [0-1].
		 * @param alpha The alpha component in the range [0-1].
		 */
		static fromHSLA(hue: number, saturation: number, luminance: number, alpha: number): Color;
132

133 134 135 136 137 138
		/**
		 * Creates a color by from a hex string. Supported formats are: #RRGGBB, #RRGGBBAA, #RGB, #RGBA.
		 * <code>null</code> is returned if the string does not match one of the supported formats.
		 * @param hex a string to parse
		 */
		static fromHex(hex: string): Color | null;
139 140
	}

J
Joao Moreno 已提交
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
	/**
	 * A color format is either a single format or a combination of two
	 * formats: an opaque one and a transparent one. The format itself
	 * is a string representation of how the color can be formatted. It
	 * supports the use of placeholders, similar to how snippets work.
	 * Each placeholder, surrounded by curly braces `{}`, requires a
	 * variable name and can optionally specify a number format and range
	 * for that variable's value.
	 *
	 * Supported variables:
	 *  - `red`
	 *  - `green`
	 *  - `blue`
	 *  - `hue`
	 *  - `saturation`
J
Joao Moreno 已提交
156
	 *  - `luminance`
J
Joao Moreno 已提交
157 158 159 160 161 162
	 *  - `alpha`
	 *
	 * Supported number formats:
	 *  - `f`, float with 2 decimal points. This is the default format. Default range is `[0-1]`.
	 *  - `Xf`, float with `X` decimal points. Default range is `[0-1]`.
	 *  - `d`, decimal. Default range is `[0-255]`.
J
Joao Moreno 已提交
163
	 *  - `x`, `X`, hexadecimal. Default range is `[00-FF]`.
J
Joao Moreno 已提交
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
	 *
	 * The default number format is float. The default number range is `[0-1]`.
	 *
	 * As an example, take the color `Color(1, 0.5, 0, 1)`. Here's how
	 * different formats would format it:
	 *
	 *  - CSS RGB
	 *   - Format: `rgb({red:d[0-255]}, {green:d[0-255]}, {blue:d[0-255]})`
	 *   - Output: `rgb(255, 127, 0)`
	 *
	 *  - CSS RGBA
	 *   - Format: `rgba({red:d[0-255]}, {green:d[0-255]}, {blue:d[0-255]}, {alpha})`
	 *   - Output: `rgba(255, 127, 0, 1)`
	 *
	 *  - CSS Hexadecimal
	 *   - Format: `#{red:X}{green:X}{blue:X}`
	 *   - Output: `#FF7F00`
	 *
	 *  - CSS HSLA
J
Joao Moreno 已提交
183
	 *   - Format: `hsla({hue:d[0-360]}, {saturation:d[0-100]}%, {luminance:d[0-100]}%, {alpha})`
J
Joao Moreno 已提交
184 185
	 *   - Output: `hsla(30, 100%, 50%, 1)`
	 */
J
Joao Moreno 已提交
186 187
	export type ColorFormat = string | { opaque: string, transparent: string };

J
Joao Moreno 已提交
188 189 190 191 192 193 194 195
	/**
	 * Represents a color range from a document.
	 */
	export class ColorRange {

		/**
		 * The range in the document where this color appers.
		 */
196 197
		range: Range;

J
Joao Moreno 已提交
198 199 200
		/**
		 * The actual color value for this color range.
		 */
201 202
		color: Color;

J
Joao Moreno 已提交
203 204 205
		/**
		 * The other formats this color range supports the color to be formatted in.
		 */
J
Joao Moreno 已提交
206
		availableFormats: ColorFormat[];
207

J
Joao Moreno 已提交
208 209 210 211 212 213 214 215
		/**
		 * Creates a new color range.
		 *
		 * @param range The range the color appears in. Must not be empty.
		 * @param color The value of the color.
		 * @param format The format in which this color is currently formatted.
		 * @param availableFormats The other formats this color range supports the color to be formatted in.
		 */
216
		constructor(range: Range, color: Color, availableFormats: ColorFormat[]);
M
Michel Kaporin 已提交
217
	}
218

J
Joao Moreno 已提交
219 220 221 222
	/**
	 * The document color provider defines the contract between extensions and feature of
	 * picking and modifying colors in the editor.
	 */
223
	export interface DocumentColorProvider {
J
Joao Moreno 已提交
224 225 226 227 228 229 230 231 232 233

		/**
		 * Provide colors for the given document.
		 *
		 * @param document The document in which the command was invoked.
		 * @param token A cancellation token.
		 * @return An array of [color ranges](#ColorRange) or a thenable that resolves to such. The lack of a result
		 * can be signaled by returning `undefined`, `null`, or an empty array.
		 */
		provideDocumentColors(document: TextDocument, token: CancellationToken): ProviderResult<ColorRange[]>;
234 235 236 237 238
	}

	export namespace languages {
		export function registerColorProvider(selector: DocumentSelector, provider: DocumentColorProvider): Disposable;
	}
239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279

	export namespace debug {
		/**
		 * Register a [debug configuration provider](#DebugConfigurationProvider) for a specifc debug type.
		 * More than one provider can be registered for the same type.
		 *
		 * @param type The debug type for which the provider is registered.
		 * @param provider The [debug configuration provider](#DebugConfigurationProvider) to register.
		 * @return A [disposable](#Disposable) that unregisters this provider when being disposed.
		 */
		export function registerDebugConfigurationProvider(debugType: string, provider: DebugConfigurationProvider): Disposable;
	}

	/**
	 * A debug configuration provider allows to add the initial debug configurations to a newly created launch.json
	 * and allows to resolve a launch configuration before it is used to start a new debug session.
	 * A debug configuration provider is registered via #workspace.registerDebugConfigurationProvider.
	 */
	export interface DebugConfigurationProvider {
		/**
		 * Provides initial [debug configuration](#DebugConfiguration). If more than one debug configuration provider is
		 * registered for the same type, debug configurations are concatenated in arbitrary order.
		 *
		 * @param folder The workspace folder for which the configurations are used or undefined for a folderless setup.
		 * @param token A cancellation token.
		 * @return An array of [debug configurations](#DebugConfiguration).
		 */
		provideDebugConfigurations?(folder: WorkspaceFolder | undefined, token?: CancellationToken): ProviderResult<DebugConfiguration[]>;

		/**
		 * Resolves a [debug configuration](#DebugConfiguration) by filling in missing values or by adding/changing/removing attributes.
		 * If more than one debug configuration provider is registered for the same type, the resolveDebugConfiguration calls are chained
		 * in arbitrary order and the initial debug configuration is piped through the chain.
		 *
		 * @param folder The workspace folder from which the configuration originates from or undefined for a folderless setup.
		 * @param debugConfiguration The [debug configuration](#DebugConfiguration) to resolve.
		 * @param token A cancellation token.
		 * @return The resolved debug configuration.
		 */
		resolveDebugConfiguration?(folder: WorkspaceFolder | undefined, debugConfiguration: DebugConfiguration, token?: CancellationToken): ProviderResult<DebugConfiguration>;
	}
280
}