import { TextDocumentIdentifier, Range, uinteger } from 'vscode-languageserver-types'; import { RequestHandler0, RequestHandler } from 'vscode-jsonrpc'; import { ProtocolRequestType, ProtocolRequestType0, RegistrationType } from './messages'; import { PartialResultParams, WorkDoneProgressParams, WorkDoneProgressOptions, TextDocumentRegistrationOptions, StaticRegistrationOptions } from './protocol'; /** * A set of predefined token types. This set is not fixed * an clients can specify additional token types via the * corresponding client capabilities. * * @since 3.16.0 */ export declare enum SemanticTokenTypes { namespace = "namespace", /** * Represents a generic type. Acts as a fallback for types which can't be mapped to * a specific type like class or enum. */ type = "type", class = "class", enum = "enum", interface = "interface", struct = "struct", typeParameter = "typeParameter", parameter = "parameter", variable = "variable", property = "property", enumMember = "enumMember", event = "event", function = "function", method = "method", macro = "macro", keyword = "keyword", modifier = "modifier", comment = "comment", string = "string", number = "number", regexp = "regexp", operator = "operator" } /** * A set of predefined token modifiers. This set is not fixed * an clients can specify additional token types via the * corresponding client capabilities. * * @since 3.16.0 */ export declare enum SemanticTokenModifiers { declaration = "declaration", definition = "definition", readonly = "readonly", static = "static", deprecated = "deprecated", abstract = "abstract", async = "async", modification = "modification", documentation = "documentation", defaultLibrary = "defaultLibrary" } /** * @since 3.16.0 */ export interface SemanticTokensLegend { /** * The token types a server uses. */ tokenTypes: string[]; /** * The token modifiers a server uses. */ tokenModifiers: string[]; } /** * @since 3.16.0 */ export interface SemanticTokens { /** * An optional result id. If provided and clients support delta updating * the client will include the result id in the next semantic token request. * A server can then instead of computing all semantic tokens again simply * send a delta. */ resultId?: string; /** * The actual tokens. */ data: uinteger[]; } /** * @since 3.16.0 */ export declare namespace SemanticTokens { function is(value: any): value is SemanticTokens; } /** * @since 3.16.0 */ export interface SemanticTokensPartialResult { data: uinteger[]; } /** * @since 3.16.0 */ export interface SemanticTokensEdit { /** * The start offset of the edit. */ start: uinteger; /** * The count of elements to remove. */ deleteCount: uinteger; /** * The elements to insert. */ data?: uinteger[]; } /** * @since 3.16.0 */ export interface SemanticTokensDelta { readonly resultId?: string; /** * The semantic token edits to transform a previous result into a new result. */ edits: SemanticTokensEdit[]; } /** * @since 3.16.0 */ export interface SemanticTokensDeltaPartialResult { edits: SemanticTokensEdit[]; } export declare namespace TokenFormat { const Relative: 'relative'; } export declare type TokenFormat = 'relative'; /** * @since 3.16.0 */ export interface SemanticTokensClientCapabilities { /** * Whether implementation supports dynamic registration. If this is set to `true` * the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)` * return value for the corresponding server capability as well. */ dynamicRegistration?: boolean; /** * Which requests the client supports and might send to the server * depending on the server's capability. Please note that clients might not * show semantic tokens or degrade some of the user experience if a range * or full request is advertised by the client but not provided by the * server. If for example the client capability `requests.full` and * `request.range` are both set to true but the server only provides a * range provider the client might not render a minimap correctly or might * even decide to not show any semantic tokens at all. */ requests: { /** * The client will send the `textDocument/semanticTokens/range` request if * the server provides a corresponding handler. */ range?: boolean | {}; /** * The client will send the `textDocument/semanticTokens/full` request if * the server provides a corresponding handler. */ full?: boolean | { /** * The client will send the `textDocument/semanticTokens/full/delta` request if * the server provides a corresponding handler. */ delta?: boolean; }; }; /** * The token types that the client supports. */ tokenTypes: string[]; /** * The token modifiers that the client supports. */ tokenModifiers: string[]; /** * The token formats the clients supports. */ formats: TokenFormat[]; /** * Whether the client supports tokens that can overlap each other. */ overlappingTokenSupport?: boolean; /** * Whether the client supports tokens that can span multiple lines. */ multilineTokenSupport?: boolean; } /** * @since 3.16.0 */ export interface SemanticTokensOptions extends WorkDoneProgressOptions { /** * The legend used by the server */ legend: SemanticTokensLegend; /** * Server supports providing semantic tokens for a specific range * of a document. */ range?: boolean | {}; /** * Server supports providing semantic tokens for a full document. */ full?: boolean | { /** * The server supports deltas for full documents. */ delta?: boolean; }; } /** * @since 3.16.0 */ export interface SemanticTokensRegistrationOptions extends TextDocumentRegistrationOptions, SemanticTokensOptions, StaticRegistrationOptions { } export declare namespace SemanticTokensRegistrationType { const method: 'textDocument/semanticTokens'; const type: RegistrationType; } /** * @since 3.16.0 */ export interface SemanticTokensParams extends WorkDoneProgressParams, PartialResultParams { /** * The text document. */ textDocument: TextDocumentIdentifier; } /** * @since 3.16.0 */ export declare namespace SemanticTokensRequest { const method: 'textDocument/semanticTokens/full'; const type: ProtocolRequestType; type HandlerSignature = RequestHandler; } /** * @since 3.16.0 */ export interface SemanticTokensDeltaParams extends WorkDoneProgressParams, PartialResultParams { /** * The text document. */ textDocument: TextDocumentIdentifier; /** * The result id of a previous response. The result Id can either point to a full response * or a delta response depending on what was received last. */ previousResultId: string; } /** * @since 3.16.0 */ export declare namespace SemanticTokensDeltaRequest { const method: 'textDocument/semanticTokens/full/delta'; const type: ProtocolRequestType; type HandlerSignature = RequestHandler; } /** * @since 3.16.0 */ export interface SemanticTokensRangeParams extends WorkDoneProgressParams, PartialResultParams { /** * The text document. */ textDocument: TextDocumentIdentifier; /** * The range the semantic tokens are requested for. */ range: Range; } /** * @since 3.16.0 */ export declare namespace SemanticTokensRangeRequest { const method: 'textDocument/semanticTokens/range'; const type: ProtocolRequestType; type HandlerSignature = RequestHandler; } export interface SemanticTokensWorkspaceClientCapabilities { /** * Whether the client implementation supports a refresh request sent from * the server to the client. * * Note that this event is global and will force the client to refresh all * semantic tokens currently shown. It should be used with absolute care * and is useful for situation where a server for example detect a project * wide change that requires such a calculation. */ refreshSupport?: boolean; } /** * @since 3.16.0 */ export declare namespace SemanticTokensRefreshRequest { const method: `workspace/semanticTokens/refresh`; const type: ProtocolRequestType0; type HandlerSignature = RequestHandler0; }