/** * A tagging type for string properties that are actually URIs. */ export declare type DocumentUri = string; /** * Position in a text document expressed as zero-based line and character offset. * The offsets are based on a UTF-16 string representation. So a string of the form * `a𐐀b` the character offset of the character `a` is 0, the character offset of `𐐀` * is 1 and the character offset of b is 3 since `𐐀` is represented using two code * units in UTF-16. * * Positions are line end character agnostic. So you can not specify a position that * denotes `\r|\n` or `\n|` where `|` represents the character offset. */ export interface Position { /** * Line position in a document (zero-based). * If a line number is greater than the number of lines in a document, it defaults back to the number of lines in the document. * If a line number is negative, it defaults to 0. */ line: number; /** * Character offset on a line in a document (zero-based). Assuming that the line is * represented as a string, the `character` value represents the gap between the * `character` and `character + 1`. * * If the character value is greater than the line length it defaults back to the * line length. * If a line number is negative, it defaults to 0. */ character: number; } /** * The Position namespace provides helper functions to work with * [Position](#Position) literals. */ export declare namespace Position { /** * Creates a new Position literal from the given line and character. * @param line The position's line. * @param character The position's character. */ function create(line: number, character: number): Position; /** * Checks whether the given liternal conforms to the [Position](#Position) interface. */ function is(value: any): value is Position; } /** * A range in a text document expressed as (zero-based) start and end positions. * * If you want to specify a range that contains a line including the line ending * character(s) then use an end position denoting the start of the next line. * For example: * ```ts * { * start: { line: 5, character: 23 } * end : { line 6, character : 0 } * } * ``` */ export interface Range { /** * The range's start position */ start: Position; /** * The range's end position. */ end: Position; } /** * The Range namespace provides helper functions to work with * [Range](#Range) literals. */ export declare namespace Range { /** * Create a new Range liternal. * @param start The range's start position. * @param end The range's end position. */ function create(start: Position, end: Position): Range; /** * Create a new Range liternal. * @param startLine The start line number. * @param startCharacter The start character. * @param endLine The end line number. * @param endCharacter The end character. */ function create(startLine: number, startCharacter: number, endLine: number, endCharacter: number): Range; /** * Checks whether the given literal conforms to the [Range](#Range) interface. */ function is(value: any): value is Range; } /** * Represents a location inside a resource, such as a line * inside a text file. */ export interface Location { uri: DocumentUri; range: Range; } /** * The Location namespace provides helper functions to work with * [Location](#Location) literals. */ export declare namespace Location { /** * Creates a Location literal. * @param uri The location's uri. * @param range The location's range. */ function create(uri: DocumentUri, range: Range): Location; /** * Checks whether the given literal conforms to the [Location](#Location) interface. */ function is(value: any): value is Location; } /** * Represents the connection of two locations. Provides additional metadata over normal [locations](#Location), * including an origin range. */ export interface LocationLink { /** * Span of the origin of this link. * * Used as the underlined span for mouse definition hover. Defaults to the word range at * the definition position. */ originSelectionRange?: Range; /** * The target resource identifier of this link. */ targetUri: DocumentUri; /** * The full target range of this link. If the target for example is a symbol then target range is the * range enclosing this symbol not including leading/trailing whitespace but everything else * like comments. This information is typically used to highlight the range in the editor. */ targetRange: Range; /** * The range that should be selected and revealed when this link is being followed, e.g the name of a function. * Must be contained by the the `targetRange`. See also `DocumentSymbol#range` */ targetSelectionRange: Range; } /** * The LocationLink namespace provides helper functions to work with * [LocationLink](#LocationLink) literals. */ export declare namespace LocationLink { /** * Creates a LocationLink literal. * @param targetUri The definition's uri. * @param targetRange The full range of the definition. * @param targetSelectionRange The span of the symbol definition at the target. * @param originSelectionRange The span of the symbol being defined in the originating source file. */ function create(targetUri: DocumentUri, targetRange: Range, targetSelectionRange: Range, originSelectionRange?: Range): LocationLink; /** * Checks whether the given literal conforms to the [LocationLink](#LocationLink) interface. */ function is(value: any): value is LocationLink; } /** * Represents a color in RGBA space. */ export interface Color { /** * The red component of this color in the range [0-1]. */ readonly red: number; /** * The green component of this color in the range [0-1]. */ readonly green: number; /** * The blue component of this color in the range [0-1]. */ readonly blue: number; /** * The alpha component of this color in the range [0-1]. */ readonly alpha: number; } /** * The Color namespace provides helper functions to work with * [Color](#Color) literals. */ export declare namespace Color { /** * Creates a new Color literal. */ function create(red: number, green: number, blue: number, alpha: number): Color; /** * Checks whether the given literal conforms to the [Color](#Color) interface. */ function is(value: any): value is Color; } /** * Represents a color range from a document. */ export interface ColorInformation { /** * The range in the document where this color appers. */ range: Range; /** * The actual color value for this color range. */ color: Color; } /** * The ColorInformation namespace provides helper functions to work with * [ColorInformation](#ColorInformation) literals. */ export declare namespace ColorInformation { /** * Creates a new ColorInformation literal. */ function create(range: Range, color: Color): ColorInformation; /** * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface. */ function is(value: any): value is ColorInformation; } export interface ColorPresentation { /** * The label of this color presentation. It will be shown on the color * picker header. By default this is also the text that is inserted when selecting * this color presentation. */ label: string; /** * An [edit](#TextEdit) which is applied to a document when selecting * this presentation for the color. When `falsy` the [label](#ColorPresentation.label) * is used. */ textEdit?: TextEdit; /** * An optional array of additional [text edits](#TextEdit) that are applied when * selecting this color presentation. Edits must not overlap with the main [edit](#ColorPresentation.textEdit) nor with themselves. */ additionalTextEdits?: TextEdit[]; } /** * The Color namespace provides helper functions to work with * [ColorPresentation](#ColorPresentation) literals. */ export declare namespace ColorPresentation { /** * Creates a new ColorInformation literal. */ function create(label: string, textEdit?: TextEdit, additionalTextEdits?: TextEdit[]): ColorPresentation; /** * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface. */ function is(value: any): value is ColorPresentation; } /** * Enum of known range kinds */ export declare enum FoldingRangeKind { /** * Folding range for a comment */ Comment = "comment", /** * Folding range for a imports or includes */ Imports = "imports", /** * Folding range for a region (e.g. `#region`) */ Region = "region" } /** * Represents a folding range. */ export interface FoldingRange { /** * The zero-based line number from where the folded range starts. */ startLine: number; /** * The zero-based character offset from where the folded range starts. If not defined, defaults to the length of the start line. */ startCharacter?: number; /** * The zero-based line number where the folded range ends. */ endLine: number; /** * The zero-based character offset before the folded range ends. If not defined, defaults to the length of the end line. */ endCharacter?: number; /** * Describes the kind of the folding range such as `comment' or 'region'. The kind * is used to categorize folding ranges and used by commands like 'Fold all comments'. See * [FoldingRangeKind](#FoldingRangeKind) for an enumeration of standardized kinds. */ kind?: string; } /** * The folding range namespace provides helper functions to work with * [FoldingRange](#FoldingRange) literals. */ export declare namespace FoldingRange { /** * Creates a new FoldingRange literal. */ function create(startLine: number, endLine: number, startCharacter?: number, endCharacter?: number, kind?: string): FoldingRange; /** * Checks whether the given literal conforms to the [FoldingRange](#FoldingRange) interface. */ function is(value: any): value is FoldingRange; } /** * Represents a related message and source code location for a diagnostic. This should be * used to point to code locations that cause or related to a diagnostics, e.g when duplicating * a symbol in a scope. */ export interface DiagnosticRelatedInformation { /** * The location of this related diagnostic information. */ location: Location; /** * The message of this related diagnostic information. */ message: string; } /** * The DiagnosticRelatedInformation namespace provides helper functions to work with * [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) literals. */ export declare namespace DiagnosticRelatedInformation { /** * Creates a new DiagnosticRelatedInformation literal. */ function create(location: Location, message: string): DiagnosticRelatedInformation; /** * Checks whether the given literal conforms to the [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) interface. */ function is(value: any): value is DiagnosticRelatedInformation; } /** * The diagnostic's severity. */ export declare namespace DiagnosticSeverity { /** * Reports an error. */ const Error: 1; /** * Reports a warning. */ const Warning: 2; /** * Reports an information. */ const Information: 3; /** * Reports a hint. */ const Hint: 4; } export declare type DiagnosticSeverity = 1 | 2 | 3 | 4; /** * The diagnostic tags. * * @since 3.15.0 */ export declare namespace DiagnosticTag { /** * Unused or unnecessary code. * * Clients are allowed to render diagnostics with this tag faded out instead of having * an error squiggle. */ const Unnecessary: 1; /** * Deprecated or obsolete code. * * Clients are allowed to rendered diagnostics with this tag strike through. */ const Deprecated: 2; } export declare type DiagnosticTag = 1 | 2; /** * Represents a diagnostic, such as a compiler error or warning. Diagnostic objects * are only valid in the scope of a resource. */ export interface Diagnostic { /** * The range at which the message applies */ range: Range; /** * The diagnostic's severity. Can be omitted. If omitted it is up to the * client to interpret diagnostics as error, warning, info or hint. */ severity?: DiagnosticSeverity; /** * The diagnostic's code, which usually appear in the user interface. */ code?: number | string; /** * A human-readable string describing the source of this * diagnostic, e.g. 'typescript' or 'super lint'. It usually * appears in the user interface. */ source?: string; /** * The diagnostic's message. It usually appears in the user interface */ message: string; /** * Additional metadata about the diagnostic. */ tags?: DiagnosticTag[]; /** * An array of related diagnostic information, e.g. when symbol-names within * a scope collide all definitions can be marked via this property. */ relatedInformation?: DiagnosticRelatedInformation[]; } /** * The Diagnostic namespace provides helper functions to work with * [Diagnostic](#Diagnostic) literals. */ export declare namespace Diagnostic { /** * Creates a new Diagnostic literal. */ function create(range: Range, message: string, severity?: DiagnosticSeverity, code?: number | string, source?: string, relatedInformation?: DiagnosticRelatedInformation[]): Diagnostic; /** * Checks whether the given literal conforms to the [Diagnostic](#Diagnostic) interface. */ function is(value: any): value is Diagnostic; } /** * Represents a reference to a command. Provides a title which * will be used to represent a command in the UI and, optionally, * an array of arguments which will be passed to the command handler * function when invoked. */ export interface Command { /** * Title of the command, like `save`. */ title: string; /** * The identifier of the actual command handler. */ command: string; /** * Arguments that the command handler should be * invoked with. */ arguments?: any[]; } /** * The Command namespace provides helper functions to work with * [Command](#Command) literals. */ export declare namespace Command { /** * Creates a new Command literal. */ function create(title: string, command: string, ...args: any[]): Command; /** * Checks whether the given literal conforms to the [Command](#Command) interface. */ function is(value: any): value is Command; } /** * A text edit applicable to a text document. */ export interface TextEdit { /** * The range of the text document to be manipulated. To insert * text into a document create a range where start === end. */ range: Range; /** * The string to be inserted. For delete operations use an * empty string. */ newText: string; } /** * The TextEdit namespace provides helper function to create replace, * insert and delete edits more easily. */ export declare namespace TextEdit { /** * Creates a replace text edit. * @param range The range of text to be replaced. * @param newText The new text. */ function replace(range: Range, newText: string): TextEdit; /** * Creates a insert text edit. * @param position The position to insert the text at. * @param newText The text to be inserted. */ function insert(position: Position, newText: string): TextEdit; /** * Creates a delete text edit. * @param range The range of text to be deleted. */ function del(range: Range): TextEdit; function is(value: any): value is TextEdit; } /** * Describes textual changes on a text document. A TextDocumentEdit describes all changes * on a document version Si and after they are applied move the document to version Si+1. * So the creator of a TextDocumentEdit doesn't need to sort the array of edits or do any * kind of ordering. However the edits must be non overlapping. */ export interface TextDocumentEdit { /** * The text document to change. */ textDocument: VersionedTextDocumentIdentifier; /** * The edits to be applied. */ edits: TextEdit[]; } /** * The TextDocumentEdit namespace provides helper function to create * an edit that manipulates a text document. */ export declare namespace TextDocumentEdit { /** * Creates a new `TextDocumentEdit` */ function create(textDocument: VersionedTextDocumentIdentifier, edits: TextEdit[]): TextDocumentEdit; function is(value: any): value is TextDocumentEdit; } interface ResourceOperation { kind: string; } /** * Options to create a file. */ export interface CreateFileOptions { /** * Overwrite existing file. Overwrite wins over `ignoreIfExists` */ overwrite?: boolean; /** * Ignore if exists. */ ignoreIfExists?: boolean; } /** * Create file operation. */ export interface CreateFile extends ResourceOperation { /** * A create */ kind: 'create'; /** * The resource to create. */ uri: DocumentUri; /** * Additional options */ options?: CreateFileOptions; } export declare namespace CreateFile { function create(uri: DocumentUri, options?: CreateFileOptions): CreateFile; function is(value: any): value is CreateFile; } /** * Rename file options */ export interface RenameFileOptions { /** * Overwrite target if existing. Overwrite wins over `ignoreIfExists` */ overwrite?: boolean; /** * Ignores if target exists. */ ignoreIfExists?: boolean; } /** * Rename file operation */ export interface RenameFile extends ResourceOperation { /** * A rename */ kind: 'rename'; /** * The old (existing) location. */ oldUri: DocumentUri; /** * The new location. */ newUri: DocumentUri; /** * Rename options. */ options?: RenameFileOptions; } export declare namespace RenameFile { function create(oldUri: DocumentUri, newUri: DocumentUri, options?: RenameFileOptions): RenameFile; function is(value: any): value is RenameFile; } /** * Delete file options */ export interface DeleteFileOptions { /** * Delete the content recursively if a folder is denoted. */ recursive?: boolean; /** * Ignore the operation if the file doesn't exist. */ ignoreIfNotExists?: boolean; } /** * Delete file operation */ export interface DeleteFile extends ResourceOperation { /** * A delete */ kind: 'delete'; /** * The file to delete. */ uri: DocumentUri; /** * Delete options. */ options?: DeleteFileOptions; } export declare namespace DeleteFile { function create(uri: DocumentUri, options?: DeleteFileOptions): DeleteFile; function is(value: any): value is DeleteFile; } /** * A workspace edit represents changes to many resources managed in the workspace. The edit * should either provide `changes` or `documentChanges`. If documentChanges are present * they are preferred over `changes` if the client can handle versioned document edits. */ export interface WorkspaceEdit { /** * Holds changes to existing resources. */ changes?: { [uri: string]: TextEdit[]; }; /** * Depending on the client capability `workspace.workspaceEdit.resourceOperations` document changes * are either an array of `TextDocumentEdit`s to express changes to n different text documents * where each text document edit addresses a specific version of a text document. Or it can contain * above `TextDocumentEdit`s mixed with create, rename and delete file / folder operations. * * Whether a client supports versioned document edits is expressed via * `workspace.workspaceEdit.documentChanges` client capability. * * If a client neither supports `documentChanges` nor `workspace.workspaceEdit.resourceOperations` then * only plain `TextEdit`s using the `changes` property are supported. */ documentChanges?: (TextDocumentEdit | CreateFile | RenameFile | DeleteFile)[]; } export declare namespace WorkspaceEdit { function is(value: any): value is WorkspaceEdit; } /** * A change to capture text edits for existing resources. */ export interface TextEditChange { /** * Gets all text edits for this change. * * @return An array of text edits. */ all(): TextEdit[]; /** * Clears the edits for this change. */ clear(): void; /** * Adds a text edit. * @param edit the text edit to add. */ add(edit: TextEdit): void; /** * Insert the given text at the given position. * * @param position A position. * @param newText A string. */ insert(position: Position, newText: string): void; /** * Replace the given range with given text for the given resource. * * @param range A range. * @param newText A string. */ replace(range: Range, newText: string): void; /** * Delete the text at the given range. * * @param range A range. */ delete(range: Range): void; } /** * A workspace change helps constructing changes to a workspace. */ export declare class WorkspaceChange { private _workspaceEdit; private _textEditChanges; constructor(workspaceEdit?: WorkspaceEdit); /** * Returns the underlying [WorkspaceEdit](#WorkspaceEdit) literal * use to be returned from a workspace edit operation like rename. */ get edit(): WorkspaceEdit; /** * Returns the [TextEditChange](#TextEditChange) to manage text edits * for resources. */ getTextEditChange(textDocument: VersionedTextDocumentIdentifier): TextEditChange; getTextEditChange(uri: DocumentUri): TextEditChange; createFile(uri: DocumentUri, options?: CreateFileOptions): void; renameFile(oldUri: DocumentUri, newUri: DocumentUri, options?: RenameFileOptions): void; deleteFile(uri: DocumentUri, options?: DeleteFileOptions): void; private checkDocumentChanges; } /** * A literal to identify a text document in the client. */ export interface TextDocumentIdentifier { /** * The text document's uri. */ uri: DocumentUri; } /** * The TextDocumentIdentifier namespace provides helper functions to work with * [TextDocumentIdentifier](#TextDocumentIdentifier) literals. */ export declare namespace TextDocumentIdentifier { /** * Creates a new TextDocumentIdentifier literal. * @param uri The document's uri. */ function create(uri: DocumentUri): TextDocumentIdentifier; /** * Checks whether the given literal conforms to the [TextDocumentIdentifier](#TextDocumentIdentifier) interface. */ function is(value: any): value is TextDocumentIdentifier; } /** * An identifier to denote a specific version of a text document. */ export interface VersionedTextDocumentIdentifier extends TextDocumentIdentifier { /** * The version number of this document. If a versioned text document identifier * is sent from the server to the client and the file is not open in the editor * (the server has not received an open notification before) the server can send * `null` to indicate that the version is unknown and the content on disk is the * truth (as speced with document content ownership). */ version: number | null; } /** * The VersionedTextDocumentIdentifier namespace provides helper functions to work with * [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) literals. */ export declare namespace VersionedTextDocumentIdentifier { /** * Creates a new VersionedTextDocumentIdentifier literal. * @param uri The document's uri. * @param uri The document's text. */ function create(uri: DocumentUri, version: number | null): VersionedTextDocumentIdentifier; /** * Checks whether the given literal conforms to the [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) interface. */ function is(value: any): value is VersionedTextDocumentIdentifier; } /** * An item to transfer a text document from the client to the * server. */ export interface TextDocumentItem { /** * The text document's uri. */ uri: DocumentUri; /** * The text document's language identifier */ languageId: string; /** * The version number of this document (it will increase after each * change, including undo/redo). */ version: number; /** * The content of the opened text document. */ text: string; } /** * The TextDocumentItem namespace provides helper functions to work with * [TextDocumentItem](#TextDocumentItem) literals. */ export declare namespace TextDocumentItem { /** * Creates a new TextDocumentItem literal. * @param uri The document's uri. * @param languageId The document's language identifier. * @param version The document's version number. * @param text The document's text. */ function create(uri: DocumentUri, languageId: string, version: number, text: string): TextDocumentItem; /** * Checks whether the given literal conforms to the [TextDocumentItem](#TextDocumentItem) interface. */ function is(value: any): value is TextDocumentItem; } /** * Describes the content type that a client supports in various * result literals like `Hover`, `ParameterInfo` or `CompletionItem`. * * Please note that `MarkupKinds` must not start with a `$`. This kinds * are reserved for internal usage. */ export declare namespace MarkupKind { /** * Plain text is supported as a content format */ const PlainText: 'plaintext'; /** * Markdown is supported as a content format */ const Markdown: 'markdown'; } export declare type MarkupKind = 'plaintext' | 'markdown'; export declare namespace MarkupKind { /** * Checks whether the given value is a value of the [MarkupKind](#MarkupKind) type. */ function is(value: any): value is MarkupKind; } /** * A `MarkupContent` literal represents a string value which content is interpreted base on its * kind flag. Currently the protocol supports `plaintext` and `markdown` as markup kinds. * * If the kind is `markdown` then the value can contain fenced code blocks like in GitHub issues. * See https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting * * Here is an example how such a string can be constructed using JavaScript / TypeScript: * ```ts * let markdown: MarkdownContent = { * kind: MarkupKind.Markdown, * value: [ * '# Header', * 'Some text', * '```typescript', * 'someCode();', * '```' * ].join('\n') * }; * ``` * * *Please Note* that clients might sanitize the return markdown. A client could decide to * remove HTML from the markdown to avoid script execution. */ export interface MarkupContent { /** * The type of the Markup */ kind: MarkupKind; /** * The content itself */ value: string; } export declare namespace MarkupContent { /** * Checks whether the given value conforms to the [MarkupContent](#MarkupContent) interface. */ function is(value: any): value is MarkupContent; } /** * The kind of a completion entry. */ export declare namespace CompletionItemKind { const Text: 1; const Method: 2; const Function: 3; const Constructor: 4; const Field: 5; const Variable: 6; const Class: 7; const Interface: 8; const Module: 9; const Property: 10; const Unit: 11; const Value: 12; const Enum: 13; const Keyword: 14; const Snippet: 15; const Color: 16; const File: 17; const Reference: 18; const Folder: 19; const EnumMember: 20; const Constant: 21; const Struct: 22; const Event: 23; const Operator: 24; const TypeParameter: 25; } export declare type CompletionItemKind = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25; /** * Defines whether the insert text in a completion item should be interpreted as * plain text or a snippet. */ export declare namespace InsertTextFormat { /** * The primary text to be inserted is treated as a plain string. */ const PlainText: 1; /** * The primary text to be inserted is treated as a snippet. * * A snippet can define tab stops and placeholders with `$1`, `$2` * and `${3:foo}`. `$0` defines the final tab stop, it defaults to * the end of the snippet. Placeholders with equal identifiers are linked, * that is typing in one will update others too. * * See also: https://github.com/Microsoft/vscode/blob/master/src/vs/editor/contrib/snippet/common/snippet.md */ const Snippet: 2; } export declare type InsertTextFormat = 1 | 2; /** * Completion item tags are extra annotations that tweak the rendering of a completion * item. * * @since 3.15.0 */ export declare namespace CompletionItemTag { /** * Render a completion as obsolete, usually using a strike-out. */ const Deprecated = 1; } export declare type CompletionItemTag = 1; /** * A completion item represents a text snippet that is * proposed to complete text that is being typed. */ export interface CompletionItem { /** * The label of this completion item. By default * also the text that is inserted when selecting * this completion. */ label: string; /** * The kind of this completion item. Based of the kind * an icon is chosen by the editor. */ kind?: CompletionItemKind; /** * Tags for this completion item. * * @since 3.15.0 */ tags?: CompletionItemTag[]; /** * A human-readable string with additional information * about this item, like type or symbol information. */ detail?: string; /** * A human-readable string that represents a doc-comment. */ documentation?: string | MarkupContent; /** * Indicates if this item is deprecated. * @deprecated Use `tags` instead. */ deprecated?: boolean; /** * Select this item when showing. * * *Note* that only one completion item can be selected and that the * tool / client decides which item that is. The rule is that the *first* * item of those that match best is selected. */ preselect?: boolean; /** * A string that should be used when comparing this item * with other items. When `falsy` the [label](#CompletionItem.label) * is used. */ sortText?: string; /** * A string that should be used when filtering a set of * completion items. When `falsy` the [label](#CompletionItem.label) * is used. */ filterText?: string; /** * A string that should be inserted into a document when selecting * this completion. When `falsy` the [label](#CompletionItem.label) * is used. * * The `insertText` is subject to interpretation by the client side. * Some tools might not take the string literally. For example * VS Code when code complete is requested in this example `con` * and a completion item with an `insertText` of `console` is provided it * will only insert `sole`. Therefore it is recommended to use `textEdit` instead * since it avoids additional client side interpretation. */ insertText?: string; /** * The format of the insert text. The format applies to both the `insertText` property * and the `newText` property of a provided `textEdit`. If ommitted defaults to * `InsertTextFormat.PlainText`. */ insertTextFormat?: InsertTextFormat; /** * An [edit](#TextEdit) which is applied to a document when selecting * this completion. When an edit is provided the value of * [insertText](#CompletionItem.insertText) is ignored. * * *Note:* The text edit's range must be a [single line] and it must contain the position * at which completion has been requested. */ textEdit?: TextEdit; /** * An optional array of additional [text edits](#TextEdit) that are applied when * selecting this completion. Edits must not overlap (including the same insert position) * with the main [edit](#CompletionItem.textEdit) nor with themselves. * * Additional text edits should be used to change text unrelated to the current cursor position * (for example adding an import statement at the top of the file if the completion item will * insert an unqualified type). */ additionalTextEdits?: TextEdit[]; /** * An optional set of characters that when pressed while this completion is active will accept it first and * then type that character. *Note* that all commit characters should have `length=1` and that superfluous * characters will be ignored. */ commitCharacters?: string[]; /** * An optional [command](#Command) that is executed *after* inserting this completion. *Note* that * additional modifications to the current document should be described with the * [additionalTextEdits](#CompletionItem.additionalTextEdits)-property. */ command?: Command; /** * An data entry field that is preserved on a completion item between * a [CompletionRequest](#CompletionRequest) and a [CompletionResolveRequest] * (#CompletionResolveRequest) */ data?: any; } /** * The CompletionItem namespace provides functions to deal with * completion items. */ export declare namespace CompletionItem { /** * Create a completion item and seed it with a label. * @param label The completion item's label */ function create(label: string): CompletionItem; } /** * Represents a collection of [completion items](#CompletionItem) to be presented * in the editor. */ export interface CompletionList { /** * This list it not complete. Further typing results in recomputing this list. */ isIncomplete: boolean; /** * The completion items. */ items: CompletionItem[]; } /** * The CompletionList namespace provides functions to deal with * completion lists. */ export declare namespace CompletionList { /** * Creates a new completion list. * * @param items The completion items. * @param isIncomplete The list is not complete. */ function create(items?: CompletionItem[], isIncomplete?: boolean): CompletionList; } /** * MarkedString can be used to render human readable text. It is either a markdown string * or a code-block that provides a language and a code snippet. The language identifier * is semantically equal to the optional language identifier in fenced code blocks in GitHub * issues. See https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting * * The pair of a language and a value is an equivalent to markdown: * ```${language} * ${value} * ``` * * Note that markdown strings will be sanitized - that means html will be escaped. * @deprecated use MarkupContent instead. */ export declare type MarkedString = string | { language: string; value: string; }; export declare namespace MarkedString { /** * Creates a marked string from plain text. * * @param plainText The plain text. */ function fromPlainText(plainText: string): string; /** * Checks whether the given value conforms to the [MarkedString](#MarkedString) type. */ function is(value: any): value is MarkedString; } /** * The result of a hover request. */ export interface Hover { /** * The hover's content */ contents: MarkupContent | MarkedString | MarkedString[]; /** * An optional range */ range?: Range; } export declare namespace Hover { /** * Checks whether the given value conforms to the [Hover](#Hover) interface. */ function is(value: any): value is Hover; } /** * Represents a parameter of a callable-signature. A parameter can * have a label and a doc-comment. */ export interface ParameterInformation { /** * The label of this parameter information. * * Either a string or an inclusive start and exclusive end offsets within its containing * signature label. (see SignatureInformation.label). The offsets are based on a UTF-16 * string representation as `Position` and `Range` does. * * *Note*: a label of type string should be a substring of its containing signature label. * Its intended use case is to highlight the parameter label part in the `SignatureInformation.label`. */ label: string | [number, number]; /** * The human-readable doc-comment of this signature. Will be shown * in the UI but can be omitted. */ documentation?: string | MarkupContent; } /** * The ParameterInformation namespace provides helper functions to work with * [ParameterInformation](#ParameterInformation) literals. */ export declare namespace ParameterInformation { /** * Creates a new parameter information literal. * * @param label A label string. * @param documentation A doc string. */ function create(label: string | [number, number], documentation?: string): ParameterInformation; } /** * Represents the signature of something callable. A signature * can have a label, like a function-name, a doc-comment, and * a set of parameters. */ export interface SignatureInformation { /** * The label of this signature. Will be shown in * the UI. */ label: string; /** * The human-readable doc-comment of this signature. Will be shown * in the UI but can be omitted. */ documentation?: string | MarkupContent; /** * The parameters of this signature. */ parameters?: ParameterInformation[]; } /** * The SignatureInformation namespace provides helper functions to work with * [SignatureInformation](#SignatureInformation) literals. */ export declare namespace SignatureInformation { function create(label: string, documentation?: string, ...parameters: ParameterInformation[]): SignatureInformation; } /** * Signature help represents the signature of something * callable. There can be multiple signature but only one * active and only one active parameter. */ export interface SignatureHelp { /** * One or more signatures. */ signatures: SignatureInformation[]; /** * The active signature. Set to `null` if no * signatures exist. */ activeSignature: number | null; /** * The active parameter of the active signature. Set to `null` * if the active signature has no parameters. */ activeParameter: number | null; } /** * The definition of a symbol represented as one or many [locations](#Location). * For most programming languages there is only one location at which a symbol is * defined. * * Servers should prefer returning `DefinitionLink` over `Definition` if supported * by the client. */ export declare type Definition = Location | Location[]; /** * Information about where a symbol is defined. * * Provides additional metadata over normal [location](#Location) definitions, including the range of * the defining symbol */ export declare type DefinitionLink = LocationLink; /** * The declaration of a symbol representation as one or many [locations](#Location). */ export declare type Declaration = Location | Location[]; /** * Information about where a symbol is declared. * * Provides additional metadata over normal [location](#Location) declarations, including the range of * the declaring symbol. * * Servers should prefer returning `DeclarationLink` over `Declaration` if supported * by the client. */ export declare type DeclarationLink = LocationLink; /** * Value-object that contains additional information when * requesting references. */ export interface ReferenceContext { /** * Include the declaration of the current symbol. */ includeDeclaration: boolean; } /** * A document highlight kind. */ export declare namespace DocumentHighlightKind { /** * A textual occurrence. */ const Text: 1; /** * Read-access of a symbol, like reading a variable. */ const Read: 2; /** * Write-access of a symbol, like writing to a variable. */ const Write: 3; } export declare type DocumentHighlightKind = 1 | 2 | 3; /** * A document highlight is a range inside a text document which deserves * special attention. Usually a document highlight is visualized by changing * the background color of its range. */ export interface DocumentHighlight { /** * The range this highlight applies to. */ range: Range; /** * The highlight kind, default is [text](#DocumentHighlightKind.Text). */ kind?: DocumentHighlightKind; } /** * DocumentHighlight namespace to provide helper functions to work with * [DocumentHighlight](#DocumentHighlight) literals. */ export declare namespace DocumentHighlight { /** * Create a DocumentHighlight object. * @param range The range the highlight applies to. */ function create(range: Range, kind?: DocumentHighlightKind): DocumentHighlight; } /** * A symbol kind. */ export declare namespace SymbolKind { const File: 1; const Module: 2; const Namespace: 3; const Package: 4; const Class: 5; const Method: 6; const Property: 7; const Field: 8; const Constructor: 9; const Enum: 10; const Interface: 11; const Function: 12; const Variable: 13; const Constant: 14; const String: 15; const Number: 16; const Boolean: 17; const Array: 18; const Object: 19; const Key: 20; const Null: 21; const EnumMember: 22; const Struct: 23; const Event: 24; const Operator: 25; const TypeParameter: 26; } export declare type SymbolKind = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26; /** * Symbol tags are extra annotations that tweak the rendering of a symbol. * @since 3.15 */ export declare namespace SymbolTag { /** * Render a symbol as obsolete, usually using a strike-out. */ const Deprecated: 1; } export declare type SymbolTag = 1; /** * Represents information about programming constructs like variables, classes, * interfaces etc. */ export interface SymbolInformation { /** * The name of this symbol. */ name: string; /** * The kind of this symbol. */ kind: SymbolKind; /** * Indicates if this symbol is deprecated. */ deprecated?: boolean; /** * The location of this symbol. The location's range is used by a tool * to reveal the location in the editor. If the symbol is selected in the * tool the range's start information is used to position the cursor. So * the range usually spans more than the actual symbol's name and does * normally include thinks like visibility modifiers. * * The range doesn't have to denote a node range in the sense of a abstract * syntax tree. It can therefore not be used to re-construct a hierarchy of * the symbols. */ location: Location; /** * The name of the symbol containing this symbol. This information is for * user interface purposes (e.g. to render a qualifier in the user interface * if necessary). It can't be used to re-infer a hierarchy for the document * symbols. */ containerName?: string; } export declare namespace SymbolInformation { /** * Creates a new symbol information literal. * * @param name The name of the symbol. * @param kind The kind of the symbol. * @param range The range of the location of the symbol. * @param uri The resource of the location of symbol, defaults to the current document. * @param containerName The name of the symbol containing the symbol. */ function create(name: string, kind: SymbolKind, range: Range, uri?: string, containerName?: string): SymbolInformation; } /** * Represents programming constructs like variables, classes, interfaces etc. * that appear in a document. Document symbols can be hierarchical and they * have two ranges: one that encloses its definition and one that points to * its most interesting range, e.g. the range of an identifier. */ export interface DocumentSymbol { /** * The name of this symbol. Will be displayed in the user interface and therefore must not be * an empty string or a string only consisting of white spaces. */ name: string; /** * More detail for this symbol, e.g the signature of a function. */ detail?: string; /** * The kind of this symbol. */ kind: SymbolKind; /** * Indicates if this symbol is deprecated. */ deprecated?: boolean; /** * The range enclosing this symbol not including leading/trailing whitespace but everything else * like comments. This information is typically used to determine if the the clients cursor is * inside the symbol to reveal in the symbol in the UI. */ range: Range; /** * The range that should be selected and revealed when this symbol is being picked, e.g the name of a function. * Must be contained by the the `range`. */ selectionRange: Range; /** * Children of this symbol, e.g. properties of a class. */ children?: DocumentSymbol[]; } export declare namespace DocumentSymbol { /** * Creates a new symbol information literal. * * @param name The name of the symbol. * @param detail The detail of the symbol. * @param kind The kind of the symbol. * @param range The range of the symbol. * @param selectionRange The selectionRange of the symbol. * @param children Children of the symbol. */ function create(name: string, detail: string | undefined, kind: SymbolKind, range: Range, selectionRange: Range, children?: DocumentSymbol[]): DocumentSymbol; /** * Checks whether the given literal conforms to the [DocumentSymbol](#DocumentSymbol) interface. */ function is(value: any): value is DocumentSymbol; } /** * The kind of a code action. * * Kinds are a hierarchical list of identifiers separated by `.`, e.g. `"refactor.extract.function"`. * * The set of kinds is open and client needs to announce the kinds it supports to the server during * initialization. */ export declare type CodeActionKind = string; /** * A set of predefined code action kinds */ export declare namespace CodeActionKind { /** * Empty kind. */ const Empty: CodeActionKind; /** * Base kind for quickfix actions: 'quickfix' */ const QuickFix: CodeActionKind; /** * Base kind for refactoring actions: 'refactor' */ const Refactor: CodeActionKind; /** * Base kind for refactoring extraction actions: 'refactor.extract' * * Example extract actions: * * - Extract method * - Extract function * - Extract variable * - Extract interface from class * - ... */ const RefactorExtract: CodeActionKind; /** * Base kind for refactoring inline actions: 'refactor.inline' * * Example inline actions: * * - Inline function * - Inline variable * - Inline constant * - ... */ const RefactorInline: CodeActionKind; /** * Base kind for refactoring rewrite actions: 'refactor.rewrite' * * Example rewrite actions: * * - Convert JavaScript function to class * - Add or remove parameter * - Encapsulate field * - Make method static * - Move method to base class * - ... */ const RefactorRewrite: CodeActionKind; /** * Base kind for source actions: `source` * * Source code actions apply to the entire file. */ const Source: CodeActionKind; /** * Base kind for an organize imports source action: `source.organizeImports` */ const SourceOrganizeImports: CodeActionKind; /** * Base kind for auto-fix source actions: `source.fixAll`. * * Fix all actions automatically fix errors that have a clear fix that do not require user input. * They should not suppress errors or perform unsafe fixes such as generating new types or classes. * * @since 3.15.0 */ const SourceFixAll: CodeActionKind; } /** * Contains additional diagnostic information about the context in which * a [code action](#CodeActionProvider.provideCodeActions) is run. */ export interface CodeActionContext { /** * An array of diagnostics known on the client side overlapping the range provided to the * `textDocument/codeAction` request. They are provied so that the server knows which * errors are currently presented to the user for the given range. There is no guarantee * that these accurately reflect the error state of the resource. The primary parameter * to compute code actions is the provided range. */ diagnostics: Diagnostic[]; /** * Requested kind of actions to return. * * Actions not of this kind are filtered out by the client before being shown. So servers * can omit computing them. */ only?: CodeActionKind[]; } /** * The CodeActionContext namespace provides helper functions to work with * [CodeActionContext](#CodeActionContext) literals. */ export declare namespace CodeActionContext { /** * Creates a new CodeActionContext literal. */ function create(diagnostics: Diagnostic[], only?: CodeActionKind[]): CodeActionContext; /** * Checks whether the given literal conforms to the [CodeActionContext](#CodeActionContext) interface. */ function is(value: any): value is CodeActionContext; } /** * A code action represents a change that can be performed in code, e.g. to fix a problem or * to refactor code. * * A CodeAction must set either `edit` and/or a `command`. If both are supplied, the `edit` is applied first, then the `command` is executed. */ export interface CodeAction { /** * A short, human-readable, title for this code action. */ title: string; /** * The kind of the code action. * * Used to filter code actions. */ kind?: CodeActionKind; /** * The diagnostics that this code action resolves. */ diagnostics?: Diagnostic[]; /** * Marks this as a preferred action. Preferred actions are used by the `auto fix` command and can be targeted * by keybindings. * * A quick fix should be marked preferred if it properly addresses the underlying error. * A refactoring should be marked preferred if it is the most reasonable choice of actions to take. * * @since 3.15.0 */ isPreferred?: boolean; /** * The workspace edit this code action performs. */ edit?: WorkspaceEdit; /** * A command this code action executes. If a code action * provides a edit and a command, first the edit is * executed and then the command. */ command?: Command; } export declare namespace CodeAction { /** * Creates a new code action. * * @param title The title of the code action. * @param command The command to execute. * @param kind The kind of the code action. */ function create(title: string, command: Command, kind?: CodeActionKind): CodeAction; /** * Creates a new code action. * * @param title The title of the code action. * @param command The command to execute. * @param kind The kind of the code action. */ function create(title: string, edit: WorkspaceEdit, kind?: CodeActionKind): CodeAction; function is(value: any): value is CodeAction; } /** * A code lens represents a [command](#Command) that should be shown along with * source text, like the number of references, a way to run tests, etc. * * A code lens is _unresolved_ when no command is associated to it. For performance * reasons the creation of a code lens and resolving should be done to two stages. */ export interface CodeLens { /** * The range in which this code lens is valid. Should only span a single line. */ range: Range; /** * The command this code lens represents. */ command?: Command; /** * An data entry field that is preserved on a code lens item between * a [CodeLensRequest](#CodeLensRequest) and a [CodeLensResolveRequest] * (#CodeLensResolveRequest) */ data?: any; } /** * The CodeLens namespace provides helper functions to work with * [CodeLens](#CodeLens) literals. */ export declare namespace CodeLens { /** * Creates a new CodeLens literal. */ function create(range: Range, data?: any): CodeLens; /** * Checks whether the given literal conforms to the [CodeLens](#CodeLens) interface. */ function is(value: any): value is CodeLens; } /** * Value-object describing what options formatting should use. */ export interface FormattingOptions { /** * Size of a tab in spaces. */ tabSize: number; /** * Prefer spaces over tabs. */ insertSpaces: boolean; /** * Trim trailing whitespaces on a line. * * @since 3.15.0 */ trimTrailingWhitespace?: boolean; /** * Insert a newline character at the end of the file if one does not exist. * * @since 3.15.0 */ insertFinalNewline?: boolean; /** * Trim all newlines after the final newline at the end of the file. * * @since 3.15.0 */ trimFinalNewlines?: boolean; /** * Signature for further properties. */ [key: string]: boolean | number | string | undefined; } /** * The FormattingOptions namespace provides helper functions to work with * [FormattingOptions](#FormattingOptions) literals. */ export declare namespace FormattingOptions { /** * Creates a new FormattingOptions literal. */ function create(tabSize: number, insertSpaces: boolean): FormattingOptions; /** * Checks whether the given literal conforms to the [FormattingOptions](#FormattingOptions) interface. */ function is(value: any): value is FormattingOptions; } /** * A document link is a range in a text document that links to an internal or external resource, like another * text document or a web site. */ export interface DocumentLink { /** * The range this link applies to. */ range: Range; /** * The uri this link points to. */ target?: string; /** * The tooltip text when you hover over this link. * * If a tooltip is provided, is will be displayed in a string that includes instructions on how to * trigger the link, such as `{0} (ctrl + click)`. The specific instructions vary depending on OS, * user settings, and localization. * * @since 3.15.0 */ tooltip?: string; /** * A data entry field that is preserved on a document link between a * DocumentLinkRequest and a DocumentLinkResolveRequest. */ data?: any; } /** * The DocumentLink namespace provides helper functions to work with * [DocumentLink](#DocumentLink) literals. */ export declare namespace DocumentLink { /** * Creates a new DocumentLink literal. */ function create(range: Range, target?: string, data?: any): DocumentLink; /** * Checks whether the given literal conforms to the [DocumentLink](#DocumentLink) interface. */ function is(value: any): value is DocumentLink; } /** * A selection range represents a part of a selection hierarchy. A selection range * may have a parent selection range that contains it. */ export interface SelectionRange { /** * The [range](#Range) of this selection range. */ range: Range; /** * The parent selection range containing this range. Therefore `parent.range` must contain `this.range`. */ parent?: SelectionRange; } /** * The SelectionRange namespace provides helper function to work with * SelectionRange literals. */ export declare namespace SelectionRange { /** * Creates a new SelectionRange * @param range the range. * @param parent an optional parent. */ function create(range: Range, parent?: SelectionRange): SelectionRange; function is(value: any): value is SelectionRange; } export declare const EOL: string[]; /** * A simple text document. Not to be implemented. The document keeps the content * as string. * * @deprecated Use the text document from the new vscode-languageserver-textdocument package. */ export interface TextDocument { /** * The associated URI for this document. Most documents have the __file__-scheme, indicating that they * represent files on disk. However, some documents may have other schemes indicating that they are not * available on disk. * * @readonly */ readonly uri: DocumentUri; /** * The identifier of the language associated with this document. * * @readonly */ readonly languageId: string; /** * The version number of this document (it will increase after each * change, including undo/redo). * * @readonly */ readonly version: number; /** * Get the text of this document. A substring can be retrieved by * providing a range. * * @param range (optional) An range within the document to return. * If no range is passed, the full content is returned. * Invalid range positions are adjusted as described in [Position.line](#Position.line) * and [Position.character](#Position.character). * If the start range position is greater than the end range position, * then the effect of getText is as if the two positions were swapped. * @return The text of this document or a substring of the text if a * range is provided. */ getText(range?: Range): string; /** * Converts a zero-based offset to a position. * * @param offset A zero-based offset. * @return A valid [position](#Position). */ positionAt(offset: number): Position; /** * Converts the position to a zero-based offset. * Invalid positions are adjusted as described in [Position.line](#Position.line) * and [Position.character](#Position.character). * * @param position A position. * @return A valid zero-based offset. */ offsetAt(position: Position): number; /** * The number of lines in this document. * * @readonly */ readonly lineCount: number; } /** * @deprecated Use the text document from the new vscode-languageserver-textdocument package. */ export declare namespace TextDocument { /** * Creates a new ITextDocument literal from the given uri and content. * @param uri The document's uri. * @param languageId The document's language Id. * @param content The document's content. */ function create(uri: DocumentUri, languageId: string, version: number, content: string): TextDocument; /** * Checks whether the given literal conforms to the [ITextDocument](#ITextDocument) interface. */ function is(value: any): value is TextDocument; function applyEdits(document: TextDocument, edits: TextEdit[]): string; } /** * @deprecated No longer used, use TextDocumentChangeEvent from vscode-languageserver instead. */ export interface TextDocumentChangeEvent { /** * The document that has changed. */ document: TextDocument; } /** * Represents reasons why a text document is saved. * @deprecated No longer used, use TextDocumentWillSaveEvent from vscode-languageserver instead. */ export interface TextDocumentWillSaveEvent { /** * The document that will be saved */ document: TextDocument; /** * The reason why save was triggered. */ reason: 1 | 2 | 3; } export {};