vscode.proposed.d.ts 7.0 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' {

10
	export interface OpenDialogOptions {
11 12
		defaultResource?: Uri;
		openLabel?: string;
13 14 15 16
		openFiles?: boolean;
		openFolders?: boolean;
		openMany?: boolean;
	}
17

18 19 20 21
	export interface SaveDialogOptions {
		defaultResource?: Uri;
		saveLabel?: string;
	}
D
Dirk Baeumer 已提交
22

23
	export namespace window {
24
		export function showOpenDialog(options: OpenDialogOptions): Thenable<Uri[]>;
25
		export function showSaveDialog(options: SaveDialogOptions): Thenable<Uri>;
26 27
	}

J
Johannes Rieken 已提交
28 29 30 31
	// todo@joh discover files etc
	export interface FileSystemProvider {
		// todo@joh -> added, deleted, renamed, changed
		onDidChange: Event<Uri>;
D
Dirk Baeumer 已提交
32

J
Johannes Rieken 已提交
33 34
		resolveContents(resource: Uri): string | Thenable<string>;
		writeContents(resource: Uri, contents: string): void | Thenable<void>;
35

36 37 38
		// -- search
		// todo@joh - extract into its own provider?
		findFiles(query: string, progress: Progress<Uri>, token?: CancellationToken): Thenable<void>;
39 40
	}

41
	export namespace workspace {
J
Johannes Rieken 已提交
42
		export function registerFileSystemProvider(authority: string, provider: FileSystemProvider): Disposable;
43 44
	}

45 46 47 48
	export namespace window {

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

J
Joao Moreno 已提交
50 51 52
	/**
	 * The contiguous set of modified lines in a diff.
	 */
J
Joao Moreno 已提交
53 54 55 56 57 58 59
	export interface LineChange {
		readonly originalStartLineNumber: number;
		readonly originalEndLineNumber: number;
		readonly modifiedStartLineNumber: number;
		readonly modifiedEndLineNumber: number;
	}

60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
	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 已提交
78

J
Joao Moreno 已提交
79 80 81
	/**
	 * Represents a color in RGBA space.
	 */
82
	export class Color {
J
Joao Moreno 已提交
83 84 85 86

		/**
		 * The red component of this color in the range [0-1].
		 */
87
		readonly red: number;
J
Joao Moreno 已提交
88 89 90 91

		/**
		 * The green component of this color in the range [0-1].
		 */
92
		readonly green: number;
J
Joao Moreno 已提交
93 94 95 96

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

J
Joao Moreno 已提交
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
		/**
		 * 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;
115

116 117 118 119 120 121
		/**
		 * 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;
122 123
	}

J
Joao Moreno 已提交
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
	/**
	 * 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 已提交
139
	 *  - `luminance`
J
Joao Moreno 已提交
140 141 142 143 144 145
	 *  - `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 已提交
146
	 *  - `x`, `X`, hexadecimal. Default range is `[00-FF]`.
J
Joao Moreno 已提交
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
	 *
	 * 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 已提交
166
	 *   - Format: `hsla({hue:d[0-360]}, {saturation:d[0-100]}%, {luminance:d[0-100]}%, {alpha})`
J
Joao Moreno 已提交
167 168
	 *   - Output: `hsla(30, 100%, 50%, 1)`
	 */
J
Joao Moreno 已提交
169 170
	export type ColorFormat = string | { opaque: string, transparent: string };

J
Joao Moreno 已提交
171 172 173 174 175 176 177 178
	/**
	 * Represents a color range from a document.
	 */
	export class ColorRange {

		/**
		 * The range in the document where this color appers.
		 */
179 180
		range: Range;

J
Joao Moreno 已提交
181 182 183
		/**
		 * The actual color value for this color range.
		 */
184 185
		color: Color;

J
Joao Moreno 已提交
186 187 188
		/**
		 * The other formats this color range supports the color to be formatted in.
		 */
J
Joao Moreno 已提交
189
		availableFormats: ColorFormat[];
190

J
Joao Moreno 已提交
191 192 193 194 195 196 197
		/**
		 * 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.
		 */
198
		constructor(range: Range, color: Color, availableFormats: ColorFormat[]);
M
Michel Kaporin 已提交
199
	}
200

J
Joao Moreno 已提交
201 202 203 204
	/**
	 * The document color provider defines the contract between extensions and feature of
	 * picking and modifying colors in the editor.
	 */
205
	export interface DocumentColorProvider {
J
Joao Moreno 已提交
206 207 208 209 210 211 212 213 214
		/**
		 * 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[]>;
215 216 217 218 219
	}

	export namespace languages {
		export function registerColorProvider(selector: DocumentSelector, provider: DocumentColorProvider): Disposable;
	}
220
}