2018-10-29 19:30:50 +01:00
|
|
|
|
/*---------------------------------------------------------------------------------------------
|
|
|
|
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
|
|
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
|
|
|
2019-04-18 09:27:55 -07:00
|
|
|
|
/**
|
|
|
|
|
|
* This is the place for API experiments and proposals.
|
|
|
|
|
|
* These API are NOT stable and subject to change. They are only available in the Insiders
|
|
|
|
|
|
* distribution and CANNOT be used in published extensions.
|
|
|
|
|
|
*
|
|
|
|
|
|
* To test these API in local environment:
|
|
|
|
|
|
* - Use Insiders release of VS Code.
|
|
|
|
|
|
* - Add `"enableProposedApi": true` to your package.json.
|
|
|
|
|
|
* - Copy this file to your project.
|
|
|
|
|
|
*/
|
2018-10-29 19:30:50 +01:00
|
|
|
|
|
|
|
|
|
|
declare module 'vscode' {
|
|
|
|
|
|
|
2019-04-18 09:27:55 -07:00
|
|
|
|
//#region Joh - call hierarchy
|
|
|
|
|
|
|
|
|
|
|
|
export class CallHierarchyItem {
|
2019-10-09 17:29:14 +02:00
|
|
|
|
/**
|
|
|
|
|
|
* The name of this item.
|
|
|
|
|
|
*/
|
2019-04-18 09:27:55 -07:00
|
|
|
|
name: string;
|
2019-10-09 17:29:14 +02:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The kind of this item.
|
|
|
|
|
|
*/
|
|
|
|
|
|
kind: SymbolKind;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Tags for this item.
|
|
|
|
|
|
*/
|
|
|
|
|
|
tags?: ReadonlyArray<SymbolTag>;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* More detail for this item, e.g. the signature of a function.
|
|
|
|
|
|
*/
|
2019-04-18 09:27:55 -07:00
|
|
|
|
detail?: string;
|
2019-10-09 17:29:14 +02:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The resource identifier of this item.
|
|
|
|
|
|
*/
|
2019-04-18 09:27:55 -07:00
|
|
|
|
uri: Uri;
|
2019-10-09 17:29:14 +02:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The range enclosing this symbol not including leading/trailing whitespace but everything else, e.g. comments and code.
|
|
|
|
|
|
*/
|
2019-04-18 09:27:55 -07:00
|
|
|
|
range: Range;
|
2019-10-09 17:29:14 +02:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The range that should be selected and reveal when this symbol is being picked, e.g. the name of a function.
|
|
|
|
|
|
* Must be contained by the [`range`](#CallHierarchyItem.range).
|
|
|
|
|
|
*/
|
2019-04-18 09:27:55 -07:00
|
|
|
|
selectionRange: Range;
|
2018-10-29 19:30:50 +01:00
|
|
|
|
|
2019-04-18 09:27:55 -07:00
|
|
|
|
constructor(kind: SymbolKind, name: string, detail: string, uri: Uri, range: Range, selectionRange: Range);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
export class CallHierarchyIncomingCall {
|
2019-10-10 15:55:57 +02:00
|
|
|
|
from: CallHierarchyItem;
|
|
|
|
|
|
fromRanges: Range[];
|
|
|
|
|
|
constructor(item: CallHierarchyItem, fromRanges: Range[]);
|
2019-10-09 17:29:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export class CallHierarchyOutgoingCall {
|
2019-10-10 15:55:57 +02:00
|
|
|
|
fromRanges: Range[];
|
|
|
|
|
|
to: CallHierarchyItem;
|
|
|
|
|
|
constructor(item: CallHierarchyItem, fromRanges: Range[]);
|
2019-10-09 17:29:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-04-18 09:27:55 -07:00
|
|
|
|
export interface CallHierarchyItemProvider {
|
2018-10-29 19:30:50 +01:00
|
|
|
|
|
|
|
|
|
|
/**
|
2019-10-09 17:29:14 +02:00
|
|
|
|
* Provide a list of callers for the provided item, e.g. all function calling a function.
|
2018-10-29 19:30:50 +01:00
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
provideCallHierarchyIncomingCalls(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<CallHierarchyIncomingCall[]>;
|
2018-10-29 19:30:50 +01:00
|
|
|
|
|
|
|
|
|
|
/**
|
2019-10-09 17:29:14 +02:00
|
|
|
|
* Provide a list of calls for the provided item, e.g. all functions call from a function.
|
2018-10-29 19:30:50 +01:00
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
provideCallHierarchyOutgoingCalls(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<CallHierarchyOutgoingCall[]>;
|
|
|
|
|
|
|
|
|
|
|
|
// todo@joh this could return as 'prepareCallHierarchy' (similar to the RenameProvider#prepareRename)
|
|
|
|
|
|
//
|
|
|
|
|
|
// /**
|
|
|
|
|
|
// *
|
|
|
|
|
|
// * Given a document and position compute a call hierarchy item. This is justed as
|
|
|
|
|
|
// * anchor for call hierarchy and then `resolveCallHierarchyItem` is being called.
|
|
|
|
|
|
// */
|
|
|
|
|
|
// resolveCallHierarchyItem(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<CallHierarchyItem>;
|
2019-04-18 09:27:55 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export namespace languages {
|
|
|
|
|
|
export function registerCallHierarchyProvider(selector: DocumentSelector, provider: CallHierarchyItemProvider): Disposable;
|
2018-10-29 19:30:50 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
2019-04-18 09:27:55 -07:00
|
|
|
|
//#region Alex - resolvers
|
|
|
|
|
|
|
|
|
|
|
|
export interface RemoteAuthorityResolverContext {
|
|
|
|
|
|
resolveAttempt: number;
|
2018-10-29 19:30:50 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-04-18 09:27:55 -07:00
|
|
|
|
export class ResolvedAuthority {
|
|
|
|
|
|
readonly host: string;
|
|
|
|
|
|
readonly port: number;
|
|
|
|
|
|
|
|
|
|
|
|
constructor(host: string, port: number);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
export interface ResolvedOptions {
|
|
|
|
|
|
extensionHostEnv?: { [key: string]: string | null };
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export type ResolverResult = ResolvedAuthority & ResolvedOptions;
|
|
|
|
|
|
|
2019-04-18 09:27:55 -07:00
|
|
|
|
export class RemoteAuthorityResolverError extends Error {
|
|
|
|
|
|
static NotAvailable(message?: string, handled?: boolean): RemoteAuthorityResolverError;
|
|
|
|
|
|
static TemporarilyNotAvailable(message?: string): RemoteAuthorityResolverError;
|
|
|
|
|
|
|
|
|
|
|
|
constructor(message?: string);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export interface RemoteAuthorityResolver {
|
2019-10-09 17:29:14 +02:00
|
|
|
|
resolve(authority: string, context: RemoteAuthorityResolverContext): ResolverResult | Thenable<ResolverResult>;
|
2019-04-18 09:27:55 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export interface ResourceLabelFormatter {
|
|
|
|
|
|
scheme: string;
|
|
|
|
|
|
authority?: string;
|
|
|
|
|
|
formatting: ResourceLabelFormatting;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export interface ResourceLabelFormatting {
|
|
|
|
|
|
label: string; // myLabel:/${path}
|
|
|
|
|
|
separator: '/' | '\\' | '';
|
|
|
|
|
|
tildify?: boolean;
|
|
|
|
|
|
normalizeDriveLetter?: boolean;
|
|
|
|
|
|
workspaceSuffix?: string;
|
|
|
|
|
|
authorityPrefix?: string;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export namespace workspace {
|
|
|
|
|
|
export function registerRemoteAuthorityResolver(authorityPrefix: string, resolver: RemoteAuthorityResolver): Disposable;
|
|
|
|
|
|
export function registerResourceLabelFormatter(formatter: ResourceLabelFormatter): Disposable;
|
2018-10-29 19:30:50 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
2019-04-18 09:27:55 -07:00
|
|
|
|
|
|
|
|
|
|
// #region Joh - code insets
|
|
|
|
|
|
|
2019-07-08 17:27:24 +02:00
|
|
|
|
export interface WebviewEditorInset {
|
|
|
|
|
|
readonly editor: TextEditor;
|
|
|
|
|
|
readonly line: number;
|
|
|
|
|
|
readonly height: number;
|
|
|
|
|
|
readonly webview: Webview;
|
|
|
|
|
|
readonly onDidDispose: Event<void>;
|
|
|
|
|
|
dispose(): void;
|
2019-04-18 09:27:55 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-07-08 17:27:24 +02:00
|
|
|
|
export namespace window {
|
|
|
|
|
|
export function createWebviewTextEditorInset(editor: TextEditor, line: number, height: number, options?: WebviewOptions): WebviewEditorInset;
|
2019-04-18 09:27:55 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
2018-10-29 19:30:50 +01:00
|
|
|
|
//#region Joh - read/write in chunks
|
|
|
|
|
|
|
|
|
|
|
|
export interface FileSystemProvider {
|
2019-04-18 09:27:55 -07:00
|
|
|
|
open?(resource: Uri, options: { create: boolean }): number | Thenable<number>;
|
2018-10-29 19:30:50 +01:00
|
|
|
|
close?(fd: number): void | Thenable<void>;
|
|
|
|
|
|
read?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): number | Thenable<number>;
|
|
|
|
|
|
write?(fd: number, pos: number, data: Uint8Array, offset: number, length: number): number | Thenable<number>;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region Rob: search provider
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The parameters of a query for text search.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface TextSearchQuery {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The text pattern to search for.
|
|
|
|
|
|
*/
|
|
|
|
|
|
pattern: string;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Whether or not `pattern` should match multiple lines of text.
|
|
|
|
|
|
*/
|
|
|
|
|
|
isMultiline?: boolean;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Whether or not `pattern` should be interpreted as a regular expression.
|
|
|
|
|
|
*/
|
|
|
|
|
|
isRegExp?: boolean;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Whether or not the search should be case-sensitive.
|
|
|
|
|
|
*/
|
|
|
|
|
|
isCaseSensitive?: boolean;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Whether or not to search for whole word matches only.
|
|
|
|
|
|
*/
|
|
|
|
|
|
isWordMatch?: boolean;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A file glob pattern to match file paths against.
|
|
|
|
|
|
* TODO@roblou - merge this with the GlobPattern docs/definition in vscode.d.ts.
|
|
|
|
|
|
* @see [GlobPattern](#GlobPattern)
|
|
|
|
|
|
*/
|
|
|
|
|
|
export type GlobString = string;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Options common to file and text search
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface SearchOptions {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The root folder to search within.
|
|
|
|
|
|
*/
|
|
|
|
|
|
folder: Uri;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Files that match an `includes` glob pattern should be included in the search.
|
|
|
|
|
|
*/
|
|
|
|
|
|
includes: GlobString[];
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Files that match an `excludes` glob pattern should be excluded from the search.
|
|
|
|
|
|
*/
|
|
|
|
|
|
excludes: GlobString[];
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Whether external files that exclude files, like .gitignore, should be respected.
|
|
|
|
|
|
* See the vscode setting `"search.useIgnoreFiles"`.
|
|
|
|
|
|
*/
|
|
|
|
|
|
useIgnoreFiles: boolean;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Whether symlinks should be followed while searching.
|
|
|
|
|
|
* See the vscode setting `"search.followSymlinks"`.
|
|
|
|
|
|
*/
|
|
|
|
|
|
followSymlinks: boolean;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Whether global files that exclude files, like .gitignore, should be respected.
|
|
|
|
|
|
* See the vscode setting `"search.useGlobalIgnoreFiles"`.
|
|
|
|
|
|
*/
|
|
|
|
|
|
useGlobalIgnoreFiles: boolean;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Options to specify the size of the result text preview.
|
|
|
|
|
|
* These options don't affect the size of the match itself, just the amount of preview text.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface TextSearchPreviewOptions {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The maximum number of lines in the preview.
|
|
|
|
|
|
* Only search providers that support multiline search will ever return more than one line in the match.
|
|
|
|
|
|
*/
|
|
|
|
|
|
matchLines: number;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The maximum number of characters included per line.
|
|
|
|
|
|
*/
|
|
|
|
|
|
charsPerLine: number;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Options that apply to text search.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface TextSearchOptions extends SearchOptions {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The maximum number of results to be returned.
|
|
|
|
|
|
*/
|
|
|
|
|
|
maxResults: number;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Options to specify the size of the result text preview.
|
|
|
|
|
|
*/
|
|
|
|
|
|
previewOptions?: TextSearchPreviewOptions;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Exclude files larger than `maxFileSize` in bytes.
|
|
|
|
|
|
*/
|
|
|
|
|
|
maxFileSize?: number;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Interpret files using this encoding.
|
|
|
|
|
|
* See the vscode setting `"files.encoding"`
|
|
|
|
|
|
*/
|
|
|
|
|
|
encoding?: string;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Number of lines of context to include before each match.
|
|
|
|
|
|
*/
|
|
|
|
|
|
beforeContext?: number;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Number of lines of context to include after each match.
|
|
|
|
|
|
*/
|
|
|
|
|
|
afterContext?: number;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Information collected when text search is complete.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface TextSearchComplete {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Whether the search hit the limit on the maximum number of search results.
|
|
|
|
|
|
* `maxResults` on [`TextSearchOptions`](#TextSearchOptions) specifies the max number of results.
|
|
|
|
|
|
* - If exactly that number of matches exist, this should be false.
|
|
|
|
|
|
* - If `maxResults` matches are returned and more exist, this should be true.
|
|
|
|
|
|
* - If search hits an internal limit which is less than `maxResults`, this should be true.
|
|
|
|
|
|
*/
|
|
|
|
|
|
limitHit?: boolean;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The parameters of a query for file search.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface FileSearchQuery {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The search pattern to match against file paths.
|
|
|
|
|
|
*/
|
|
|
|
|
|
pattern: string;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Options that apply to file search.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface FileSearchOptions extends SearchOptions {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The maximum number of results to be returned.
|
|
|
|
|
|
*/
|
2019-04-18 09:27:55 -07:00
|
|
|
|
maxResults?: number;
|
2018-10-29 19:30:50 +01:00
|
|
|
|
|
2019-04-18 09:27:55 -07:00
|
|
|
|
/**
|
|
|
|
|
|
* A CancellationToken that represents the session for this search query. If the provider chooses to, this object can be used as the key for a cache,
|
|
|
|
|
|
* and searches with the same session object can search the same cache. When the token is cancelled, the session is complete and the cache can be cleared.
|
|
|
|
|
|
*/
|
|
|
|
|
|
session?: CancellationToken;
|
|
|
|
|
|
}
|
2018-10-29 19:30:50 +01:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A preview of the text result.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface TextSearchMatchPreview {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The matching lines of text, or a portion of the matching line that contains the match.
|
|
|
|
|
|
*/
|
|
|
|
|
|
text: string;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The Range within `text` corresponding to the text of the match.
|
|
|
|
|
|
* The number of matches must match the TextSearchMatch's range property.
|
|
|
|
|
|
*/
|
|
|
|
|
|
matches: Range | Range[];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A match from a text search
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface TextSearchMatch {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The uri for the matching document.
|
|
|
|
|
|
*/
|
|
|
|
|
|
uri: Uri;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The range of the match within the document, or multiple ranges for multiple matches.
|
|
|
|
|
|
*/
|
|
|
|
|
|
ranges: Range | Range[];
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A preview of the text match.
|
|
|
|
|
|
*/
|
|
|
|
|
|
preview: TextSearchMatchPreview;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A line of context surrounding a TextSearchMatch.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface TextSearchContext {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The uri for the matching document.
|
|
|
|
|
|
*/
|
|
|
|
|
|
uri: Uri;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* One line of text.
|
|
|
|
|
|
* previewOptions.charsPerLine applies to this
|
|
|
|
|
|
*/
|
|
|
|
|
|
text: string;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The line number of this line of context.
|
|
|
|
|
|
*/
|
|
|
|
|
|
lineNumber: number;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export type TextSearchResult = TextSearchMatch | TextSearchContext;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A FileSearchProvider provides search results for files in the given folder that match a query string. It can be invoked by quickopen or other extensions.
|
|
|
|
|
|
*
|
|
|
|
|
|
* A FileSearchProvider is the more powerful of two ways to implement file search in VS Code. Use a FileSearchProvider if you wish to search within a folder for
|
|
|
|
|
|
* all files that match the user's query.
|
|
|
|
|
|
*
|
|
|
|
|
|
* The FileSearchProvider will be invoked on every keypress in quickopen. When `workspace.findFiles` is called, it will be invoked with an empty query string,
|
|
|
|
|
|
* and in that case, every file in the folder should be returned.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface FileSearchProvider {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Provide the set of files that match a certain file path pattern.
|
|
|
|
|
|
* @param query The parameters for this query.
|
|
|
|
|
|
* @param options A set of options to consider while searching files.
|
|
|
|
|
|
* @param token A cancellation token.
|
|
|
|
|
|
*/
|
|
|
|
|
|
provideFileSearchResults(query: FileSearchQuery, options: FileSearchOptions, token: CancellationToken): ProviderResult<Uri[]>;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A TextSearchProvider provides search results for text results inside files in the workspace.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface TextSearchProvider {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Provide results that match the given text pattern.
|
|
|
|
|
|
* @param query The parameters for this query.
|
|
|
|
|
|
* @param options A set of options to consider while searching.
|
|
|
|
|
|
* @param progress A progress callback that must be invoked for all results.
|
|
|
|
|
|
* @param token A cancellation token.
|
|
|
|
|
|
*/
|
|
|
|
|
|
provideTextSearchResults(query: TextSearchQuery, options: TextSearchOptions, progress: Progress<TextSearchResult>, token: CancellationToken): ProviderResult<TextSearchComplete>;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Options that can be set on a findTextInFiles search.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface FindTextInFilesOptions {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A [glob pattern](#GlobPattern) that defines the files to search for. The glob pattern
|
|
|
|
|
|
* will be matched against the file paths of files relative to their workspace. Use a [relative pattern](#RelativePattern)
|
|
|
|
|
|
* to restrict the search results to a [workspace folder](#WorkspaceFolder).
|
|
|
|
|
|
*/
|
|
|
|
|
|
include?: GlobPattern;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A [glob pattern](#GlobPattern) that defines files and folders to exclude. The glob pattern
|
|
|
|
|
|
* will be matched against the file paths of resulting matches relative to their workspace. When `undefined` only default excludes will
|
|
|
|
|
|
* apply, when `null` no excludes will apply.
|
|
|
|
|
|
*/
|
|
|
|
|
|
exclude?: GlobPattern | null;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The maximum number of results to search for
|
|
|
|
|
|
*/
|
|
|
|
|
|
maxResults?: number;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Whether external files that exclude files, like .gitignore, should be respected.
|
|
|
|
|
|
* See the vscode setting `"search.useIgnoreFiles"`.
|
|
|
|
|
|
*/
|
|
|
|
|
|
useIgnoreFiles?: boolean;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Whether global files that exclude files, like .gitignore, should be respected.
|
|
|
|
|
|
* See the vscode setting `"search.useGlobalIgnoreFiles"`.
|
|
|
|
|
|
*/
|
|
|
|
|
|
useGlobalIgnoreFiles?: boolean;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Whether symlinks should be followed while searching.
|
|
|
|
|
|
* See the vscode setting `"search.followSymlinks"`.
|
|
|
|
|
|
*/
|
|
|
|
|
|
followSymlinks?: boolean;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Interpret files using this encoding.
|
|
|
|
|
|
* See the vscode setting `"files.encoding"`
|
|
|
|
|
|
*/
|
|
|
|
|
|
encoding?: string;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Options to specify the size of the result text preview.
|
|
|
|
|
|
*/
|
|
|
|
|
|
previewOptions?: TextSearchPreviewOptions;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Number of lines of context to include before each match.
|
|
|
|
|
|
*/
|
|
|
|
|
|
beforeContext?: number;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Number of lines of context to include after each match.
|
|
|
|
|
|
*/
|
|
|
|
|
|
afterContext?: number;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export namespace workspace {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Register a search provider.
|
|
|
|
|
|
*
|
|
|
|
|
|
* Only one provider can be registered per scheme.
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param scheme The provider will be invoked for workspace folders that have this file scheme.
|
|
|
|
|
|
* @param provider The provider.
|
|
|
|
|
|
* @return A [disposable](#Disposable) that unregisters this provider when being disposed.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function registerFileSearchProvider(scheme: string, provider: FileSearchProvider): Disposable;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Register a text search provider.
|
|
|
|
|
|
*
|
|
|
|
|
|
* Only one provider can be registered per scheme.
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param scheme The provider will be invoked for workspace folders that have this file scheme.
|
|
|
|
|
|
* @param provider The provider.
|
|
|
|
|
|
* @return A [disposable](#Disposable) that unregisters this provider when being disposed.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function registerTextSearchProvider(scheme: string, provider: TextSearchProvider): Disposable;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Search text in files across all [workspace folders](#workspace.workspaceFolders) in the workspace.
|
|
|
|
|
|
* @param query The query parameters for the search - the search string, whether it's case-sensitive, or a regex, or matches whole words.
|
|
|
|
|
|
* @param callback A callback, called for each result
|
|
|
|
|
|
* @param token A token that can be used to signal cancellation to the underlying search engine.
|
|
|
|
|
|
* @return A thenable that resolves when the search is complete.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function findTextInFiles(query: TextSearchQuery, callback: (result: TextSearchResult) => void, token?: CancellationToken): Thenable<TextSearchComplete>;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Search text in files across all [workspace folders](#workspace.workspaceFolders) in the workspace.
|
|
|
|
|
|
* @param query The query parameters for the search - the search string, whether it's case-sensitive, or a regex, or matches whole words.
|
|
|
|
|
|
* @param options An optional set of query options. Include and exclude patterns, maxResults, etc.
|
|
|
|
|
|
* @param callback A callback, called for each result
|
|
|
|
|
|
* @param token A token that can be used to signal cancellation to the underlying search engine.
|
|
|
|
|
|
* @return A thenable that resolves when the search is complete.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function findTextInFiles(query: TextSearchQuery, options: FindTextInFilesOptions, callback: (result: TextSearchResult) => void, token?: CancellationToken): Thenable<TextSearchComplete>;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region Joao: diff command
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The contiguous set of modified lines in a diff.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface LineChange {
|
|
|
|
|
|
readonly originalStartLineNumber: number;
|
|
|
|
|
|
readonly originalEndLineNumber: number;
|
|
|
|
|
|
readonly modifiedStartLineNumber: number;
|
|
|
|
|
|
readonly modifiedEndLineNumber: number;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region Joh: decorations
|
|
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
export class Decoration {
|
2018-10-29 19:30:50 +01:00
|
|
|
|
letter?: string;
|
|
|
|
|
|
title?: string;
|
|
|
|
|
|
color?: ThemeColor;
|
|
|
|
|
|
priority?: number;
|
|
|
|
|
|
bubble?: boolean;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export interface DecorationProvider {
|
|
|
|
|
|
onDidChangeDecorations: Event<undefined | Uri | Uri[]>;
|
2019-10-09 17:29:14 +02:00
|
|
|
|
provideDecoration(uri: Uri, token: CancellationToken): ProviderResult<Decoration>;
|
2018-10-29 19:30:50 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export namespace window {
|
|
|
|
|
|
export function registerDecorationProvider(provider: DecorationProvider): Disposable;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region André: debug
|
|
|
|
|
|
|
2019-04-18 09:27:55 -07:00
|
|
|
|
// deprecated
|
2018-10-29 19:30:50 +01:00
|
|
|
|
|
|
|
|
|
|
export interface DebugConfigurationProvider {
|
|
|
|
|
|
/**
|
2019-04-18 09:27:55 -07:00
|
|
|
|
* Deprecated, use DebugAdapterDescriptorFactory.provideDebugAdapter instead.
|
|
|
|
|
|
* @deprecated Use DebugAdapterDescriptorFactory.createDebugAdapterDescriptor instead
|
2018-10-29 19:30:50 +01:00
|
|
|
|
*/
|
|
|
|
|
|
debugAdapterExecutable?(folder: WorkspaceFolder | undefined, token?: CancellationToken): ProviderResult<DebugAdapterExecutable>;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
/**
|
|
|
|
|
|
* Debug console mode used by debug session, see [options](#DebugSessionOptions).
|
|
|
|
|
|
*/
|
|
|
|
|
|
export enum DebugConsoleMode {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Debug session should have a separate debug console.
|
|
|
|
|
|
*/
|
|
|
|
|
|
Separate = 0,
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Debug session should share debug console with its parent session.
|
|
|
|
|
|
* This value has no effect for sessions which do not have a parent session.
|
|
|
|
|
|
*/
|
|
|
|
|
|
MergeWithParent = 1
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Options for [starting a debug session](#debug.startDebugging).
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface DebugSessionOptions {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* When specified the newly created debug session is registered as a "child" session of this
|
|
|
|
|
|
* "parent" debug session.
|
|
|
|
|
|
*/
|
|
|
|
|
|
parentSession?: DebugSession;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Controls whether this session should have a separate debug console or share it
|
|
|
|
|
|
* with the parent session. Has no effect for sessions which do not have a parent session.
|
|
|
|
|
|
* Defaults to Separate.
|
|
|
|
|
|
*/
|
|
|
|
|
|
consoleMode?: DebugConsoleMode;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export namespace debug {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Start debugging by using either a named launch or named compound configuration,
|
|
|
|
|
|
* or by directly passing a [DebugConfiguration](#DebugConfiguration).
|
|
|
|
|
|
* The named configurations are looked up in '.vscode/launch.json' found in the given folder.
|
|
|
|
|
|
* Before debugging starts, all unsaved files are saved and the launch configurations are brought up-to-date.
|
|
|
|
|
|
* Folder specific variables used in the configuration (e.g. '${workspaceFolder}') are resolved against the given folder.
|
|
|
|
|
|
* @param folder The [workspace folder](#WorkspaceFolder) for looking up named configurations and resolving variables or `undefined` for a non-folder setup.
|
|
|
|
|
|
* @param nameOrConfiguration Either the name of a debug or compound configuration or a [DebugConfiguration](#DebugConfiguration) object.
|
|
|
|
|
|
* @param parentSessionOrOptions Debug sesison options. When passed a parent [debug session](#DebugSession), assumes options with just this parent session.
|
|
|
|
|
|
* @return A thenable that resolves when debugging could be successfully started.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function startDebugging(folder: WorkspaceFolder | undefined, nameOrConfiguration: string | DebugConfiguration, parentSessionOrOptions?: DebugSession | DebugSessionOptions): Thenable<boolean>;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-10-29 19:30:50 +01:00
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region Rob, Matt: logging
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The severity level of a log message
|
|
|
|
|
|
*/
|
|
|
|
|
|
export enum LogLevel {
|
|
|
|
|
|
Trace = 1,
|
|
|
|
|
|
Debug = 2,
|
|
|
|
|
|
Info = 3,
|
|
|
|
|
|
Warning = 4,
|
|
|
|
|
|
Error = 5,
|
|
|
|
|
|
Critical = 6,
|
|
|
|
|
|
Off = 7
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export namespace env {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Current logging level.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const logLevel: LogLevel;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* An [event](#Event) that fires when the log level has changed.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const onDidChangeLogLevel: Event<LogLevel>;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region Joao: SCM validation
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Represents the validation type of the Source Control input.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export enum SourceControlInputBoxValidationType {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Something not allowed by the rules of a language or other means.
|
|
|
|
|
|
*/
|
|
|
|
|
|
Error = 0,
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Something suspicious but allowed.
|
|
|
|
|
|
*/
|
|
|
|
|
|
Warning = 1,
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Something to inform about but not a problem.
|
|
|
|
|
|
*/
|
|
|
|
|
|
Information = 2
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export interface SourceControlInputBoxValidation {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The validation message to display.
|
|
|
|
|
|
*/
|
|
|
|
|
|
readonly message: string;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The validation type.
|
|
|
|
|
|
*/
|
|
|
|
|
|
readonly type: SourceControlInputBoxValidationType;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Represents the input box in the Source Control viewlet.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface SourceControlInputBox {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A validation function for the input box. It's possible to change
|
|
|
|
|
|
* the validation provider simply by setting this property to a different function.
|
|
|
|
|
|
*/
|
|
|
|
|
|
validateInput?(value: string, cursorPosition: number): ProviderResult<SourceControlInputBoxValidation | undefined | null>;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region Joao: SCM selected provider
|
|
|
|
|
|
|
|
|
|
|
|
export interface SourceControl {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Whether the source control is selected.
|
|
|
|
|
|
*/
|
|
|
|
|
|
readonly selected: boolean;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* An event signaling when the selection state changes.
|
|
|
|
|
|
*/
|
|
|
|
|
|
readonly onDidChangeSelection: Event<boolean>;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region Joao: SCM Input Box
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Represents the input box in the Source Control viewlet.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface SourceControlInputBox {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2019-04-18 09:27:55 -07:00
|
|
|
|
* Controls whether the input box is visible (default is `true`).
|
|
|
|
|
|
*/
|
2018-10-29 19:30:50 +01:00
|
|
|
|
visible: boolean;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
2019-04-18 09:27:55 -07:00
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
//#region Terminal
|
2018-10-29 19:30:50 +01:00
|
|
|
|
|
|
|
|
|
|
/**
|
2019-10-09 17:29:14 +02:00
|
|
|
|
* An [event](#Event) which fires when a [Terminal](#Terminal)'s dimensions change.
|
2018-10-29 19:30:50 +01:00
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
export interface TerminalDimensionsChangeEvent {
|
2018-10-29 19:30:50 +01:00
|
|
|
|
/**
|
2019-10-09 17:29:14 +02:00
|
|
|
|
* The [terminal](#Terminal) for which the dimensions have changed.
|
2018-10-29 19:30:50 +01:00
|
|
|
|
*/
|
|
|
|
|
|
readonly terminal: Terminal;
|
|
|
|
|
|
/**
|
2019-10-09 17:29:14 +02:00
|
|
|
|
* The new value for the [terminal's dimensions](#Terminal.dimensions).
|
2018-10-29 19:30:50 +01:00
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
readonly dimensions: TerminalDimensions;
|
2018-10-29 19:30:50 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
export interface TerminalDataWriteEvent {
|
2018-10-29 19:30:50 +01:00
|
|
|
|
/**
|
2019-10-09 17:29:14 +02:00
|
|
|
|
* The [terminal](#Terminal) for which the data was written.
|
2018-10-29 19:30:50 +01:00
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
readonly terminal: Terminal;
|
2019-07-08 17:27:24 +02:00
|
|
|
|
/**
|
2019-10-09 17:29:14 +02:00
|
|
|
|
* The data being written.
|
2019-07-08 17:27:24 +02:00
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
readonly data: string;
|
2019-07-08 17:27:24 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
namespace window {
|
2019-07-08 17:27:24 +02:00
|
|
|
|
/**
|
2019-10-09 17:29:14 +02:00
|
|
|
|
* An event which fires when the [dimensions](#Terminal.dimensions) of the terminal change.
|
2019-07-08 17:27:24 +02:00
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
export const onDidChangeTerminalDimensions: Event<TerminalDimensionsChangeEvent>;
|
2019-07-08 17:27:24 +02:00
|
|
|
|
|
|
|
|
|
|
/**
|
2019-10-09 17:29:14 +02:00
|
|
|
|
* An event which fires when the terminal's pty slave pseudo-device is written to. In other
|
|
|
|
|
|
* words, this provides access to the raw data stream from the process running within the
|
|
|
|
|
|
* terminal, including VT sequences.
|
2019-07-08 17:27:24 +02:00
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
export const onDidWriteTerminalData: Event<TerminalDataWriteEvent>;
|
2019-07-08 17:27:24 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
export interface Terminal {
|
2019-07-08 17:27:24 +02:00
|
|
|
|
/**
|
2019-10-09 17:29:14 +02:00
|
|
|
|
* The current dimensions of the terminal. This will be `undefined` immediately after the
|
|
|
|
|
|
* terminal is created as the dimensions are not known until shortly after the terminal is
|
|
|
|
|
|
* created.
|
2019-07-08 17:27:24 +02:00
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
readonly dimensions: TerminalDimensions | undefined;
|
2019-07-08 17:27:24 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
2018-10-29 19:30:50 +01:00
|
|
|
|
//#region Joh -> exclusive document filters
|
|
|
|
|
|
|
|
|
|
|
|
export interface DocumentFilter {
|
|
|
|
|
|
exclusive?: boolean;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region mjbvz,joh: https://github.com/Microsoft/vscode/issues/43768
|
|
|
|
|
|
export interface FileRenameEvent {
|
|
|
|
|
|
readonly oldUri: Uri;
|
|
|
|
|
|
readonly newUri: Uri;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export interface FileWillRenameEvent {
|
|
|
|
|
|
readonly oldUri: Uri;
|
|
|
|
|
|
readonly newUri: Uri;
|
|
|
|
|
|
waitUntil(thenable: Thenable<WorkspaceEdit>): void;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export namespace workspace {
|
|
|
|
|
|
export const onWillRenameFile: Event<FileWillRenameEvent>;
|
|
|
|
|
|
export const onDidRenameFile: Event<FileRenameEvent>;
|
|
|
|
|
|
}
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region Alex - OnEnter enhancement
|
|
|
|
|
|
export interface OnEnterRule {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* This rule will only execute if the text above the this line matches this regular expression.
|
|
|
|
|
|
*/
|
|
|
|
|
|
oneLineAboveText?: RegExp;
|
|
|
|
|
|
}
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region Tree View
|
|
|
|
|
|
|
2019-04-18 09:27:55 -07:00
|
|
|
|
export interface TreeView<T> {
|
2019-10-09 17:29:14 +02:00
|
|
|
|
/**
|
|
|
|
|
|
* The tree view title is initially taken from the extension package.json
|
|
|
|
|
|
* Changes to the title property will be properly reflected in the UI in the title of the view.
|
|
|
|
|
|
*/
|
|
|
|
|
|
title?: string;
|
2018-10-29 19:30:50 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Label describing the [Tree item](#TreeItem)
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface TreeItemLabel {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A human-readable string describing the [Tree item](#TreeItem).
|
|
|
|
|
|
*/
|
|
|
|
|
|
label: string;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2019-04-18 09:27:55 -07:00
|
|
|
|
* Ranges in the label to highlight. A range is defined as a tuple of two number where the
|
|
|
|
|
|
* first is the inclusive start index and the second the exclusive end index
|
2018-10-29 19:30:50 +01:00
|
|
|
|
*/
|
|
|
|
|
|
highlights?: [number, number][];
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export class TreeItem2 extends TreeItem {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Label describing this item. When `falsy`, it is derived from [resourceUri](#TreeItem.resourceUri).
|
|
|
|
|
|
*/
|
|
|
|
|
|
label?: string | TreeItemLabel | /* for compilation */ any;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @param label Label describing this item
|
|
|
|
|
|
* @param collapsibleState [TreeItemCollapsibleState](#TreeItemCollapsibleState) of the tree item. Default is [TreeItemCollapsibleState.None](#TreeItemCollapsibleState.None)
|
|
|
|
|
|
*/
|
|
|
|
|
|
constructor(label: TreeItemLabel, collapsibleState?: TreeItemCollapsibleState);
|
|
|
|
|
|
}
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
//#region CustomExecution
|
2018-10-29 19:30:50 +01:00
|
|
|
|
/**
|
2019-04-18 09:27:55 -07:00
|
|
|
|
* Class used to execute an extension callback as a task.
|
2018-10-29 19:30:50 +01:00
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
export class CustomExecution2 {
|
2019-04-18 09:27:55 -07:00
|
|
|
|
/**
|
2019-10-09 17:29:14 +02:00
|
|
|
|
* Constructs a CustomExecution task object. The callback will be executed the task is run, at which point the
|
|
|
|
|
|
* extension should return the Pseudoterminal it will "run in". The task should wait to do further execution until
|
|
|
|
|
|
* [Pseudoterminal.open](#Pseudoterminal.open) is called. Task cancellation should be handled using
|
|
|
|
|
|
* [Pseudoterminal.close](#Pseudoterminal.close). When the task is complete fire
|
|
|
|
|
|
* [Pseudoterminal.onDidClose](#Pseudoterminal.onDidClose).
|
|
|
|
|
|
* @param process The [Pseudoterminal](#Pseudoterminal) to be used by the task to display output.
|
|
|
|
|
|
* @param callback The callback that will be called when the task is started by a user.
|
2019-04-18 09:27:55 -07:00
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
constructor(callback: () => Thenable<Pseudoterminal>);
|
2019-04-18 09:27:55 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A task to execute
|
|
|
|
|
|
*/
|
|
|
|
|
|
export class Task2 extends Task {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Creates a new task.
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param definition The task definition as defined in the taskDefinitions extension point.
|
|
|
|
|
|
* @param scope Specifies the task's scope. It is either a global or a workspace task or a task for a specific workspace folder.
|
|
|
|
|
|
* @param name The task's name. Is presented in the user interface.
|
|
|
|
|
|
* @param source The task's source (e.g. 'gulp', 'npm', ...). Is presented in the user interface.
|
|
|
|
|
|
* @param execution The process or shell execution.
|
|
|
|
|
|
* @param problemMatchers the names of problem matchers to use, like '$tsc'
|
|
|
|
|
|
* or '$eslint'. Problem matchers can be contributed by an extension using
|
|
|
|
|
|
* the `problemMatchers` extension point.
|
|
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
constructor(taskDefinition: TaskDefinition, scope: WorkspaceFolder | TaskScope.Global | TaskScope.Workspace, name: string, source: string, execution?: ProcessExecution | ShellExecution | CustomExecution2, problemMatchers?: string | string[]);
|
2019-04-18 09:27:55 -07:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The task's execution engine
|
|
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
execution2?: ProcessExecution | ShellExecution | CustomExecution2;
|
2019-04-18 09:27:55 -07:00
|
|
|
|
}
|
2019-10-09 17:29:14 +02:00
|
|
|
|
//#endregion
|
2019-04-18 09:27:55 -07:00
|
|
|
|
|
|
|
|
|
|
//#region Tasks
|
2018-10-29 19:30:50 +01:00
|
|
|
|
export interface TaskPresentationOptions {
|
|
|
|
|
|
/**
|
2019-04-18 09:27:55 -07:00
|
|
|
|
* Controls whether the task is executed in a specific terminal group using split panes.
|
2018-10-29 19:30:50 +01:00
|
|
|
|
*/
|
2019-04-18 09:27:55 -07:00
|
|
|
|
group?: string;
|
2018-10-29 19:30:50 +01:00
|
|
|
|
}
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
2019-07-08 17:27:24 +02:00
|
|
|
|
// #region Ben - status bar item with ID and Name
|
2019-04-18 09:27:55 -07:00
|
|
|
|
|
2019-07-08 17:27:24 +02:00
|
|
|
|
export namespace window {
|
2019-04-18 09:27:55 -07:00
|
|
|
|
|
|
|
|
|
|
/**
|
2019-07-08 17:27:24 +02:00
|
|
|
|
* Options to configure the status bar item.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export interface StatusBarItemOptions {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A unique identifier of the status bar item. The identifier
|
|
|
|
|
|
* is for example used to allow a user to show or hide the
|
|
|
|
|
|
* status bar item in the UI.
|
|
|
|
|
|
*/
|
|
|
|
|
|
id: string;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A human readable name of the status bar item. The name is
|
|
|
|
|
|
* for example used as a label in the UI to show or hide the
|
|
|
|
|
|
* status bar item.
|
|
|
|
|
|
*/
|
|
|
|
|
|
name: string;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The alignment of the status bar item.
|
|
|
|
|
|
*/
|
|
|
|
|
|
alignment?: StatusBarAlignment;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The priority of the status bar item. Higher value means the item should
|
|
|
|
|
|
* be shown more to the left.
|
|
|
|
|
|
*/
|
|
|
|
|
|
priority?: number;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Creates a status bar [item](#StatusBarItem).
|
2019-04-18 09:27:55 -07:00
|
|
|
|
*
|
2019-07-08 17:27:24 +02:00
|
|
|
|
* @param options The options of the item. If not provided, some default values
|
|
|
|
|
|
* will be assumed. For example, the `StatusBarItemOptions.id` will be the id
|
|
|
|
|
|
* of the extension and the `StatusBarItemOptions.name` will be the extension name.
|
|
|
|
|
|
* @return A new status bar item.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function createStatusBarItem(options?: StatusBarItemOptions): StatusBarItem;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
// #region Ben - extension auth flow (desktop+web)
|
|
|
|
|
|
|
|
|
|
|
|
export interface AppUriOptions {
|
|
|
|
|
|
payload?: {
|
|
|
|
|
|
path?: string;
|
|
|
|
|
|
query?: string;
|
|
|
|
|
|
fragment?: string;
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export namespace env {
|
2019-07-08 17:27:24 +02:00
|
|
|
|
|
|
|
|
|
|
/**
|
2019-10-09 17:29:14 +02:00
|
|
|
|
* Creates a Uri that - if opened in a browser - will result in a
|
|
|
|
|
|
* registered [UriHandler](#UriHandler) to fire. The handler's
|
|
|
|
|
|
* Uri will be configured with the path, query and fragment of
|
|
|
|
|
|
* [AppUriOptions](#AppUriOptions) if provided, otherwise it will be empty.
|
|
|
|
|
|
*
|
|
|
|
|
|
* Extensions should not make any assumptions about the resulting
|
|
|
|
|
|
* Uri and should not alter it in anyway. Rather, extensions can e.g.
|
|
|
|
|
|
* use this Uri in an authentication flow, by adding the Uri as
|
|
|
|
|
|
* callback query argument to the server to authenticate to.
|
2019-04-18 09:27:55 -07:00
|
|
|
|
*
|
2019-10-09 17:29:14 +02:00
|
|
|
|
* Note: If the server decides to add additional query parameters to the Uri
|
|
|
|
|
|
* (e.g. a token or secret), it will appear in the Uri that is passed
|
|
|
|
|
|
* to the [UriHandler](#UriHandler).
|
|
|
|
|
|
*
|
|
|
|
|
|
* **Example** of an authentication flow:
|
|
|
|
|
|
* ```typescript
|
|
|
|
|
|
* vscode.window.registerUriHandler({
|
|
|
|
|
|
* handleUri(uri: vscode.Uri): vscode.ProviderResult<void> {
|
|
|
|
|
|
* if (uri.path === '/did-authenticate') {
|
|
|
|
|
|
* console.log(uri.toString());
|
|
|
|
|
|
* }
|
|
|
|
|
|
* }
|
|
|
|
|
|
* });
|
|
|
|
|
|
*
|
|
|
|
|
|
* const callableUri = await vscode.env.createAppUri({ payload: { path: '/did-authenticate' } });
|
|
|
|
|
|
* await vscode.env.openExternal(callableUri);
|
|
|
|
|
|
* ```
|
2019-04-18 09:27:55 -07:00
|
|
|
|
*/
|
2019-10-09 17:29:14 +02:00
|
|
|
|
export function createAppUri(options?: AppUriOptions): Thenable<Uri>;
|
2019-04-18 09:27:55 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
// #region Ben - UIKind
|
2019-07-08 17:27:24 +02:00
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
/**
|
|
|
|
|
|
* Possible kinds of UI that can use extensions.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export enum UIKind {
|
2019-07-08 17:27:24 +02:00
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
/**
|
|
|
|
|
|
* Extensions are accessed from a desktop application.
|
|
|
|
|
|
*/
|
|
|
|
|
|
Desktop = 1,
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Extensions are accessed from a web browser.
|
|
|
|
|
|
*/
|
|
|
|
|
|
Web = 2
|
2019-07-08 17:27:24 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
export namespace env {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* The UI kind property indicates from which UI extensions
|
|
|
|
|
|
* are accessed from. For example, extensions could be accessed
|
|
|
|
|
|
* from a desktop application or a web browser.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export const uiKind: UIKind;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region Custom editors, mjbvz
|
|
|
|
|
|
|
|
|
|
|
|
export interface WebviewEditor extends WebviewPanel {
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export interface WebviewEditorProvider {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Fills out a `WebviewEditor` for a given resource.
|
|
|
|
|
|
*
|
|
|
|
|
|
* The provider should take ownership of passed in `editor`.
|
|
|
|
|
|
*/
|
|
|
|
|
|
resolveWebviewEditor(
|
|
|
|
|
|
resource: Uri,
|
|
|
|
|
|
editor: WebviewEditor
|
|
|
|
|
|
): Thenable<void>;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
namespace window {
|
|
|
|
|
|
export function registerWebviewEditorProvider(
|
|
|
|
|
|
viewType: string,
|
|
|
|
|
|
provider: WebviewEditorProvider,
|
|
|
|
|
|
): Disposable;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
// #region asExternalUri — mjbvz
|
2019-07-08 17:27:24 +02:00
|
|
|
|
|
2019-10-09 17:29:14 +02:00
|
|
|
|
namespace env {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Resolves an *external* uri, such as a `http:` or `https:` link, from where the extension is running to a
|
|
|
|
|
|
* uri to the same resource on the client machine.
|
|
|
|
|
|
*
|
|
|
|
|
|
* This is a no-op if the extension is running on the client machine. Currently only supports
|
|
|
|
|
|
* `https:` and `http:` uris.
|
|
|
|
|
|
*
|
|
|
|
|
|
* If the extension is running remotely, this function automatically establishes a port forwarding tunnel
|
|
|
|
|
|
* from the local machine to `target` on the remote and returns a local uri to the tunnel. The lifetime of
|
|
|
|
|
|
* the port fowarding tunnel is managed by VS Code and the tunnel can be closed by the user.
|
|
|
|
|
|
*
|
|
|
|
|
|
* Extensions should not cache the result of `asExternalUri` as the resolved uri may become invalid due to
|
|
|
|
|
|
* a system or user action — for example, in remote cases, a user may close a port forwardng tunnel
|
|
|
|
|
|
* that was opened by `asExternalUri`.
|
|
|
|
|
|
*
|
|
|
|
|
|
* Note: uris passed through `openExternal` are automatically resolved and you should not call `asExternalUri`
|
|
|
|
|
|
* on them.
|
|
|
|
|
|
*
|
|
|
|
|
|
* @return A uri that can be used on the client machine.
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function asExternalUri(target: Uri): Thenable<Uri>;
|
2019-07-08 17:27:24 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
}
|