From c43c745a14dced87a23227d7be4f1c33d4455193 Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Wed, 9 Aug 2023 11:06:13 +0200 Subject: fix(lua): improve annotations for stricter luals diagnostics (#24609) Problem: luals returns stricter diagnostics with bundled luarc.json Solution: Improve some function and type annotations: * use recognized uv.* types * disable diagnostic for global `vim` in shared.lua * docs: don't start comment lines with taglink (otherwise LuaLS will interpret it as a type) * add type alias for lpeg pattern * fix return annotation for `vim.secure.trust` * rename local Range object in vim.version (shadows `Range` in vim.treesitter) * fix some "missing fields" warnings * add missing required fields for test functions in eval.lua * rename lsp meta files for consistency --- runtime/lua/vim/_editor.lua | 4 +- runtime/lua/vim/_system.lua | 32 +- runtime/lua/vim/_watch.lua | 4 +- runtime/lua/vim/diagnostic.lua | 46 +- runtime/lua/vim/loader.lua | 2 +- runtime/lua/vim/lsp.lua | 2 +- runtime/lua/vim/lsp/_meta.lua | 22 + runtime/lua/vim/lsp/_meta/protocol.lua | 4396 +++++++++++++++++++++++++++++++ runtime/lua/vim/lsp/_watchfiles.lua | 8 +- runtime/lua/vim/lsp/inlay_hint.lua | 4 +- runtime/lua/vim/lsp/semantic_tokens.lua | 13 +- runtime/lua/vim/lsp/types.lua | 21 - runtime/lua/vim/lsp/types/protocol.lua | 4393 ------------------------------ runtime/lua/vim/lsp/util.lua | 4 +- runtime/lua/vim/secure.lua | 5 +- runtime/lua/vim/shared.lua | 3 +- runtime/lua/vim/treesitter/query.lua | 2 +- runtime/lua/vim/version.lua | 12 +- 18 files changed, 4487 insertions(+), 4486 deletions(-) create mode 100644 runtime/lua/vim/lsp/_meta.lua create mode 100644 runtime/lua/vim/lsp/_meta/protocol.lua delete mode 100644 runtime/lua/vim/lsp/types.lua delete mode 100644 runtime/lua/vim/lsp/types/protocol.lua (limited to 'runtime/lua/vim') diff --git a/runtime/lua/vim/_editor.lua b/runtime/lua/vim/_editor.lua index d81464a3ca..58fbc923e1 100644 --- a/runtime/lua/vim/_editor.lua +++ b/runtime/lua/vim/_editor.lua @@ -620,8 +620,8 @@ local on_key_cbs = {} --- ---@param fn fun(key: string) Function invoked on every key press. |i_CTRL-V| --- Returning nil removes the callback associated with namespace {ns_id}. ----@param ns_id integer? Namespace ID. If nil or 0, generates and returns a new ---- |nvim_create_namespace()| id. +---@param ns_id integer? Namespace ID. If nil or 0, generates and returns a +--- new |nvim_create_namespace()| id. --- ---@return integer Namespace id associated with {fn}. Or count of all callbacks ---if on_key() is called without arguments. diff --git a/runtime/lua/vim/_system.lua b/runtime/lua/vim/_system.lua index e6dab90425..6f5e95eb24 100644 --- a/runtime/lua/vim/_system.lua +++ b/runtime/lua/vim/_system.lua @@ -1,14 +1,13 @@ local uv = vim.uv --- @class SystemOpts ---- @field cmd string[] ---- @field stdin string|string[]|true ---- @field stdout fun(err:string, data: string)|false ---- @field stderr fun(err:string, data: string)|false +--- @field stdin? string|string[]|true +--- @field stdout? fun(err:string, data: string)|false +--- @field stderr? fun(err:string, data: string)|false --- @field cwd? string --- @field env? table --- @field clear_env? boolean ---- @field text boolean? +--- @field text? boolean --- @field timeout? integer Timeout in ms --- @field detach? boolean @@ -19,15 +18,14 @@ local uv = vim.uv --- @field stderr? string --- @class SystemState ---- @field handle uv_process_t ---- @field timer uv_timer_t ---- @field pid integer +--- @field handle? uv.uv_process_t +--- @field timer? uv.uv_timer_t +--- @field pid? integer --- @field timeout? integer ---- @field done boolean ---- @field stdin uv_stream_t? ---- @field stdout uv_stream_t? ---- @field stderr uv_stream_t? ---- @field cmd string[] +--- @field done? boolean +--- @field stdin? uv.uv_stream_t +--- @field stdout? uv.uv_stream_t +--- @field stderr? uv.uv_stream_t --- @field result? SystemCompleted ---@param state SystemState @@ -128,7 +126,7 @@ function SystemObj:is_closing() end ---@param output function|'false' ----@return uv_stream_t? +---@return uv.uv_stream_t? ---@return function? Handler local function setup_output(output) if output == nil then @@ -144,7 +142,7 @@ local function setup_output(output) end ---@param input string|string[]|true|nil ----@return uv_stream_t? +---@return uv.uv_stream_t? ---@return string|string[]? local function setup_input(input) if not input then @@ -189,7 +187,7 @@ local function setup_env(env, clear_env) return renv end ---- @param stream uv_stream_t +--- @param stream uv.uv_stream_t --- @param text? boolean --- @param bucket string[] --- @return fun(err: string?, data: string?) @@ -217,7 +215,7 @@ local M = {} --- @param opts uv.aliases.spawn_options --- @param on_exit fun(code: integer, signal: integer) --- @param on_error fun() ---- @return uv_process_t, integer +--- @return uv.uv_process_t, integer local function spawn(cmd, opts, on_exit, on_error) local handle, pid_or_err = uv.spawn(cmd, opts, on_exit) if not handle then diff --git a/runtime/lua/vim/_watch.lua b/runtime/lua/vim/_watch.lua index dc5f59f38b..7230b31f6f 100644 --- a/runtime/lua/vim/_watch.lua +++ b/runtime/lua/vim/_watch.lua @@ -17,7 +17,7 @@ end --- Stops and closes a libuv |uv_fs_event_t| or |uv_fs_poll_t| handle --- ----@param handle (uv_fs_event_t|uv_fs_poll_t) The handle to stop +---@param handle (uv.uv_fs_event_t|uv.uv_fs_poll_t) The handle to stop local function stop(handle) local _, stop_err = handle:stop() assert(not stop_err, stop_err) @@ -79,7 +79,7 @@ local default_poll_interval_ms = 2000 --- @field children? table --- @field cancel? fun() --- @field started? boolean ---- @field handle? uv_fs_poll_t +--- @field handle? uv.uv_fs_poll_t --- @class watch.PollOpts --- @field interval? integer diff --git a/runtime/lua/vim/diagnostic.lua b/runtime/lua/vim/diagnostic.lua index f0adc4104e..180b9ad3df 100644 --- a/runtime/lua/vim/diagnostic.lua +++ b/runtime/lua/vim/diagnostic.lua @@ -562,8 +562,8 @@ end ---@param opts table|nil When omitted or "nil", retrieve the current configuration. Otherwise, a --- configuration table with the following keys: --- - underline: (default true) Use underline for diagnostics. Options: ---- * severity: Only underline diagnostics matching the given severity ---- |diagnostic-severity| +--- * severity: Only underline diagnostics matching the given +--- severity |diagnostic-severity| --- - virtual_text: (default true) Use virtual text for diagnostics. If multiple diagnostics --- are set for a namespace, one prefix per diagnostic + the last diagnostic --- message are shown. @@ -596,8 +596,8 @@ end --- end --- --- - signs: (default true) Use signs for diagnostics. Options: ---- * severity: Only show signs for diagnostics matching the given severity ---- |diagnostic-severity| +--- * severity: Only show signs for diagnostics matching the given +--- severity |diagnostic-severity| --- * priority: (number, default 10) Base priority to use for signs. When --- {severity_sort} is used, the priority of a sign is adjusted based on --- its severity. Otherwise, all signs use the same priority. @@ -723,17 +723,17 @@ function M.get_namespaces() end ---@class Diagnostic ----@field bufnr integer +---@field bufnr? integer ---@field lnum integer 0-indexed ----@field end_lnum nil|integer 0-indexed +---@field end_lnum? integer 0-indexed ---@field col integer 0-indexed ----@field end_col nil|integer 0-indexed ----@field severity DiagnosticSeverity +---@field end_col? integer 0-indexed +---@field severity? DiagnosticSeverity ---@field message string ----@field source nil|string ----@field code nil|string ----@field _tags { deprecated: boolean, unnecessary: boolean} ----@field user_data nil|any arbitrary data plugins can add +---@field source? string +---@field code? string +---@field _tags? { deprecated: boolean, unnecessary: boolean} +---@field user_data? any arbitrary data plugins can add --- Get current diagnostics. --- @@ -819,13 +819,13 @@ end --- ---@param opts table|nil Configuration table with the following keys: --- - namespace: (number) Only consider diagnostics from the given namespace. ---- - cursor_position: (cursor position) Cursor position as a (row, col) tuple. See ---- |nvim_win_get_cursor()|. Defaults to the current cursor position. +--- - cursor_position: (cursor position) Cursor position as a (row, col) tuple. +--- See |nvim_win_get_cursor()|. Defaults to the current cursor position. --- - wrap: (boolean, default true) Whether to loop around file or not. Similar to 'wrapscan'. --- - severity: See |diagnostic-severity|. --- - float: (boolean or table, default true) If "true", call |vim.diagnostic.open_float()| ---- after moving. If a table, pass the table as the {opts} parameter to ---- |vim.diagnostic.open_float()|. Unless overridden, the float will show +--- after moving. If a table, pass the table as the {opts} parameter +--- to |vim.diagnostic.open_float()|. Unless overridden, the float will show --- diagnostics at the new cursor position (as if "cursor" were passed to --- the "scope" option). --- - win_id: (number, default 0) Window ID @@ -1213,8 +1213,8 @@ end --- Show diagnostics in a floating window. --- ----@param opts table|nil Configuration table with the same keys as ---- |vim.lsp.util.open_floating_preview()| in addition to the following: +---@param opts table|nil Configuration table with the same keys +--- as |vim.lsp.util.open_floating_preview()| in addition to the following: --- - bufnr: (number) Buffer number to show diagnostics from. --- Defaults to the current buffer. --- - namespace: (number) Limit diagnostics to the given namespace @@ -1227,16 +1227,15 @@ end --- otherwise, a (row, col) tuple. --- - severity_sort: (default false) Sort diagnostics by severity. Overrides the setting --- from |vim.diagnostic.config()|. ---- - severity: See |diagnostic-severity|. Overrides the setting from ---- |vim.diagnostic.config()|. +--- - severity: See |diagnostic-severity|. Overrides the setting +--- from |vim.diagnostic.config()|. --- - header: (string or table) String to use as the header for the floating window. If a --- table, it is interpreted as a [text, hl_group] tuple. Overrides the setting --- from |vim.diagnostic.config()|. --- - source: (boolean or string) Include the diagnostic source in the message. --- Use "if_many" to only show sources if there is more than one source of --- diagnostics in the buffer. Otherwise, any truthy value means to always show ---- the diagnostic source. Overrides the setting from ---- |vim.diagnostic.config()|. +--- the diagnostic source. Overrides the setting from |vim.diagnostic.config()|. --- - format: (function) A function that takes a diagnostic as input and returns a --- string. The return value is the text used to display the diagnostic. --- Overrides the setting from |vim.diagnostic.config()|. @@ -1692,8 +1691,7 @@ end --- Convert a list of quickfix items to a list of diagnostics. --- ----@param list table A list of quickfix items from |getqflist()| or ---- |getloclist()|. +---@param list table[] List of quickfix items from |getqflist()| or |getloclist()|. ---@return Diagnostic[] array of |diagnostic-structure| function M.fromqflist(list) vim.validate({ diff --git a/runtime/lua/vim/loader.lua b/runtime/lua/vim/loader.lua index e08ccba701..ee01111337 100644 --- a/runtime/lua/vim/loader.lua +++ b/runtime/lua/vim/loader.lua @@ -18,7 +18,7 @@ local M = {} ---@class ModuleInfo ---@field modpath string Path of the module ---@field modname string Name of the module ----@field stat? uv_fs_t File stat of the module path +---@field stat? uv.uv_fs_t File stat of the module path ---@alias LoaderStats table diff --git a/runtime/lua/vim/lsp.lua b/runtime/lua/vim/lsp.lua index bfba275c33..0c4290d067 100644 --- a/runtime/lua/vim/lsp.lua +++ b/runtime/lua/vim/lsp.lua @@ -364,7 +364,7 @@ do --- @field lines string[] snapshot of buffer lines from last didChange --- @field lines_tmp string[] --- @field pending_changes table[] List of debounced changes in incremental sync mode - --- @field timer nil|uv_timer_t uv_timer + --- @field timer nil|uv.uv_timer_t uv_timer --- @field last_flush nil|number uv.hrtime of the last flush/didChange-notification --- @field needs_flush boolean true if buffer updates haven't been sent to clients/servers yet --- @field refs integer how many clients are using this group diff --git a/runtime/lua/vim/lsp/_meta.lua b/runtime/lua/vim/lsp/_meta.lua new file mode 100644 index 0000000000..acf799264e --- /dev/null +++ b/runtime/lua/vim/lsp/_meta.lua @@ -0,0 +1,22 @@ +---@meta +error('Cannot require a meta file') + +---@alias lsp-handler fun(err: lsp.ResponseError|nil, result: any, context: lsp.HandlerContext, config: table|nil): any? + +---@class lsp.HandlerContext +---@field method string +---@field client_id integer +---@field bufnr? integer +---@field params? any + +---@class lsp.ResponseError +---@field code integer +---@field message string +---@field data string|number|boolean|table[]|table|nil + +--- @class lsp.DocumentFilter +--- @field language? string +--- @field scheme? string +--- @field pattern? string + +--- @alias lsp.RegisterOptions any | lsp.StaticRegistrationOptions | lsp.TextDocumentRegistrationOptions diff --git a/runtime/lua/vim/lsp/_meta/protocol.lua b/runtime/lua/vim/lsp/_meta/protocol.lua new file mode 100644 index 0000000000..72b0f00f65 --- /dev/null +++ b/runtime/lua/vim/lsp/_meta/protocol.lua @@ -0,0 +1,4396 @@ +--[[ +This file is autogenerated from scripts/gen_lsp.lua +Regenerate: +nvim -l scripts/gen_lsp.lua gen --version 3.18 --runtime/lua/vim/lsp/_meta/protocol.lua +--]] + +---@meta +error('Cannot require a meta file') + +---@alias lsp.null nil +---@alias uinteger integer +---@alias lsp.decimal number +---@alias lsp.DocumentUri string +---@alias lsp.URI string +---@alias lsp.LSPObject table +---@alias lsp.LSPArray lsp.LSPAny[] +---@alias lsp.LSPAny lsp.LSPObject|lsp.LSPArray|string|number|boolean|nil + +---@class lsp.ImplementationParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams + +---Represents a location inside a resource, such as a line +---inside a text file. +---@class lsp.Location +---@field uri lsp.DocumentUri +---@field range lsp.Range + +---@class lsp.ImplementationRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions + +---@class lsp.TypeDefinitionParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams + +---@class lsp.TypeDefinitionRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions + +---A workspace folder inside a client. +---@class lsp.WorkspaceFolder +---The associated URI for this workspace folder. +---@field uri lsp.URI +---The name of the workspace folder. Used to refer to this +---workspace folder in the user interface. +---@field name string + +---The parameters of a `workspace/didChangeWorkspaceFolders` notification. +---@class lsp.DidChangeWorkspaceFoldersParams +---The actual workspace folder change event. +---@field event lsp.WorkspaceFoldersChangeEvent + +---The parameters of a configuration request. +---@class lsp.ConfigurationParams +---@field items lsp.ConfigurationItem[] + +---Parameters for a {@link DocumentColorRequest}. +---@class lsp.DocumentColorParams +---The text document. +---@field textDocument lsp.TextDocumentIdentifier + +---Represents a color range from a document. +---@class lsp.ColorInformation +---The range in the document where this color appears. +---@field range lsp.Range +---The actual color value for this color range. +---@field color lsp.Color + +---@class lsp.DocumentColorRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions + +---Parameters for a {@link ColorPresentationRequest}. +---@class lsp.ColorPresentationParams +---The text document. +---@field textDocument lsp.TextDocumentIdentifier +---The color to request presentations for. +---@field color lsp.Color +---The range where the color would be inserted. Serves as a context. +---@field range lsp.Range + +---@class lsp.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. +---@field label string +---An {@link TextEdit edit} which is applied to a document when selecting +---this presentation for the color. When `falsy` the {@link ColorPresentation.label label} +---is used. +---@field textEdit? lsp.TextEdit +---An optional array of additional {@link TextEdit text edits} that are applied when +---selecting this color presentation. Edits must not overlap with the main {@link ColorPresentation.textEdit edit} nor with themselves. +---@field additionalTextEdits? lsp.TextEdit[] + +---@class lsp.WorkDoneProgressOptions +---@field workDoneProgress? boolean + +---General text document registration options. +---@class lsp.TextDocumentRegistrationOptions +---A document selector to identify the scope of the registration. If set to null +---the document selector provided on the client side will be used. +---@field documentSelector lsp.DocumentSelector|lsp.null + +---Parameters for a {@link FoldingRangeRequest}. +---@class lsp.FoldingRangeParams +---The text document. +---@field textDocument lsp.TextDocumentIdentifier + +---Represents a folding range. To be valid, start and end line must be bigger than zero and smaller +---than the number of lines in the document. Clients are free to ignore invalid ranges. +---@class lsp.FoldingRange +---The zero-based start line of the range to fold. The folded area starts after the line's last character. +---To be valid, the end must be zero or larger and smaller than the number of lines in the document. +---@field startLine uinteger +---The zero-based character offset from where the folded range starts. If not defined, defaults to the length of the start line. +---@field startCharacter? uinteger +---The zero-based end line of the range to fold. The folded area ends with the line's last character. +---To be valid, the end must be zero or larger and smaller than the number of lines in the document. +---@field endLine uinteger +---The zero-based character offset before the folded range ends. If not defined, defaults to the length of the end line. +---@field endCharacter? uinteger +---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 {@link FoldingRangeKind} for an enumeration of standardized kinds. +---@field kind? lsp.FoldingRangeKind +---The text that the client should show when the specified range is +---collapsed. If not defined or not supported by the client, a default +---will be chosen by the client. +--- +---@since 3.17.0 +---@field collapsedText? string + +---@class lsp.FoldingRangeRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions + +---@class lsp.DeclarationParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams + +---@class lsp.DeclarationRegistrationOptions: lsp.DeclarationOptions, lsp.StaticRegistrationOptions + +---A parameter literal used in selection range requests. +---@class lsp.SelectionRangeParams +---The text document. +---@field textDocument lsp.TextDocumentIdentifier +---The positions inside the text document. +---@field positions lsp.Position[] + +---A selection range represents a part of a selection hierarchy. A selection range +---may have a parent selection range that contains it. +---@class lsp.SelectionRange +---The {@link Range range} of this selection range. +---@field range lsp.Range +---The parent selection range containing this range. Therefore `parent.range` must contain `this.range`. +---@field parent? lsp.SelectionRange + +---@class lsp.SelectionRangeRegistrationOptions: lsp.SelectionRangeOptions, lsp.StaticRegistrationOptions + +---@class lsp.WorkDoneProgressCreateParams +---The token to be used to report progress. +---@field token lsp.ProgressToken + +---@class lsp.WorkDoneProgressCancelParams +---The token to be used to report progress. +---@field token lsp.ProgressToken + +---The parameter of a `textDocument/prepareCallHierarchy` request. +--- +---@since 3.16.0 +---@class lsp.CallHierarchyPrepareParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams + +---Represents programming constructs like functions or constructors in the context +---of call hierarchy. +--- +---@since 3.16.0 +---@class lsp.CallHierarchyItem +---The name of this item. +---@field name string +---The kind of this item. +---@field kind lsp.SymbolKind +---Tags for this item. +---@field tags? lsp.SymbolTag[] +---More detail for this item, e.g. the signature of a function. +---@field detail? string +---The resource identifier of this item. +---@field uri lsp.DocumentUri +---The range enclosing this symbol not including leading/trailing whitespace but everything else, e.g. comments and code. +---@field range lsp.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 {@link CallHierarchyItem.range `range`}. +---@field selectionRange lsp.Range +---A data entry field that is preserved between a call hierarchy prepare and +---incoming calls or outgoing calls requests. +---@field data? lsp.LSPAny + +---Call hierarchy options used during static or dynamic registration. +--- +---@since 3.16.0 +---@class lsp.CallHierarchyRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions + +---The parameter of a `callHierarchy/incomingCalls` request. +--- +---@since 3.16.0 +---@class lsp.CallHierarchyIncomingCallsParams +---@field item lsp.CallHierarchyItem + +---Represents an incoming call, e.g. a caller of a method or constructor. +--- +---@since 3.16.0 +---@class lsp.CallHierarchyIncomingCall +---The item that makes the call. +---@field from lsp.CallHierarchyItem +---The ranges at which the calls appear. This is relative to the caller +---denoted by {@link CallHierarchyIncomingCall.from `this.from`}. +---@field fromRanges lsp.Range[] + +---The parameter of a `callHierarchy/outgoingCalls` request. +--- +---@since 3.16.0 +---@class lsp.CallHierarchyOutgoingCallsParams +---@field item lsp.CallHierarchyItem + +---Represents an outgoing call, e.g. calling a getter from a method or a method from a constructor etc. +--- +---@since 3.16.0 +---@class lsp.CallHierarchyOutgoingCall +---The item that is called. +---@field to lsp.CallHierarchyItem +---The range at which this item is called. This is the range relative to the caller, e.g the item +---passed to {@link CallHierarchyItemProvider.provideCallHierarchyOutgoingCalls `provideCallHierarchyOutgoingCalls`} +---and not {@link CallHierarchyOutgoingCall.to `this.to`}. +---@field fromRanges lsp.Range[] + +---@since 3.16.0 +---@class lsp.SemanticTokensParams +---The text document. +---@field textDocument lsp.TextDocumentIdentifier + +---@since 3.16.0 +---@class lsp.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. +---@field resultId? string +---The actual tokens. +---@field data uinteger[] + +---@since 3.16.0 +---@class lsp.SemanticTokensPartialResult +---@field data uinteger[] + +---@since 3.16.0 +---@class lsp.SemanticTokensRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions + +---@since 3.16.0 +---@class lsp.SemanticTokensDeltaParams +---The text document. +---@field textDocument lsp.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. +---@field previousResultId string + +---@since 3.16.0 +---@class lsp.SemanticTokensDelta +---@field resultId? string +---The semantic token edits to transform a previous result into a new result. +---@field edits lsp.SemanticTokensEdit[] + +---@since 3.16.0 +---@class lsp.SemanticTokensDeltaPartialResult +---@field edits lsp.SemanticTokensEdit[] + +---@since 3.16.0 +---@class lsp.SemanticTokensRangeParams +---The text document. +---@field textDocument lsp.TextDocumentIdentifier +---The range the semantic tokens are requested for. +---@field range lsp.Range + +---Params to show a resource in the UI. +--- +---@since 3.16.0 +---@class lsp.ShowDocumentParams +---The uri to show. +---@field uri lsp.URI +---Indicates to show the resource in an external program. +---To show, for example, `https://code.visualstudio.com/` +---in the default WEB browser set `external` to `true`. +---@field external? boolean +---An optional property to indicate whether the editor +---showing the document should take focus or not. +---Clients might ignore this property if an external +---program is started. +---@field takeFocus? boolean +---An optional selection range if the document is a text +---document. Clients might ignore the property if an +---external program is started or the file is not a text +---file. +---@field selection? lsp.Range + +---The result of a showDocument request. +--- +---@since 3.16.0 +---@class lsp.ShowDocumentResult +---A boolean indicating if the show was successful. +---@field success boolean + +---@class lsp.LinkedEditingRangeParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams + +---The result of a linked editing range request. +--- +---@since 3.16.0 +---@class lsp.LinkedEditingRanges +---A list of ranges that can be edited together. The ranges must have +---identical length and contain identical text content. The ranges cannot overlap. +---@field ranges lsp.Range[] +---An optional word pattern (regular expression) that describes valid contents for +---the given ranges. If no pattern is provided, the client configuration's word +---pattern will be used. +---@field wordPattern? string + +---@class lsp.LinkedEditingRangeRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions + +---The parameters sent in notifications/requests for user-initiated creation of +---files. +--- +---@since 3.16.0 +---@class lsp.CreateFilesParams +---An array of all files/folders created in this operation. +---@field files lsp.FileCreate[] + +---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. +--- +---Since version 3.13.0 a workspace edit can contain resource operations as well. If resource +---operations are present clients need to execute the operations in the order in which they +---are provided. So a workspace edit for example can consist of the following two changes: +---(1) a create file a.txt and (2) a text document edit which insert text into file a.txt. +--- +---An invalid sequence (e.g. (1) delete file a.txt and (2) insert text into file a.txt) will +---cause failure of the operation. How the client recovers from the failure is described by +---the client capability: `workspace.workspaceEdit.failureHandling` +---@class lsp.WorkspaceEdit +---Holds changes to existing resources. +---@field changes? table +---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. +---@field documentChanges? lsp.TextDocumentEdit|lsp.CreateFile|lsp.RenameFile|lsp.DeleteFile[] +---A map of change annotations that can be referenced in `AnnotatedTextEdit`s or create, rename and +---delete file / folder operations. +--- +---Whether clients honor this property depends on the client capability `workspace.changeAnnotationSupport`. +--- +---@since 3.16.0 +---@field changeAnnotations? table + +---The options to register for file operations. +--- +---@since 3.16.0 +---@class lsp.FileOperationRegistrationOptions +---The actual filters. +---@field filters lsp.FileOperationFilter[] + +---The parameters sent in notifications/requests for user-initiated renames of +---files. +--- +---@since 3.16.0 +---@class lsp.RenameFilesParams +---An array of all files/folders renamed in this operation. When a folder is renamed, only +---the folder will be included, and not its children. +---@field files lsp.FileRename[] + +---The parameters sent in notifications/requests for user-initiated deletes of +---files. +--- +---@since 3.16.0 +---@class lsp.DeleteFilesParams +---An array of all files/folders deleted in this operation. +---@field files lsp.FileDelete[] + +---@class lsp.MonikerParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams + +---Moniker definition to match LSIF 0.5 moniker definition. +--- +---@since 3.16.0 +---@class lsp.Moniker +---The scheme of the moniker. For example tsc or .Net +---@field scheme string +---The identifier of the moniker. The value is opaque in LSIF however +---schema owners are allowed to define the structure if they want. +---@field identifier string +---The scope in which the moniker is unique +---@field unique lsp.UniquenessLevel +---The moniker kind if known. +---@field kind? lsp.MonikerKind + +---@class lsp.MonikerRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---The parameter of a `textDocument/prepareTypeHierarchy` request. +--- +---@since 3.17.0 +---@class lsp.TypeHierarchyPrepareParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams + +---@since 3.17.0 +---@class lsp.TypeHierarchyItem +---The name of this item. +---@field name string +---The kind of this item. +---@field kind lsp.SymbolKind +---Tags for this item. +---@field tags? lsp.SymbolTag[] +---More detail for this item, e.g. the signature of a function. +---@field detail? string +---The resource identifier of this item. +---@field uri lsp.DocumentUri +---The range enclosing this symbol not including leading/trailing whitespace +---but everything else, e.g. comments and code. +---@field range lsp.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 +---{@link TypeHierarchyItem.range `range`}. +---@field selectionRange lsp.Range +---A data entry field that is preserved between a type hierarchy prepare and +---supertypes or subtypes requests. It could also be used to identify the +---type hierarchy in the server, helping improve the performance on +---resolving supertypes and subtypes. +---@field data? lsp.LSPAny + +---Type hierarchy options used during static or dynamic registration. +--- +---@since 3.17.0 +---@class lsp.TypeHierarchyRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions + +---The parameter of a `typeHierarchy/supertypes` request. +--- +---@since 3.17.0 +---@class lsp.TypeHierarchySupertypesParams +---@field item lsp.TypeHierarchyItem + +---The parameter of a `typeHierarchy/subtypes` request. +--- +---@since 3.17.0 +---@class lsp.TypeHierarchySubtypesParams +---@field item lsp.TypeHierarchyItem + +---A parameter literal used in inline value requests. +--- +---@since 3.17.0 +---@class lsp.InlineValueParams +---The text document. +---@field textDocument lsp.TextDocumentIdentifier +---The document range for which inline values should be computed. +---@field range lsp.Range +---Additional information about the context in which inline values were +---requested. +---@field context lsp.InlineValueContext + +---Inline value options used during static or dynamic registration. +--- +---@since 3.17.0 +---@class lsp.InlineValueRegistrationOptions: lsp.InlineValueOptions, lsp.StaticRegistrationOptions + +---A parameter literal used in inlay hint requests. +--- +---@since 3.17.0 +---@class lsp.InlayHintParams +---The text document. +---@field textDocument lsp.TextDocumentIdentifier +---The document range for which inlay hints should be computed. +---@field range lsp.Range + +---Inlay hint information. +--- +---@since 3.17.0 +---@class lsp.InlayHint +---The position of this hint. +---@field position lsp.Position +---The label of this hint. A human readable string or an array of +---InlayHintLabelPart label parts. +--- +---*Note* that neither the string nor the label part can be empty. +---@field label string|lsp.InlayHintLabelPart[] +---The kind of this hint. Can be omitted in which case the client +---should fall back to a reasonable default. +---@field kind? lsp.InlayHintKind +---Optional text edits that are performed when accepting this inlay hint. +--- +---*Note* that edits are expected to change the document so that the inlay +---hint (or its nearest variant) is now part of the document and the inlay +---hint itself is now obsolete. +---@field textEdits? lsp.TextEdit[] +---The tooltip text when you hover over this item. +---@field tooltip? string|lsp.MarkupContent +---Render padding before the hint. +--- +---Note: Padding should use the editor's background color, not the +---background color of the hint itself. That means padding can be used +---to visually align/separate an inlay hint. +---@field paddingLeft? boolean +---Render padding after the hint. +--- +---Note: Padding should use the editor's background color, not the +---background color of the hint itself. That means padding can be used +---to visually align/separate an inlay hint. +---@field paddingRight? boolean +---A data entry field that is preserved on an inlay hint between +---a `textDocument/inlayHint` and a `inlayHint/resolve` request. +---@field data? lsp.LSPAny + +---Inlay hint options used during static or dynamic registration. +--- +---@since 3.17.0 +---@class lsp.InlayHintRegistrationOptions: lsp.InlayHintOptions, lsp.StaticRegistrationOptions + +---Parameters of the document diagnostic request. +--- +---@since 3.17.0 +---@class lsp.DocumentDiagnosticParams +---The text document. +---@field textDocument lsp.TextDocumentIdentifier +---The additional identifier provided during registration. +---@field identifier? string +---The result id of a previous response if provided. +---@field previousResultId? string + +---A partial result for a document diagnostic report. +--- +---@since 3.17.0 +---@class lsp.DocumentDiagnosticReportPartialResult +---@field relatedDocuments table + +---Cancellation data returned from a diagnostic request. +--- +---@since 3.17.0 +---@class lsp.DiagnosticServerCancellationData +---@field retriggerRequest boolean + +---Diagnostic registration options. +--- +---@since 3.17.0 +---@class lsp.DiagnosticRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions + +---Parameters of the workspace diagnostic request. +--- +---@since 3.17.0 +---@class lsp.WorkspaceDiagnosticParams +---The additional identifier provided during registration. +---@field identifier? string +---The currently known diagnostic reports with their +---previous result ids. +---@field previousResultIds lsp.PreviousResultId[] + +---A workspace diagnostic report. +--- +---@since 3.17.0 +---@class lsp.WorkspaceDiagnosticReport +---@field items lsp.WorkspaceDocumentDiagnosticReport[] + +---A partial result for a workspace diagnostic report. +--- +---@since 3.17.0 +---@class lsp.WorkspaceDiagnosticReportPartialResult +---@field items lsp.WorkspaceDocumentDiagnosticReport[] + +---The params sent in an open notebook document notification. +--- +---@since 3.17.0 +---@class lsp.DidOpenNotebookDocumentParams +---The notebook document that got opened. +---@field notebookDocument lsp.NotebookDocument +---The text documents that represent the content +---of a notebook cell. +---@field cellTextDocuments lsp.TextDocumentItem[] + +---The params sent in a change notebook document notification. +--- +---@since 3.17.0 +---@class lsp.DidChangeNotebookDocumentParams +---The notebook document that did change. The version number points +---to the version after all provided changes have been applied. If +---only the text document content of a cell changes the notebook version +---doesn't necessarily have to change. +---@field notebookDocument lsp.VersionedNotebookDocumentIdentifier +---The actual changes to the notebook document. +--- +---The changes describe single state changes to the notebook document. +---So if there are two changes c1 (at array index 0) and c2 (at array +---index 1) for a notebook in state S then c1 moves the notebook from +---S to S' and c2 from S' to S''. So c1 is computed on the state S and +---c2 is computed on the state S'. +--- +---To mirror the content of a notebook using change events use the following approach: +---- start with the same initial content +---- apply the 'notebookDocument/didChange' notifications in the order you receive them. +---- apply the `NotebookChangeEvent`s in a single notification in the order +--- you receive them. +---@field change lsp.NotebookDocumentChangeEvent + +---The params sent in a save notebook document notification. +--- +---@since 3.17.0 +---@class lsp.DidSaveNotebookDocumentParams +---The notebook document that got saved. +---@field notebookDocument lsp.NotebookDocumentIdentifier + +---The params sent in a close notebook document notification. +--- +---@since 3.17.0 +---@class lsp.DidCloseNotebookDocumentParams +---The notebook document that got closed. +---@field notebookDocument lsp.NotebookDocumentIdentifier +---The text documents that represent the content +---of a notebook cell that got closed. +---@field cellTextDocuments lsp.TextDocumentIdentifier[] + +---A parameter literal used in inline completion requests. +--- +---@since 3.18.0 +---@class lsp.InlineCompletionParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams +---Additional information about the context in which inline completions were +---requested. +---@field context lsp.InlineCompletionContext + +---Represents a collection of {@link InlineCompletionItem inline completion items} to be presented in the editor. +---@class lsp.InlineCompletionList +---The inline completion items +---@field items lsp.InlineCompletionItem[] + +---An inline completion item represents a text snippet that is proposed inline to complete text that is being typed. +--- +---@since 3.18.0 +---@class lsp.InlineCompletionItem +---The text to replace the range with. Must be set. +---@field insertText string +---The format of the insert text. The format applies to the `insertText`. If omitted defaults to `InsertTextFormat.PlainText`. +---@field insertTextFormat? lsp.InsertTextFormat +---A text that is used to decide if this inline completion should be shown. When `falsy` the {@link InlineCompletionItem.insertText} is used. +---@field filterText? string +---The range to replace. Must begin and end on the same line. +---@field range? lsp.Range +---An optional {@link Command} that is executed *after* inserting this completion. +---@field command? lsp.Command + +---Inline completion options used during static or dynamic registration. +--- +---@since 3.18.0 +---@class lsp.InlineCompletionRegistrationOptions: lsp.InlineCompletionOptions, lsp.StaticRegistrationOptions + +---@class lsp.RegistrationParams +---@field registrations lsp.Registration[] + +---@class lsp.UnregistrationParams +---@field unregisterations lsp.Unregistration[] + +---@class lsp.InitializeParams: lsp._InitializeParams + +---The result returned from an initialize request. +---@class lsp.InitializeResult +---The capabilities the language server provides. +---@field capabilities lsp.ServerCapabilities +---Information about the server. +--- +---@since 3.15.0 +---@field serverInfo? anonym1 + +---The data type of the ResponseError if the +---initialize request fails. +---@class lsp.InitializeError +---Indicates whether the client execute the following retry logic: +---(1) show the message provided by the ResponseError to the user +---(2) user selects retry or cancel +---(3) if user selected retry the initialize method is sent again. +---@field retry boolean + +---@class lsp.InitializedParams + +---The parameters of a change configuration notification. +---@class lsp.DidChangeConfigurationParams +---The actual changed settings +---@field settings lsp.LSPAny + +---@class lsp.DidChangeConfigurationRegistrationOptions +---@field section? string|string[] + +---The parameters of a notification message. +---@class lsp.ShowMessageParams +---The message type. See {@link MessageType} +---@field type lsp.MessageType +---The actual message. +---@field message string + +---@class lsp.ShowMessageRequestParams +---The message type. See {@link MessageType} +---@field type lsp.MessageType +---The actual message. +---@field message string +---The message action items to present. +---@field actions? lsp.MessageActionItem[] + +---@class lsp.MessageActionItem +---A short title like 'Retry', 'Open Log' etc. +---@field title string + +---The log message parameters. +---@class lsp.LogMessageParams +---The message type. See {@link MessageType} +---@field type lsp.MessageType +---The actual message. +---@field message string + +---The parameters sent in an open text document notification +---@class lsp.DidOpenTextDocumentParams +---The document that was opened. +---@field textDocument lsp.TextDocumentItem + +---The change text document notification's parameters. +---@class lsp.DidChangeTextDocumentParams +---The document that did change. The version number points +---to the version after all provided content changes have +---been applied. +---@field textDocument lsp.VersionedTextDocumentIdentifier +---The actual content changes. The content changes describe single state changes +---to the document. So if there are two content changes c1 (at array index 0) and +---c2 (at array index 1) for a document in state S then c1 moves the document from +---S to S' and c2 from S' to S''. So c1 is computed on the state S and c2 is computed +---on the state S'. +--- +---To mirror the content of a document using change events use the following approach: +---- start with the same initial content +---- apply the 'textDocument/didChange' notifications in the order you receive them. +---- apply the `TextDocumentContentChangeEvent`s in a single notification in the order +--- you receive them. +---@field contentChanges lsp.TextDocumentContentChangeEvent[] + +---Describe options to be used when registered for text document change events. +---@class lsp.TextDocumentChangeRegistrationOptions: lsp.TextDocumentRegistrationOptions +---How documents are synced to the server. +---@field syncKind lsp.TextDocumentSyncKind + +---The parameters sent in a close text document notification +---@class lsp.DidCloseTextDocumentParams +---The document that was closed. +---@field textDocument lsp.TextDocumentIdentifier + +---The parameters sent in a save text document notification +---@class lsp.DidSaveTextDocumentParams +---The document that was saved. +---@field textDocument lsp.TextDocumentIdentifier +---Optional the content when saved. Depends on the includeText value +---when the save notification was requested. +---@field text? string + +---Save registration options. +---@class lsp.TextDocumentSaveRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---The parameters sent in a will save text document notification. +---@class lsp.WillSaveTextDocumentParams +---The document that will be saved. +---@field textDocument lsp.TextDocumentIdentifier +---The 'TextDocumentSaveReason'. +---@field reason lsp.TextDocumentSaveReason + +---A text edit applicable to a text document. +---@class lsp.TextEdit +---The range of the text document to be manipulated. To insert +---text into a document create a range where start === end. +---@field range lsp.Range +---The string to be inserted. For delete operations use an +---empty string. +---@field newText string + +---The watched files change notification's parameters. +---@class lsp.DidChangeWatchedFilesParams +---The actual file events. +---@field changes lsp.FileEvent[] + +---Describe options to be used when registered for text document change events. +---@class lsp.DidChangeWatchedFilesRegistrationOptions +---The watchers to register. +---@field watchers lsp.FileSystemWatcher[] + +---The publish diagnostic notification's parameters. +---@class lsp.PublishDiagnosticsParams +---The URI for which diagnostic information is reported. +---@field uri lsp.DocumentUri +---Optional the version number of the document the diagnostics are published for. +--- +---@since 3.15.0 +---@field version? integer +---An array of diagnostic information items. +---@field diagnostics lsp.Diagnostic[] + +---Completion parameters +---@class lsp.CompletionParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams +---The completion context. This is only available it the client specifies +---to send this using the client capability `textDocument.completion.contextSupport === true` +---@field context? lsp.CompletionContext + +---A completion item represents a text snippet that is +---proposed to complete text that is being typed. +---@class lsp.CompletionItem +---The label of this completion item. +--- +---The label property is also by default the text that +---is inserted when selecting this completion. +--- +---If label details are provided the label itself should +---be an unqualified name of the completion item. +---@field label string +---Additional details for the label +--- +---@since 3.17.0 +---@field labelDetails? lsp.CompletionItemLabelDetails +---The kind of this completion item. Based of the kind +---an icon is chosen by the editor. +---@field kind? lsp.CompletionItemKind +---Tags for this completion item. +--- +---@since 3.15.0 +---@field tags? lsp.CompletionItemTag[] +---A human-readable string with additional information +---about this item, like type or symbol information. +---@field detail? string +---A human-readable string that represents a doc-comment. +---@field documentation? string|lsp.MarkupContent +---Indicates if this item is deprecated. +---@deprecated Use `tags` instead. +---@field 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. +---@field preselect? boolean +---A string that should be used when comparing this item +---with other items. When `falsy` the {@link CompletionItem.label label} +---is used. +---@field sortText? string +---A string that should be used when filtering a set of +---completion items. When `falsy` the {@link CompletionItem.label label} +---is used. +---@field filterText? string +---A string that should be inserted into a document when selecting +---this completion. When `falsy` the {@link CompletionItem.label 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. +---@field 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 omitted defaults to `InsertTextFormat.PlainText`. +--- +---Please note that the insertTextFormat doesn't apply to +---`additionalTextEdits`. +---@field insertTextFormat? lsp.InsertTextFormat +---How whitespace and indentation is handled during completion +---item insertion. If not provided the clients default value depends on +---the `textDocument.completion.insertTextMode` client capability. +--- +---@since 3.16.0 +---@field insertTextMode? lsp.InsertTextMode +---An {@link TextEdit edit} which is applied to a document when selecting +---this completion. When an edit is provided the value of +---{@link CompletionItem.insertText insertText} is ignored. +--- +---Most editors support two different operations when accepting a completion +---item. One is to insert a completion text and the other is to replace an +---existing text with a completion text. Since this can usually not be +---predetermined by a server it can report both ranges. Clients need to +---signal support for `InsertReplaceEdits` via the +---`textDocument.completion.insertReplaceSupport` client capability +---property. +--- +---*Note 1:* The text edit's range as well as both ranges from an insert +---replace edit must be a [single line] and they must contain the position +---at which completion has been requested. +---*Note 2:* If an `InsertReplaceEdit` is returned the edit's insert range +---must be a prefix of the edit's replace range, that means it must be +---contained and starting at the same position. +--- +---@since 3.16.0 additional type `InsertReplaceEdit` +---@field textEdit? lsp.TextEdit|lsp.InsertReplaceEdit +---The edit text used if the completion item is part of a CompletionList and +---CompletionList defines an item default for the text edit range. +--- +---Clients will only honor this property if they opt into completion list +---item defaults using the capability `completionList.itemDefaults`. +--- +---If not provided and a list's default range is provided the label +---property is used as a text. +--- +---@since 3.17.0 +---@field textEditText? string +---An optional array of additional {@link TextEdit text edits} that are applied when +---selecting this completion. Edits must not overlap (including the same insert position) +---with the main {@link CompletionItem.textEdit edit} 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). +---@field additionalTextEdits? lsp.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. +---@field commitCharacters? string[] +---An optional {@link Command command} that is executed *after* inserting this completion. *Note* that +---additional modifications to the current document should be described with the +---{@link CompletionItem.additionalTextEdits additionalTextEdits}-property. +---@field command? lsp.Command +---A data entry field that is preserved on a completion item between a +---{@link CompletionRequest} and a {@link CompletionResolveRequest}. +---@field data? lsp.LSPAny + +---Represents a collection of {@link CompletionItem completion items} to be presented +---in the editor. +---@class lsp.CompletionList +---This list it not complete. Further typing results in recomputing this list. +--- +---Recomputed lists have all their items replaced (not appended) in the +---incomplete completion sessions. +---@field isIncomplete boolean +---In many cases the items of an actual completion result share the same +---value for properties like `commitCharacters` or the range of a text +---edit. A completion list can therefore define item defaults which will +---be used if a completion item itself doesn't specify the value. +--- +---If a completion list specifies a default value and a completion item +---also specifies a corresponding value the one from the item is used. +--- +---Servers are only allowed to return default values if the client +---signals support for this via the `completionList.itemDefaults` +---capability. +--- +---@since 3.17.0 +---@field itemDefaults? anonym3 +---The completion items. +---@field items lsp.CompletionItem[] + +---Registration options for a {@link CompletionRequest}. +---@class lsp.CompletionRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---Parameters for a {@link HoverRequest}. +---@class lsp.HoverParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams + +---The result of a hover request. +---@class lsp.Hover +---The hover's content +---@field contents lsp.MarkupContent|lsp.MarkedString|lsp.MarkedString[] +---An optional range inside the text document that is used to +---visualize the hover, e.g. by changing the background color. +---@field range? lsp.Range + +---Registration options for a {@link HoverRequest}. +---@class lsp.HoverRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---Parameters for a {@link SignatureHelpRequest}. +---@class lsp.SignatureHelpParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams +---The signature help context. This is only available if the client specifies +---to send this using the client capability `textDocument.signatureHelp.contextSupport === true` +--- +---@since 3.15.0 +---@field context? lsp.SignatureHelpContext + +---Signature help represents the signature of something +---callable. There can be multiple signature but only one +---active and only one active parameter. +---@class lsp.SignatureHelp +---One or more signatures. +---@field signatures lsp.SignatureInformation[] +---The active signature. If omitted or the value lies outside the +---range of `signatures` the value defaults to zero or is ignored if +---the `SignatureHelp` has no signatures. +--- +---Whenever possible implementors should make an active decision about +---the active signature and shouldn't rely on a default value. +--- +---In future version of the protocol this property might become +---mandatory to better express this. +---@field activeSignature? uinteger +---The active parameter of the active signature. If omitted or the value +---lies outside the range of `signatures[activeSignature].parameters` +---defaults to 0 if the active signature has parameters. If +---the active signature has no parameters it is ignored. +---In future version of the protocol this property might become +---mandatory to better express the active parameter if the +---active signature does have any. +---@field activeParameter? uinteger + +---Registration options for a {@link SignatureHelpRequest}. +---@class lsp.SignatureHelpRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---Parameters for a {@link DefinitionRequest}. +---@class lsp.DefinitionParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams + +---Registration options for a {@link DefinitionRequest}. +---@class lsp.DefinitionRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---Parameters for a {@link ReferencesRequest}. +---@class lsp.ReferenceParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams +---@field context lsp.ReferenceContext + +---Registration options for a {@link ReferencesRequest}. +---@class lsp.ReferenceRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---Parameters for a {@link DocumentHighlightRequest}. +---@class lsp.DocumentHighlightParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams + +---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. +---@class lsp.DocumentHighlight +---The range this highlight applies to. +---@field range lsp.Range +---The highlight kind, default is {@link DocumentHighlightKind.Text text}. +---@field kind? lsp.DocumentHighlightKind + +---Registration options for a {@link DocumentHighlightRequest}. +---@class lsp.DocumentHighlightRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---Parameters for a {@link DocumentSymbolRequest}. +---@class lsp.DocumentSymbolParams +---The text document. +---@field textDocument lsp.TextDocumentIdentifier + +---Represents information about programming constructs like variables, classes, +---interfaces etc. +---@class lsp.SymbolInformation: lsp.BaseSymbolInformation +---Indicates if this symbol is deprecated. +--- +---@deprecated Use tags instead +---@field 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 things like visibility modifiers. +--- +---The range doesn't have to denote a node range in the sense of an abstract +---syntax tree. It can therefore not be used to re-construct a hierarchy of +---the symbols. +---@field location lsp.Location + +---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. +---@class lsp.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. +---@field name string +---More detail for this symbol, e.g the signature of a function. +---@field detail? string +---The kind of this symbol. +---@field kind lsp.SymbolKind +---Tags for this document symbol. +--- +---@since 3.16.0 +---@field tags? lsp.SymbolTag[] +---Indicates if this symbol is deprecated. +--- +---@deprecated Use tags instead +---@field 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 clients cursor is +---inside the symbol to reveal in the symbol in the UI. +---@field range lsp.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 `range`. +---@field selectionRange lsp.Range +---Children of this symbol, e.g. properties of a class. +---@field children? lsp.DocumentSymbol[] + +---Registration options for a {@link DocumentSymbolRequest}. +---@class lsp.DocumentSymbolRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---The parameters of a {@link CodeActionRequest}. +---@class lsp.CodeActionParams +---The document in which the command was invoked. +---@field textDocument lsp.TextDocumentIdentifier +---The range for which the command was invoked. +---@field range lsp.Range +---Context carrying additional information. +---@field context lsp.CodeActionContext + +---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. +---@class lsp.Command +---Title of the command, like `save`. +---@field title string +---The identifier of the actual command handler. +---@field command string +---Arguments that the command handler should be +---invoked with. +---@field arguments? lsp.LSPAny[] + +---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. +---@class lsp.CodeAction +---A short, human-readable, title for this code action. +---@field title string +---The kind of the code action. +--- +---Used to filter code actions. +---@field kind? lsp.CodeActionKind +---The diagnostics that this code action resolves. +---@field diagnostics? lsp.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 +---@field isPreferred? boolean +---Marks that the code action cannot currently be applied. +--- +---Clients should follow the following guidelines regarding disabled code actions: +--- +--- - Disabled code actions are not shown in automatic [lightbulbs](https://code.visualstudio.com/docs/editor/editingevolved#_code-action) +--- code action menus. +--- +--- - Disabled actions are shown as faded out in the code action menu when the user requests a more specific type +--- of code action, such as refactorings. +--- +--- - If the user has a [keybinding](https://code.visualstudio.com/docs/editor/refactoring#_keybindings-for-code-actions) +--- that auto applies a code action and only disabled code actions are returned, the client should show the user an +--- error message with `reason` in the editor. +--- +---@since 3.16.0 +---@field disabled? anonym4 +---The workspace edit this code action performs. +---@field edit? lsp.WorkspaceEdit +---A command this code action executes. If a code action +---provides an edit and a command, first the edit is +---executed and then the command. +---@field command? lsp.Command +---A data entry field that is preserved on a code action between +---a `textDocument/codeAction` and a `codeAction/resolve` request. +--- +---@since 3.16.0 +---@field data? lsp.LSPAny + +---Registration options for a {@link CodeActionRequest}. +---@class lsp.CodeActionRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---The parameters of a {@link WorkspaceSymbolRequest}. +---@class lsp.WorkspaceSymbolParams +---A query string to filter symbols by. Clients may send an empty +---string here to request all symbols. +---@field query string + +---A special workspace symbol that supports locations without a range. +--- +---See also SymbolInformation. +--- +---@since 3.17.0 +---@class lsp.WorkspaceSymbol: lsp.BaseSymbolInformation +---The location of the symbol. Whether a server is allowed to +---return a location without a range depends on the client +---capability `workspace.symbol.resolveSupport`. +--- +---See SymbolInformation#location for more details. +---@field location lsp.Location|anonym5 +---A data entry field that is preserved on a workspace symbol between a +---workspace symbol request and a workspace symbol resolve request. +---@field data? lsp.LSPAny + +---Registration options for a {@link WorkspaceSymbolRequest}. +---@class lsp.WorkspaceSymbolRegistrationOptions: lsp.WorkspaceSymbolOptions + +---The parameters of a {@link CodeLensRequest}. +---@class lsp.CodeLensParams +---The document to request code lens for. +---@field textDocument lsp.TextDocumentIdentifier + +---A code lens represents a {@link 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 in two stages. +---@class lsp.CodeLens +---The range in which this code lens is valid. Should only span a single line. +---@field range lsp.Range +---The command this code lens represents. +---@field command? lsp.Command +---A data entry field that is preserved on a code lens item between +---a {@link CodeLensRequest} and a [CodeLensResolveRequest] +---(#CodeLensResolveRequest) +---@field data? lsp.LSPAny + +---Registration options for a {@link CodeLensRequest}. +---@class lsp.CodeLensRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---The parameters of a {@link DocumentLinkRequest}. +---@class lsp.DocumentLinkParams +---The document to provide document links for. +---@field textDocument lsp.TextDocumentIdentifier + +---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. +---@class lsp.DocumentLink +---The range this link applies to. +---@field range lsp.Range +---The uri this link points to. If missing a resolve request is sent later. +---@field target? lsp.URI +---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 +---@field tooltip? string +---A data entry field that is preserved on a document link between a +---DocumentLinkRequest and a DocumentLinkResolveRequest. +---@field data? lsp.LSPAny + +---Registration options for a {@link DocumentLinkRequest}. +---@class lsp.DocumentLinkRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---The parameters of a {@link DocumentFormattingRequest}. +---@class lsp.DocumentFormattingParams +---The document to format. +---@field textDocument lsp.TextDocumentIdentifier +---The format options. +---@field options lsp.FormattingOptions + +---Registration options for a {@link DocumentFormattingRequest}. +---@class lsp.DocumentFormattingRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---The parameters of a {@link DocumentRangeFormattingRequest}. +---@class lsp.DocumentRangeFormattingParams +---The document to format. +---@field textDocument lsp.TextDocumentIdentifier +---The range to format +---@field range lsp.Range +---The format options +---@field options lsp.FormattingOptions + +---Registration options for a {@link DocumentRangeFormattingRequest}. +---@class lsp.DocumentRangeFormattingRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---The parameters of a {@link DocumentRangesFormattingRequest}. +--- +---@since 3.18.0 +---@proposed +---@class lsp.DocumentRangesFormattingParams +---The document to format. +---@field textDocument lsp.TextDocumentIdentifier +---The ranges to format +---@field ranges lsp.Range[] +---The format options +---@field options lsp.FormattingOptions + +---The parameters of a {@link DocumentOnTypeFormattingRequest}. +---@class lsp.DocumentOnTypeFormattingParams +---The document to format. +---@field textDocument lsp.TextDocumentIdentifier +---The position around which the on type formatting should happen. +---This is not necessarily the exact position where the character denoted +---by the property `ch` got typed. +---@field position lsp.Position +---The character that has been typed that triggered the formatting +---on type request. That is not necessarily the last character that +---got inserted into the document since the client could auto insert +---characters as well (e.g. like automatic brace completion). +---@field ch string +---The formatting options. +---@field options lsp.FormattingOptions + +---Registration options for a {@link DocumentOnTypeFormattingRequest}. +---@class lsp.DocumentOnTypeFormattingRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---The parameters of a {@link RenameRequest}. +---@class lsp.RenameParams +---The document to rename. +---@field textDocument lsp.TextDocumentIdentifier +---The position at which this request was sent. +---@field position lsp.Position +---The new name of the symbol. If the given name is not valid the +---request must return a {@link ResponseError} with an +---appropriate message set. +---@field newName string + +---Registration options for a {@link RenameRequest}. +---@class lsp.RenameRegistrationOptions: lsp.TextDocumentRegistrationOptions + +---@class lsp.PrepareRenameParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams + +---The parameters of a {@link ExecuteCommandRequest}. +---@class lsp.ExecuteCommandParams +---The identifier of the actual command handler. +---@field command string +---Arguments that the command should be invoked with. +---@field arguments? lsp.LSPAny[] + +---Registration options for a {@link ExecuteCommandRequest}. +---@class lsp.ExecuteCommandRegistrationOptions: lsp.ExecuteCommandOptions + +---The parameters passed via an apply workspace edit request. +---@class lsp.ApplyWorkspaceEditParams +---An optional label of the workspace edit. This label is +---presented in the user interface for example on an undo +---stack to undo the workspace edit. +---@field label? string +---The edits to apply. +---@field edit lsp.WorkspaceEdit + +---The result returned from the apply workspace edit request. +--- +---@since 3.17 renamed from ApplyWorkspaceEditResponse +---@class lsp.ApplyWorkspaceEditResult +---Indicates whether the edit was applied or not. +---@field applied boolean +---An optional textual description for why the edit was not applied. +---This may be used by the server for diagnostic logging or to provide +---a suitable error for a request that triggered the edit. +---@field failureReason? string +---Depending on the client's failure handling strategy `failedChange` might +---contain the index of the change that failed. This property is only available +---if the client signals a `failureHandlingStrategy` in its client capabilities. +---@field failedChange? uinteger + +---@class lsp.WorkDoneProgressBegin +---@field kind "begin" +---Mandatory title of the progress operation. Used to briefly inform about +---the kind of operation being performed. +--- +---Examples: "Indexing" or "Linking dependencies". +---@field title string +---Controls if a cancel button should show to allow the user to cancel the +---long running operation. Clients that don't support cancellation are allowed +---to ignore the setting. +---@field cancellable? boolean +---Optional, more detailed associated progress message. Contains +---complementary information to the `title`. +--- +---Examples: "3/25 files", "project/src/module2", "node_modules/some_dep". +---If unset, the previous progress message (if any) is still valid. +---@field message? string +---Optional progress percentage to display (value 100 is considered 100%). +---If not provided infinite progress is assumed and clients are allowed +---to ignore the `percentage` value in subsequent in report notifications. +--- +---The value should be steadily rising. Clients are free to ignore values +---that are not following this rule. The value range is [0, 100]. +---@field percentage? uinteger + +---@class lsp.WorkDoneProgressReport +---@field kind "report" +---Controls enablement state of a cancel button. +--- +---Clients that don't support cancellation or don't support controlling the button's +---enablement state are allowed to ignore the property. +---@field cancellable? boolean +---Optional, more detailed associated progress message. Contains +---complementary information to the `title`. +--- +---Examples: "3/25 files", "project/src/module2", "node_modules/some_dep". +---If unset, the previous progress message (if any) is still valid. +---@field message? string +---Optional progress percentage to display (value 100 is considered 100%). +---If not provided infinite progress is assumed and clients are allowed +---to ignore the `percentage` value in subsequent in report notifications. +--- +---The value should be steadily rising. Clients are free to ignore values +---that are not following this rule. The value range is [0, 100] +---@field percentage? uinteger + +---@class lsp.WorkDoneProgressEnd +---@field kind "end" +---Optional, a final message indicating to for example indicate the outcome +---of the operation. +---@field message? string + +---@class lsp.SetTraceParams +---@field value lsp.TraceValues + +---@class lsp.LogTraceParams +---@field message string +---@field verbose? string + +---@class lsp.CancelParams +---The request id to cancel. +---@field id integer|string + +---@class lsp.ProgressParams +---The progress token provided by the client or server. +---@field token lsp.ProgressToken +---The progress data. +---@field value lsp.LSPAny + +---A parameter literal used in requests to pass a text document and a position inside that +---document. +---@class lsp.TextDocumentPositionParams +---The text document. +---@field textDocument lsp.TextDocumentIdentifier +---The position inside the text document. +---@field position lsp.Position + +---@class lsp.WorkDoneProgressParams +---An optional token that a server can use to report work done progress. +---@field workDoneToken? lsp.ProgressToken + +---@class lsp.PartialResultParams +---An optional token that a server can use to report partial results (e.g. streaming) to +---the client. +---@field partialResultToken? lsp.ProgressToken + +---Represents the connection of two locations. Provides additional metadata over normal {@link Location locations}, +---including an origin range. +---@class lsp.LocationLink +---Span of the origin of this link. +--- +---Used as the underlined span for mouse interaction. Defaults to the word range at +---the definition position. +---@field originSelectionRange? lsp.Range +---The target resource identifier of this link. +---@field targetUri lsp.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. +---@field targetRange lsp.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 `targetRange`. See also `DocumentSymbol#range` +---@field targetSelectionRange lsp.Range + +---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 } +---} +---``` +---@class lsp.Range +---The range's start position. +---@field start lsp.Position +---The range's end position. +---@field end lsp.Position + +---@class lsp.ImplementationOptions + +---Static registration options to be returned in the initialize +---request. +---@class lsp.StaticRegistrationOptions +---The id used to register the request. The id can be used to deregister +---the request again. See also Registration#id. +---@field id? string + +---@class lsp.TypeDefinitionOptions + +---The workspace folder change event. +---@class lsp.WorkspaceFoldersChangeEvent +---The array of added workspace folders +---@field added lsp.WorkspaceFolder[] +---The array of the removed workspace folders +---@field removed lsp.WorkspaceFolder[] + +---@class lsp.ConfigurationItem +---The scope to get the configuration section for. +---@field scopeUri? string +---The configuration section asked for. +---@field section? string + +---A literal to identify a text document in the client. +---@class lsp.TextDocumentIdentifier +---The text document's uri. +---@field uri lsp.DocumentUri + +---Represents a color in RGBA space. +---@class lsp.Color +---The red component of this color in the range [0-1]. +---@field red decimal +---The green component of this color in the range [0-1]. +---@field green decimal +---The blue component of this color in the range [0-1]. +---@field blue decimal +---The alpha component of this color in the range [0-1]. +---@field alpha decimal + +---@class lsp.DocumentColorOptions + +---@class lsp.FoldingRangeOptions + +---@class lsp.DeclarationOptions + +---Position in a text document expressed as zero-based line and character +---offset. Prior to 3.17 the offsets were always 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. +---Since 3.17 clients and servers can agree on a different string encoding +---representation (e.g. UTF-8). The client announces it's supported encoding +---via the client capability [`general.positionEncodings`](#clientCapabilities). +---The value is an array of position encodings the client supports, with +---decreasing preference (e.g. the encoding at index `0` is the most preferred +---one). To stay backwards compatible the only mandatory encoding is UTF-16 +---represented via the string `utf-16`. The server can pick one of the +---encodings offered by the client and signals that encoding back to the +---client via the initialize result's property +---[`capabilities.positionEncoding`](#serverCapabilities). If the string value +---`utf-16` is missing from the client's capability `general.positionEncodings` +---servers can safely assume that the client supports UTF-16. If the server +---omits the position encoding in its initialize result the encoding defaults +---to the string value `utf-16`. Implementation considerations: since the +---conversion from one encoding into another requires the content of the +---file / line the conversion is best done where the file is read which is +---usually on the server side. +--- +---Positions are line end character agnostic. So you can not specify a position +---that denotes `\r|\n` or `\n|` where `|` represents the character offset. +--- +---@since 3.17.0 - support for negotiated position encoding. +---@class lsp.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. +---@field line uinteger +---Character offset on a line in a document (zero-based). +--- +---The meaning of this offset is determined by the negotiated +---`PositionEncodingKind`. +--- +---If the character value is greater than the line length it defaults back to the +---line length. +---@field character uinteger + +---@class lsp.SelectionRangeOptions + +---Call hierarchy options used during static registration. +--- +---@since 3.16.0 +---@class lsp.CallHierarchyOptions + +---@since 3.16.0 +---@class lsp.SemanticTokensOptions +---The legend used by the server +---@field legend lsp.SemanticTokensLegend +---Server supports providing semantic tokens for a specific range +---of a document. +---@field range? boolean|anonym6 +---Server supports providing semantic tokens for a full document. +---@field full? boolean|anonym7 + +---@since 3.16.0 +---@class lsp.SemanticTokensEdit +---The start offset of the edit. +---@field start uinteger +---The count of elements to remove. +---@field deleteCount uinteger +---The elements to insert. +---@field data? uinteger[] + +---@class lsp.LinkedEditingRangeOptions + +---Represents information on a file/folder create. +--- +---@since 3.16.0 +---@class lsp.FileCreate +---A file:// URI for the location of the file/folder being created. +---@field uri string + +---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. +---@class lsp.TextDocumentEdit +---The text document to change. +---@field textDocument lsp.OptionalVersionedTextDocumentIdentifier +---The edits to be applied. +--- +---@since 3.16.0 - support for AnnotatedTextEdit. This is guarded using a +---client capability. +---@field edits lsp.TextEdit|lsp.AnnotatedTextEdit[] + +---Create file operation. +---@class lsp.CreateFile: lsp.ResourceOperation +---A create +---@field kind "create" +---The resource to create. +---@field uri lsp.DocumentUri +---Additional options +---@field options? lsp.CreateFileOptions + +---Rename file operation +---@class lsp.RenameFile: lsp.ResourceOperation +---A rename +---@field kind "rename" +---The old (existing) location. +---@field oldUri lsp.DocumentUri +---The new location. +---@field newUri lsp.DocumentUri +---Rename options. +---@field options? lsp.RenameFileOptions + +---Delete file operation +---@class lsp.DeleteFile: lsp.ResourceOperation +---A delete +---@field kind "delete" +---The file to delete. +---@field uri lsp.DocumentUri +---Delete options. +---@field options? lsp.DeleteFileOptions + +---Additional information that describes document changes. +--- +---@since 3.16.0 +---@class lsp.ChangeAnnotation +---A human-readable string describing the actual change. The string +---is rendered prominent in the user interface. +---@field label string +---A flag which indicates that user confirmation is needed +---before applying the change. +---@field needsConfirmation? boolean +---A human-readable string which is rendered less prominent in +---the user interface. +---@field description? string + +---A filter to describe in which file operation requests or notifications +---the server is interested in receiving. +--- +---@since 3.16.0 +---@class lsp.FileOperationFilter +---A Uri scheme like `file` or `untitled`. +---@field scheme? string +---The actual file operation pattern. +---@field pattern lsp.FileOperationPattern + +---Represents information on a file/folder rename. +--- +---@since 3.16.0 +---@class lsp.FileRename +---A file:// URI for the original location of the file/folder being renamed. +---@field oldUri string +---A file:// URI for the new location of the file/folder being renamed. +---@field newUri string + +---Represents information on a file/folder delete. +--- +---@since 3.16.0 +---@class lsp.FileDelete +---A file:// URI for the location of the file/folder being deleted. +---@field uri string + +---@class lsp.MonikerOptions + +---Type hierarchy options used during static registration. +--- +---@since 3.17.0 +---@class lsp.TypeHierarchyOptions + +---@since 3.17.0 +---@class lsp.InlineValueContext +---The stack frame (as a DAP Id) where the execution has stopped. +---@field frameId integer +---The document range where execution has stopped. +---Typically the end position of the range denotes the line where the inline values are shown. +---@field stoppedLocation lsp.Range + +---Provide inline value as text. +--- +---@since 3.17.0 +---@class lsp.InlineValueText +---The document range for which the inline value applies. +---@field range lsp.Range +---The text of the inline value. +---@field text string + +---Provide inline value through a variable lookup. +---If only a range is specified, the variable name will be extracted from the underlying document. +---An optional variable name can be used to override the extracted name. +--- +---@since 3.17.0 +---@class lsp.InlineValueVariableLookup +---The document range for which the inline value applies. +---The range is used to extract the variable name from the underlying document. +---@field range lsp.Range +---If specified the name of the variable to look up. +---@field variableName? string +---How to perform the lookup. +---@field caseSensitiveLookup boolean + +---Provide an inline value through an expression evaluation. +---If only a range is specified, the expression will be extracted from the underlying document. +---An optional expression can be used to override the extracted expression. +--- +---@since 3.17.0 +---@class lsp.InlineValueEvaluatableExpression +---The document range for which the inline value applies. +---The range is used to extract the evaluatable expression from the underlying document. +---@field range lsp.Range +---If specified the expression overrides the extracted expression. +---@field expression? string + +---Inline value options used during static registration. +--- +---@since 3.17.0 +---@class lsp.InlineValueOptions + +---An inlay hint label part allows for interactive and composite labels +---of inlay hints. +--- +---@since 3.17.0 +---@class lsp.InlayHintLabelPart +---The value of this label part. +---@field value string +---The tooltip text when you hover over this label part. Depending on +---the client capability `inlayHint.resolveSupport` clients might resolve +---this property late using the resolve request. +---@field tooltip? string|lsp.MarkupContent +---An optional source code location that represents this +---label part. +--- +---The editor will use this location for the hover and for code navigation +---features: This part will become a clickable link that resolves to the +---definition of the symbol at the given location (not necessarily the +---location itself), it shows the hover that shows at the given location, +---and it shows a context menu with further code navigation commands. +--- +---Depending on the client capability `inlayHint.resolveSupport` clients +---might resolve this property late using the resolve request. +---@field location? lsp.Location +---An optional command for this label part. +--- +---Depending on the client capability `inlayHint.resolveSupport` clients +---might resolve this property late using the resolve request. +---@field command? lsp.Command + +---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. +---@class lsp.MarkupContent +---The type of the Markup +---@field kind lsp.MarkupKind +---The content itself +---@field value string + +---Inlay hint options used during static registration. +--- +---@since 3.17.0 +---@class lsp.InlayHintOptions +---The server provides support to resolve additional +---information for an inlay hint item. +---@field resolveProvider? boolean + +---A full diagnostic report with a set of related documents. +--- +---@since 3.17.0 +---@class lsp.RelatedFullDocumentDiagnosticReport: lsp.FullDocumentDiagnosticReport +---Diagnostics of related documents. This information is useful +---in programming languages where code in a file A can generate +---diagnostics in a file B which A depends on. An example of +---such a language is C/C++ where marco definitions in a file +---a.cpp and result in errors in a header file b.hpp. +--- +---@since 3.17.0 +---@field relatedDocuments? table + +---An unchanged diagnostic report with a set of related documents. +--- +---@since 3.17.0 +---@class lsp.RelatedUnchangedDocumentDiagnosticReport: lsp.UnchangedDocumentDiagnosticReport +---Diagnostics of related documents. This information is useful +---in programming languages where code in a file A can generate +---diagnostics in a file B which A depends on. An example of +---such a language is C/C++ where marco definitions in a file +---a.cpp and result in errors in a header file b.hpp. +--- +---@since 3.17.0 +---@field relatedDocuments? table + +---A diagnostic report with a full set of problems. +--- +---@since 3.17.0 +---@class lsp.FullDocumentDiagnosticReport +---A full document diagnostic report. +---@field kind "full" +---An optional result id. If provided it will +---be sent on the next diagnostic request for the +---same document. +---@field resultId? string +---The actual items. +---@field items lsp.Diagnostic[] + +---A diagnostic report indicating that the last returned +---report is still accurate. +--- +---@since 3.17.0 +---@class lsp.UnchangedDocumentDiagnosticReport +---A document diagnostic report indicating +---no changes to the last result. A server can +---only return `unchanged` if result ids are +---provided. +---@field kind "unchanged" +---A result id which will be sent on the next +---diagnostic request for the same document. +---@field resultId string + +---Diagnostic options. +--- +---@since 3.17.0 +---@class lsp.DiagnosticOptions +---An optional identifier under which the diagnostics are +---managed by the client. +---@field identifier? string +---Whether the language has inter file dependencies meaning that +---editing code in one file can result in a different diagnostic +---set in another file. Inter file dependencies are common for +---most programming languages and typically uncommon for linters. +---@field interFileDependencies boolean +---The server provides support for workspace diagnostics as well. +---@field workspaceDiagnostics boolean + +---A previous result id in a workspace pull request. +--- +---@since 3.17.0 +---@class lsp.PreviousResultId +---The URI for which the client knowns a +---result id. +---@field uri lsp.DocumentUri +---The value of the previous result id. +---@field value string + +---A notebook document. +--- +---@since 3.17.0 +---@class lsp.NotebookDocument +---The notebook document's uri. +---@field uri lsp.URI +---The type of the notebook. +---@field notebookType string +---The version number of this document (it will increase after each +---change, including undo/redo). +---@field version integer +---Additional metadata stored with the notebook +---document. +--- +---Note: should always be an object literal (e.g. LSPObject) +---@field metadata? lsp.LSPObject +---The cells of a notebook. +---@field cells lsp.NotebookCell[] + +---An item to transfer a text document from the client to the +---server. +---@class lsp.TextDocumentItem +---The text document's uri. +---@field uri lsp.DocumentUri +---The text document's language identifier. +---@field languageId string +---The version number of this document (it will increase after each +---change, including undo/redo). +---@field version integer +---The content of the opened text document. +---@field text string + +---A versioned notebook document identifier. +--- +---@since 3.17.0 +---@class lsp.VersionedNotebookDocumentIdentifier +---The version number of this notebook document. +---@field version integer +---The notebook document's uri. +---@field uri lsp.URI + +---A change event for a notebook document. +--- +---@since 3.17.0 +---@class lsp.NotebookDocumentChangeEvent +---The changed meta data if any. +--- +---Note: should always be an object literal (e.g. LSPObject) +---@field metadata? lsp.LSPObject +---Changes to cells +---@field cells? anonym10 + +---A literal to identify a notebook document in the client. +--- +---@since 3.17.0 +---@class lsp.NotebookDocumentIdentifier +---The notebook document's uri. +---@field uri lsp.URI + +---Provides information about the context in which an inline completion was requested. +--- +---@since 3.18.0 +---@class lsp.InlineCompletionContext +---Describes how the inline completion was triggered. +---@field triggerKind lsp.InlineCompletionTriggerKind +---Provides information about the currently selected item in the autocomplete widget if it is visible. +---@field selectedCompletionInfo? lsp.SelectedCompletionInfo + +---Inline completion options used during static registration. +--- +---@since 3.18.0 +---@class lsp.InlineCompletionOptions + +---General parameters to to register for an notification or to register a provider. +---@class lsp.Registration +---The id used to register the request. The id can be used to deregister +---the request again. +---@field id string +---The method / capability to register for. +---@field method string +---Options necessary for the registration. +---@field registerOptions? lsp.LSPAny + +---General parameters to unregister a request or notification. +---@class lsp.Unregistration +---The id used to unregister the request or notification. Usually an id +---provided during the register request. +---@field id string +---The method to unregister for. +---@field method string + +---The initialize parameters +---@class lsp._InitializeParams +---The process Id of the parent process that started +---the server. +--- +---Is `null` if the process has not been started by another process. +---If the parent process is not alive then the server should exit. +---@field processId integer|lsp.null +---Information about the client +--- +---@since 3.15.0 +---@field clientInfo? anonym11 +---The locale the client is currently showing the user interface +---in. This must not necessarily be the locale of the operating +---system. +--- +---Uses IETF language tags as the value's syntax +---(See https://en.wikipedia.org/wiki/IETF_language_tag) +--- +---@since 3.16.0 +---@field locale? string +---The rootPath of the workspace. Is null +---if no folder is open. +--- +---@deprecated in favour of rootUri. +---@field rootPath? string|lsp.null +---The rootUri of the workspace. Is null if no +---folder is open. If both `rootPath` and `rootUri` are set +---`rootUri` wins. +--- +---@deprecated in favour of workspaceFolders. +---@field rootUri lsp.DocumentUri|lsp.null +---The capabilities provided by the client (editor or tool) +---@field capabilities lsp.ClientCapabilities +---User provided initialization options. +---@field initializationOptions? lsp.LSPAny +---The initial trace setting. If omitted trace is disabled ('off'). +---@field trace? lsp.TraceValues + +---@class lsp.WorkspaceFoldersInitializeParams +---The workspace folders configured in the client when the server starts. +--- +---This property is only available if the client supports workspace folders. +---It can be `null` if the client supports workspace folders but none are +---configured. +--- +---@since 3.6.0 +---@field workspaceFolders? lsp.WorkspaceFolder[]|lsp.null + +---Defines the capabilities provided by a language +---server. +---@class lsp.ServerCapabilities +---The position encoding the server picked from the encodings offered +---by the client via the client capability `general.positionEncodings`. +--- +---If the client didn't provide any position encodings the only valid +---value that a server can return is 'utf-16'. +--- +---If omitted it defaults to 'utf-16'. +--- +---@since 3.17.0 +---@field positionEncoding? lsp.PositionEncodingKind +---Defines how text documents are synced. Is either a detailed structure +---defining each notification or for backwards compatibility the +---TextDocumentSyncKind number. +---@field textDocumentSync? lsp.TextDocumentSyncOptions|lsp.TextDocumentSyncKind +---Defines how notebook documents are synced. +--- +---@since 3.17.0 +---@field notebookDocumentSync? lsp.NotebookDocumentSyncOptions|lsp.NotebookDocumentSyncRegistrationOptions +---The server provides completion support. +---@field completionProvider? lsp.CompletionOptions +---The server provides hover support. +---@field hoverProvider? boolean|lsp.HoverOptions +---The server provides signature help support. +---@field signatureHelpProvider? lsp.SignatureHelpOptions +---The server provides Goto Declaration support. +---@field declarationProvider? boolean|lsp.DeclarationOptions|lsp.DeclarationRegistrationOptions +---The server provides goto definition support. +---@field definitionProvider? boolean|lsp.DefinitionOptions +---The server provides Goto Type Definition support. +---@field typeDefinitionProvider? boolean|lsp.TypeDefinitionOptions|lsp.TypeDefinitionRegistrationOptions +---The server provides Goto Implementation support. +---@field implementationProvider? boolean|lsp.ImplementationOptions|lsp.ImplementationRegistrationOptions +---The server provides find references support. +---@field referencesProvider? boolean|lsp.ReferenceOptions +---The server provides document highlight support. +---@field documentHighlightProvider? boolean|lsp.DocumentHighlightOptions +---The server provides document symbol support. +---@field documentSymbolProvider? boolean|lsp.DocumentSymbolOptions +---The server provides code actions. CodeActionOptions may only be +---specified if the client states that it supports +---`codeActionLiteralSupport` in its initial `initialize` request. +---@field codeActionProvider? boolean|lsp.CodeActionOptions +---The server provides code lens. +---@field codeLensProvider? lsp.CodeLensOptions +---The server provides document link support. +---@field documentLinkProvider? lsp.DocumentLinkOptions +---The server provides color provider support. +---@field colorProvider? boolean|lsp.DocumentColorOptions|lsp.DocumentColorRegistrationOptions +---The server provides workspace symbol support. +---@field workspaceSymbolProvider? boolean|lsp.WorkspaceSymbolOptions +---The server provides document formatting. +---@field documentFormattingProvider? boolean|lsp.DocumentFormattingOptions +---The server provides document range formatting. +---@field documentRangeFormattingProvider? boolean|lsp.DocumentRangeFormattingOptions +---The server provides document formatting on typing. +---@field documentOnTypeFormattingProvider? lsp.DocumentOnTypeFormattingOptions +---The server provides rename support. RenameOptions may only be +---specified if the client states that it supports +---`prepareSupport` in its initial `initialize` request. +---@field renameProvider? boolean|lsp.RenameOptions +---The server provides folding provider support. +---@field foldingRangeProvider? boolean|lsp.FoldingRangeOptions|lsp.FoldingRangeRegistrationOptions +---The server provides selection range support. +---@field selectionRangeProvider? boolean|lsp.SelectionRangeOptions|lsp.SelectionRangeRegistrationOptions +---The server provides execute command support. +---@field executeCommandProvider? lsp.ExecuteCommandOptions +---The server provides call hierarchy support. +--- +---@since 3.16.0 +---@field callHierarchyProvider? boolean|lsp.CallHierarchyOptions|lsp.CallHierarchyRegistrationOptions +---The server provides linked editing range support. +--- +---@since 3.16.0 +---@field linkedEditingRangeProvider? boolean|lsp.LinkedEditingRangeOptions|lsp.LinkedEditingRangeRegistrationOptions +---The server provides semantic tokens support. +--- +---@since 3.16.0 +---@field semanticTokensProvider? lsp.SemanticTokensOptions|lsp.SemanticTokensRegistrationOptions +---The server provides moniker support. +--- +---@since 3.16.0 +---@field monikerProvider? boolean|lsp.MonikerOptions|lsp.MonikerRegistrationOptions +---The server provides type hierarchy support. +--- +---@since 3.17.0 +---@field typeHierarchyProvider? boolean|lsp.TypeHierarchyOptions|lsp.TypeHierarchyRegistrationOptions +---The server provides inline values. +--- +---@since 3.17.0 +---@field inlineValueProvider? boolean|lsp.InlineValueOptions|lsp.InlineValueRegistrationOptions +---The server provides inlay hints. +--- +---@since 3.17.0 +---@field inlayHintProvider? boolean|lsp.InlayHintOptions|lsp.InlayHintRegistrationOptions +---The server has support for pull model diagnostics. +--- +---@since 3.17.0 +---@field diagnosticProvider? lsp.DiagnosticOptions|lsp.DiagnosticRegistrationOptions +---Inline completion options used during static registration. +--- +---@since 3.18.0 +---@field inlineCompletionProvider? boolean|lsp.InlineCompletionOptions +---Workspace specific server capabilities. +---@field workspace? anonym12 +---Experimental server capabilities. +---@field experimental? lsp.LSPAny + +---A text document identifier to denote a specific version of a text document. +---@class lsp.VersionedTextDocumentIdentifier: lsp.TextDocumentIdentifier +---The version number of this document. +---@field version integer + +---Save options. +---@class lsp.SaveOptions +---The client is supposed to include the content on save. +---@field includeText? boolean + +---An event describing a file change. +---@class lsp.FileEvent +---The file's uri. +---@field uri lsp.DocumentUri +---The change type. +---@field type lsp.FileChangeType + +---@class lsp.FileSystemWatcher +---The glob pattern to watch. See {@link GlobPattern glob pattern} for more detail. +--- +---@since 3.17.0 support for relative patterns. +---@field globPattern lsp.GlobPattern +---The kind of events of interest. If omitted it defaults +---to WatchKind.Create | WatchKind.Change | WatchKind.Delete +---which is 7. +---@field kind? lsp.WatchKind + +---Represents a diagnostic, such as a compiler error or warning. Diagnostic objects +---are only valid in the scope of a resource. +---@class lsp.Diagnostic +---The range at which the message applies +---@field range lsp.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. +---@field severity? lsp.DiagnosticSeverity +---The diagnostic's code, which usually appear in the user interface. +---@field code? integer|string +---An optional property to describe the error code. +---Requires the code field (above) to be present/not null. +--- +---@since 3.16.0 +---@field codeDescription? lsp.CodeDescription +---A human-readable string describing the source of this +---diagnostic, e.g. 'typescript' or 'super lint'. It usually +---appears in the user interface. +---@field source? string +---The diagnostic's message. It usually appears in the user interface +---@field message string +---Additional metadata about the diagnostic. +--- +---@since 3.15.0 +---@field tags? lsp.DiagnosticTag[] +---An array of related diagnostic information, e.g. when symbol-names within +---a scope collide all definitions can be marked via this property. +---@field relatedInformation? lsp.DiagnosticRelatedInformation[] +---A data entry field that is preserved between a `textDocument/publishDiagnostics` +---notification and `textDocument/codeAction` request. +--- +---@since 3.16.0 +---@field data? lsp.LSPAny + +---Contains additional information about the context in which a completion request is triggered. +---@class lsp.CompletionContext +---How the completion was triggered. +---@field triggerKind lsp.CompletionTriggerKind +---The trigger character (a single character) that has trigger code complete. +---Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter` +---@field triggerCharacter? string + +---Additional details for a completion item label. +--- +---@since 3.17.0 +---@class lsp.CompletionItemLabelDetails +---An optional string which is rendered less prominently directly after {@link CompletionItem.label label}, +---without any spacing. Should be used for function signatures and type annotations. +---@field detail? string +---An optional string which is rendered less prominently after {@link CompletionItem.detail}. Should be used +---for fully qualified names and file paths. +---@field description? string + +---A special text edit to provide an insert and a replace operation. +--- +---@since 3.16.0 +---@class lsp.InsertReplaceEdit +---The string to be inserted. +---@field newText string +---The range if the insert is requested +---@field insert lsp.Range +---The range if the replace is requested. +---@field replace lsp.Range + +---Completion options. +---@class lsp.CompletionOptions +---Most tools trigger completion request automatically without explicitly requesting +---it using a keyboard shortcut (e.g. Ctrl+Space). Typically they do so when the user +---starts to type an identifier. For example if the user types `c` in a JavaScript file +---code complete will automatically pop up present `console` besides others as a +---completion item. Characters that make up identifiers don't need to be listed here. +--- +---If code complete should automatically be trigger on characters not being valid inside +---an identifier (for example `.` in JavaScript) list them in `triggerCharacters`. +---@field triggerCharacters? string[] +---The list of all possible characters that commit a completion. This field can be used +---if clients don't support individual commit characters per completion item. See +---`ClientCapabilities.textDocument.completion.completionItem.commitCharactersSupport` +--- +---If a server provides both `allCommitCharacters` and commit characters on an individual +---completion item the ones on the completion item win. +--- +---@since 3.2.0 +---@field allCommitCharacters? string[] +---The server provides support to resolve additional +---information for a completion item. +---@field resolveProvider? boolean +---The server supports the following `CompletionItem` specific +---capabilities. +--- +---@since 3.17.0 +---@field completionItem? anonym13 + +---Hover options. +---@class lsp.HoverOptions + +---Additional information about the context in which a signature help request was triggered. +--- +---@since 3.15.0 +---@class lsp.SignatureHelpContext +---Action that caused signature help to be triggered. +---@field triggerKind lsp.SignatureHelpTriggerKind +---Character that caused signature help to be triggered. +--- +---This is undefined when `triggerKind !== SignatureHelpTriggerKind.TriggerCharacter` +---@field triggerCharacter? string +---`true` if signature help was already showing when it was triggered. +--- +---Retriggers occurs when the signature help is already active and can be caused by actions such as +---typing a trigger character, a cursor move, or document content changes. +---@field isRetrigger boolean +---The currently active `SignatureHelp`. +--- +---The `activeSignatureHelp` has its `SignatureHelp.activeSignature` field updated based on +---the user navigating through available signatures. +---@field activeSignatureHelp? lsp.SignatureHelp + +---Represents the signature of something callable. A signature +---can have a label, like a function-name, a doc-comment, and +---a set of parameters. +---@class lsp.SignatureInformation +---The label of this signature. Will be shown in +---the UI. +---@field label string +---The human-readable doc-comment of this signature. Will be shown +---in the UI but can be omitted. +---@field documentation? string|lsp.MarkupContent +---The parameters of this signature. +---@field parameters? lsp.ParameterInformation[] +---The index of the active parameter. +--- +---If provided, this is used in place of `SignatureHelp.activeParameter`. +--- +---@since 3.16.0 +---@field activeParameter? uinteger + +---Server Capabilities for a {@link SignatureHelpRequest}. +---@class lsp.SignatureHelpOptions +---List of characters that trigger signature help automatically. +---@field triggerCharacters? string[] +---List of characters that re-trigger signature help. +--- +---These trigger characters are only active when signature help is already showing. All trigger characters +---are also counted as re-trigger characters. +--- +---@since 3.15.0 +---@field retriggerCharacters? string[] + +---Server Capabilities for a {@link DefinitionRequest}. +---@class lsp.DefinitionOptions + +---Value-object that contains additional information when +---requesting references. +---@class lsp.ReferenceContext +---Include the declaration of the current symbol. +---@field includeDeclaration boolean + +---Reference options. +---@class lsp.ReferenceOptions + +---Provider options for a {@link DocumentHighlightRequest}. +---@class lsp.DocumentHighlightOptions + +---A base for all symbol information. +---@class lsp.BaseSymbolInformation +---The name of this symbol. +---@field name string +---The kind of this symbol. +---@field kind lsp.SymbolKind +---Tags for this symbol. +--- +---@since 3.16.0 +---@field tags? lsp.SymbolTag[] +---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. +---@field containerName? string + +---Provider options for a {@link DocumentSymbolRequest}. +---@class lsp.DocumentSymbolOptions +---A human-readable string that is shown when multiple outlines trees +---are shown for the same document. +--- +---@since 3.16.0 +---@field label? string + +---Contains additional diagnostic information about the context in which +---a {@link CodeActionProvider.provideCodeActions code action} is run. +---@class lsp.CodeActionContext +---An array of diagnostics known on the client side overlapping the range provided to the +---`textDocument/codeAction` request. They are provided 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. +---@field diagnostics lsp.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. +---@field only? lsp.CodeActionKind[] +---The reason why code actions were requested. +--- +---@since 3.17.0 +---@field triggerKind? lsp.CodeActionTriggerKind + +---Provider options for a {@link CodeActionRequest}. +---@class lsp.CodeActionOptions +---CodeActionKinds that this server may return. +--- +---The list of kinds may be generic, such as `CodeActionKind.Refactor`, or the server +---may list out every specific kind they provide. +---@field codeActionKinds? lsp.CodeActionKind[] +---The server provides support to resolve additional +---information for a code action. +--- +---@since 3.16.0 +---@field resolveProvider? boolean + +---Server capabilities for a {@link WorkspaceSymbolRequest}. +---@class lsp.WorkspaceSymbolOptions +---The server provides support to resolve additional +---information for a workspace symbol. +--- +---@since 3.17.0 +---@field resolveProvider? boolean + +---Code Lens provider options of a {@link CodeLensRequest}. +---@class lsp.CodeLensOptions +---Code lens has a resolve provider as well. +---@field resolveProvider? boolean + +---Provider options for a {@link DocumentLinkRequest}. +---@class lsp.DocumentLinkOptions +---Document links have a resolve provider as well. +---@field resolveProvider? boolean + +---Value-object describing what options formatting should use. +---@class lsp.FormattingOptions +---Size of a tab in spaces. +---@field tabSize uinteger +---Prefer spaces over tabs. +---@field insertSpaces boolean +---Trim trailing whitespace on a line. +--- +---@since 3.15.0 +---@field trimTrailingWhitespace? boolean +---Insert a newline character at the end of the file if one does not exist. +--- +---@since 3.15.0 +---@field insertFinalNewline? boolean +---Trim all newlines after the final newline at the end of the file. +--- +---@since 3.15.0 +---@field trimFinalNewlines? boolean + +---Provider options for a {@link DocumentFormattingRequest}. +---@class lsp.DocumentFormattingOptions + +---Provider options for a {@link DocumentRangeFormattingRequest}. +---@class lsp.DocumentRangeFormattingOptions +---Whether the server supports formatting multiple ranges at once. +--- +---@since 3.18.0 +---@proposed +---@field rangesSupport? boolean + +---Provider options for a {@link DocumentOnTypeFormattingRequest}. +---@class lsp.DocumentOnTypeFormattingOptions +---A character on which formatting should be triggered, like `{`. +---@field firstTriggerCharacter string +---More trigger characters. +---@field moreTriggerCharacter? string[] + +---Provider options for a {@link RenameRequest}. +---@class lsp.RenameOptions +---Renames should be checked and tested before being executed. +--- +---@since version 3.12.0 +---@field prepareProvider? boolean + +---The server capabilities of a {@link ExecuteCommandRequest}. +---@class lsp.ExecuteCommandOptions +---The commands to be executed on the server +---@field commands string[] + +---@since 3.16.0 +---@class lsp.SemanticTokensLegend +---The token types a server uses. +---@field tokenTypes string[] +---The token modifiers a server uses. +---@field tokenModifiers string[] + +---A text document identifier to optionally denote a specific version of a text document. +---@class lsp.OptionalVersionedTextDocumentIdentifier: lsp.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 specified with document content ownership). +---@field version integer|lsp.null + +---A special text edit with an additional change annotation. +--- +---@since 3.16.0. +---@class lsp.AnnotatedTextEdit: lsp.TextEdit +---The actual identifier of the change annotation +---@field annotationId lsp.ChangeAnnotationIdentifier + +---A generic resource operation. +---@class lsp.ResourceOperation +---The resource operation kind. +---@field kind string +---An optional annotation identifier describing the operation. +--- +---@since 3.16.0 +---@field annotationId? lsp.ChangeAnnotationIdentifier + +---Options to create a file. +---@class lsp.CreateFileOptions +---Overwrite existing file. Overwrite wins over `ignoreIfExists` +---@field overwrite? boolean +---Ignore if exists. +---@field ignoreIfExists? boolean + +---Rename file options +---@class lsp.RenameFileOptions +---Overwrite target if existing. Overwrite wins over `ignoreIfExists` +---@field overwrite? boolean +---Ignores if target exists. +---@field ignoreIfExists? boolean + +---Delete file options +---@class lsp.DeleteFileOptions +---Delete the content recursively if a folder is denoted. +---@field recursive? boolean +---Ignore the operation if the file doesn't exist. +---@field ignoreIfNotExists? boolean + +---A pattern to describe in which file operation requests or notifications +---the server is interested in receiving. +--- +---@since 3.16.0 +---@class lsp.FileOperationPattern +---The glob pattern to match. Glob patterns can have the following syntax: +---- `*` to match one or more characters in a path segment +---- `?` to match on one character in a path segment +---- `**` to match any number of path segments, including none +---- `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files) +---- `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …) +---- `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`) +---@field glob string +---Whether to match files or folders with this pattern. +--- +---Matches both if undefined. +---@field matches? lsp.FileOperationPatternKind +---Additional options used during matching. +---@field options? lsp.FileOperationPatternOptions + +---A full document diagnostic report for a workspace diagnostic result. +--- +---@since 3.17.0 +---@class lsp.WorkspaceFullDocumentDiagnosticReport: lsp.FullDocumentDiagnosticReport +---The URI for which diagnostic information is reported. +---@field uri lsp.DocumentUri +---The version number for which the diagnostics are reported. +---If the document is not marked as open `null` can be provided. +---@field version integer|lsp.null + +---An unchanged document diagnostic report for a workspace diagnostic result. +--- +---@since 3.17.0 +---@class lsp.WorkspaceUnchangedDocumentDiagnosticReport: lsp.UnchangedDocumentDiagnosticReport +---The URI for which diagnostic information is reported. +---@field uri lsp.DocumentUri +---The version number for which the diagnostics are reported. +---If the document is not marked as open `null` can be provided. +---@field version integer|lsp.null + +---A notebook cell. +--- +---A cell's document URI must be unique across ALL notebook +---cells and can therefore be used to uniquely identify a +---notebook cell or the cell's text document. +--- +---@since 3.17.0 +---@class lsp.NotebookCell +---The cell's kind +---@field kind lsp.NotebookCellKind +---The URI of the cell's text document +---content. +---@field document lsp.DocumentUri +---Additional metadata stored with the cell. +--- +---Note: should always be an object literal (e.g. LSPObject) +---@field metadata? lsp.LSPObject +---Additional execution summary information +---if supported by the client. +---@field executionSummary? lsp.ExecutionSummary + +---A change describing how to move a `NotebookCell` +---array from state S to S'. +--- +---@since 3.17.0 +---@class lsp.NotebookCellArrayChange +---The start oftest of the cell that changed. +---@field start uinteger +---The deleted cells +---@field deleteCount uinteger +---The new cells, if any +---@field cells? lsp.NotebookCell[] + +---Describes the currently selected completion item. +--- +---@since 3.18.0 +---@class lsp.SelectedCompletionInfo +---The range that will be replaced if this completion item is accepted. +---@field range lsp.Range +---The text the range will be replaced with if this completion is accepted. +---@field text string + +---Defines the capabilities provided by the client. +---@class lsp.ClientCapabilities +---Workspace specific client capabilities. +---@field workspace? lsp.WorkspaceClientCapabilities +---Text document specific client capabilities. +---@field textDocument? lsp.TextDocumentClientCapabilities +---Capabilities specific to the notebook document support. +--- +---@since 3.17.0 +---@field notebookDocument? lsp.NotebookDocumentClientCapabilities +---Window specific client capabilities. +---@field window? lsp.WindowClientCapabilities +---General client capabilities. +--- +---@since 3.16.0 +---@field general? lsp.GeneralClientCapabilities +---Experimental client capabilities. +---@field experimental? lsp.LSPAny + +---@class lsp.TextDocumentSyncOptions +---Open and close notifications are sent to the server. If omitted open close notification should not +---be sent. +---@field openClose? boolean +---Change notifications are sent to the server. See TextDocumentSyncKind.None, TextDocumentSyncKind.Full +---and TextDocumentSyncKind.Incremental. If omitted it defaults to TextDocumentSyncKind.None. +---@field change? lsp.TextDocumentSyncKind +---If present will save notifications are sent to the server. If omitted the notification should not be +---sent. +---@field willSave? boolean +---If present will save wait until requests are sent to the server. If omitted the request should not be +---sent. +---@field willSaveWaitUntil? boolean +---If present save notifications are sent to the server. If omitted the notification should not be +---sent. +---@field save? boolean|lsp.SaveOptions + +---Options specific to a notebook plus its cells +---to be synced to the server. +--- +---If a selector provides a notebook document +---filter but no cell selector all cells of a +---matching notebook document will be synced. +--- +---If a selector provides no notebook document +---filter but only a cell selector all notebook +---document that contain at least one matching +---cell will be synced. +--- +---@since 3.17.0 +---@class lsp.NotebookDocumentSyncOptions +---The notebooks to be synced +---@field notebookSelector anonym15|anonym17[] +---Whether save notification should be forwarded to +---the server. Will only be honored if mode === `notebook`. +---@field save? boolean + +---Registration options specific to a notebook. +--- +---@since 3.17.0 +---@class lsp.NotebookDocumentSyncRegistrationOptions: lsp.NotebookDocumentSyncOptions, lsp.StaticRegistrationOptions + +---@class lsp.WorkspaceFoldersServerCapabilities +---The server has support for workspace folders +---@field supported? boolean +---Whether the server wants to receive workspace folder +---change notifications. +--- +---If a string is provided the string is treated as an ID +---under which the notification is registered on the client +---side. The ID can be used to unregister for these events +---using the `client/unregisterCapability` request. +---@field changeNotifications? string|boolean + +---Options for notifications/requests for user operations on files. +--- +---@since 3.16.0 +---@class lsp.FileOperationOptions +---The server is interested in receiving didCreateFiles notifications. +---@field didCreate? lsp.FileOperationRegistrationOptions +---The server is interested in receiving willCreateFiles requests. +---@field willCreate? lsp.FileOperationRegistrationOptions +---The server is interested in receiving didRenameFiles notifications. +---@field didRename? lsp.FileOperationRegistrationOptions +---The server is interested in receiving willRenameFiles requests. +---@field willRename? lsp.FileOperationRegistrationOptions +---The server is interested in receiving didDeleteFiles file notifications. +---@field didDelete? lsp.FileOperationRegistrationOptions +---The server is interested in receiving willDeleteFiles file requests. +---@field willDelete? lsp.FileOperationRegistrationOptions + +---Structure to capture a description for an error code. +--- +---@since 3.16.0 +---@class lsp.CodeDescription +---An URI to open with more information about the diagnostic error. +---@field href lsp.URI + +---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. +---@class lsp.DiagnosticRelatedInformation +---The location of this related diagnostic information. +---@field location lsp.Location +---The message of this related diagnostic information. +---@field message string + +---Represents a parameter of a callable-signature. A parameter can +---have a label and a doc-comment. +---@class lsp.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`. +---@field label string|{ [1]: uinteger, [2]: uinteger } +---The human-readable doc-comment of this parameter. Will be shown +---in the UI but can be omitted. +---@field documentation? string|lsp.MarkupContent + +---A notebook cell text document filter denotes a cell text +---document by different properties. +--- +---@since 3.17.0 +---@class lsp.NotebookCellTextDocumentFilter +---A filter that matches against the notebook +---containing the notebook cell. If a string +---value is provided it matches against the +---notebook type. '*' matches every notebook. +---@field notebook string|lsp.NotebookDocumentFilter +---A language id like `python`. +--- +---Will be matched against the language id of the +---notebook cell document. '*' matches every language. +---@field language? string + +---Matching options for the file operation pattern. +--- +---@since 3.16.0 +---@class lsp.FileOperationPatternOptions +---The pattern should be matched ignoring casing. +---@field ignoreCase? boolean + +---@class lsp.ExecutionSummary +---A strict monotonically increasing value +---indicating the execution order of a cell +---inside a notebook. +---@field executionOrder uinteger +---Whether the execution was successful or +---not if known by the client. +---@field success? boolean + +---Workspace specific client capabilities. +---@class lsp.WorkspaceClientCapabilities +---The client supports applying batch edits +---to the workspace by supporting the request +---'workspace/applyEdit' +---@field applyEdit? boolean +---Capabilities specific to `WorkspaceEdit`s. +---@field workspaceEdit? lsp.WorkspaceEditClientCapabilities +---Capabilities specific to the `workspace/didChangeConfiguration` notification. +---@field didChangeConfiguration? lsp.DidChangeConfigurationClientCapabilities +---Capabilities specific to the `workspace/didChangeWatchedFiles` notification. +---@field didChangeWatchedFiles? lsp.DidChangeWatchedFilesClientCapabilities +---Capabilities specific to the `workspace/symbol` request. +---@field symbol? lsp.WorkspaceSymbolClientCapabilities +---Capabilities specific to the `workspace/executeCommand` request. +---@field executeCommand? lsp.ExecuteCommandClientCapabilities +---The client has support for workspace folders. +--- +---@since 3.6.0 +---@field workspaceFolders? boolean +---The client supports `workspace/configuration` requests. +--- +---@since 3.6.0 +---@field configuration? boolean +---Capabilities specific to the semantic token requests scoped to the +---workspace. +--- +---@since 3.16.0. +---@field semanticTokens? lsp.SemanticTokensWorkspaceClientCapabilities +---Capabilities specific to the code lens requests scoped to the +---workspace. +--- +---@since 3.16.0. +---@field codeLens? lsp.CodeLensWorkspaceClientCapabilities +---The client has support for file notifications/requests for user operations on files. +--- +---Since 3.16.0 +---@field fileOperations? lsp.FileOperationClientCapabilities +---Capabilities specific to the inline values requests scoped to the +---workspace. +--- +---@since 3.17.0. +---@field inlineValue? lsp.InlineValueWorkspaceClientCapabilities +---Capabilities specific to the inlay hint requests scoped to the +---workspace. +--- +---@since 3.17.0. +---@field inlayHint? lsp.InlayHintWorkspaceClientCapabilities +---Capabilities specific to the diagnostic requests scoped to the +---workspace. +--- +---@since 3.17.0. +---@field diagnostics? lsp.DiagnosticWorkspaceClientCapabilities + +---Text document specific client capabilities. +---@class lsp.TextDocumentClientCapabilities +---Defines which synchronization capabilities the client supports. +---@field synchronization? lsp.TextDocumentSyncClientCapabilities +---Capabilities specific to the `textDocument/completion` request. +---@field completion? lsp.CompletionClientCapabilities +---Capabilities specific to the `textDocument/hover` request. +---@field hover? lsp.HoverClientCapabilities +---Capabilities specific to the `textDocument/signatureHelp` request. +---@field signatureHelp? lsp.SignatureHelpClientCapabilities +---Capabilities specific to the `textDocument/declaration` request. +--- +---@since 3.14.0 +---@field declaration? lsp.DeclarationClientCapabilities +---Capabilities specific to the `textDocument/definition` request. +---@field definition? lsp.DefinitionClientCapabilities +---Capabilities specific to the `textDocument/typeDefinition` request. +--- +---@since 3.6.0 +---@field typeDefinition? lsp.TypeDefinitionClientCapabilities +---Capabilities specific to the `textDocument/implementation` request. +--- +---@since 3.6.0 +---@field implementation? lsp.ImplementationClientCapabilities +---Capabilities specific to the `textDocument/references` request. +---@field references? lsp.ReferenceClientCapabilities +---Capabilities specific to the `textDocument/documentHighlight` request. +---@field documentHighlight? lsp.DocumentHighlightClientCapabilities +---Capabilities specific to the `textDocument/documentSymbol` request. +---@field documentSymbol? lsp.DocumentSymbolClientCapabilities +---Capabilities specific to the `textDocument/codeAction` request. +---@field codeAction? lsp.CodeActionClientCapabilities +---Capabilities specific to the `textDocument/codeLens` request. +---@field codeLens? lsp.CodeLensClientCapabilities +---Capabilities specific to the `textDocument/documentLink` request. +---@field documentLink? lsp.DocumentLinkClientCapabilities +---Capabilities specific to the `textDocument/documentColor` and the +---`textDocument/colorPresentation` request. +--- +---@since 3.6.0 +---@field colorProvider? lsp.DocumentColorClientCapabilities +---Capabilities specific to the `textDocument/formatting` request. +---@field formatting? lsp.DocumentFormattingClientCapabilities +---Capabilities specific to the `textDocument/rangeFormatting` request. +---@field rangeFormatting? lsp.DocumentRangeFormattingClientCapabilities +---Capabilities specific to the `textDocument/onTypeFormatting` request. +---@field onTypeFormatting? lsp.DocumentOnTypeFormattingClientCapabilities +---Capabilities specific to the `textDocument/rename` request. +---@field rename? lsp.RenameClientCapabilities +---Capabilities specific to the `textDocument/foldingRange` request. +--- +---@since 3.10.0 +---@field foldingRange? lsp.FoldingRangeClientCapabilities +---Capabilities specific to the `textDocument/selectionRange` request. +--- +---@since 3.15.0 +---@field selectionRange? lsp.SelectionRangeClientCapabilities +---Capabilities specific to the `textDocument/publishDiagnostics` notification. +---@field publishDiagnostics? lsp.PublishDiagnosticsClientCapabilities +---Capabilities specific to the various call hierarchy requests. +--- +---@since 3.16.0 +---@field callHierarchy? lsp.CallHierarchyClientCapabilities +---Capabilities specific to the various semantic token request. +--- +---@since 3.16.0 +---@field semanticTokens? lsp.SemanticTokensClientCapabilities +---Capabilities specific to the `textDocument/linkedEditingRange` request. +--- +---@since 3.16.0 +---@field linkedEditingRange? lsp.LinkedEditingRangeClientCapabilities +---Client capabilities specific to the `textDocument/moniker` request. +--- +---@since 3.16.0 +---@field moniker? lsp.MonikerClientCapabilities +---Capabilities specific to the various type hierarchy requests. +--- +---@since 3.17.0 +---@field typeHierarchy? lsp.TypeHierarchyClientCapabilities +---Capabilities specific to the `textDocument/inlineValue` request. +--- +---@since 3.17.0 +---@field inlineValue? lsp.InlineValueClientCapabilities +---Capabilities specific to the `textDocument/inlayHint` request. +--- +---@since 3.17.0 +---@field inlayHint? lsp.InlayHintClientCapabilities +---Capabilities specific to the diagnostic pull model. +--- +---@since 3.17.0 +---@field diagnostic? lsp.DiagnosticClientCapabilities +---Client capabilities specific to inline completions. +--- +---@since 3.18.0 +---@field inlineCompletion? lsp.InlineCompletionClientCapabilities + +---Capabilities specific to the notebook document support. +--- +---@since 3.17.0 +---@class lsp.NotebookDocumentClientCapabilities +---Capabilities specific to notebook document synchronization +--- +---@since 3.17.0 +---@field synchronization lsp.NotebookDocumentSyncClientCapabilities + +---@class lsp.WindowClientCapabilities +---It indicates whether the client supports server initiated +---progress using the `window/workDoneProgress/create` request. +--- +---The capability also controls Whether client supports handling +---of progress notifications. If set servers are allowed to report a +---`workDoneProgress` property in the request specific server +---capabilities. +--- +---@since 3.15.0 +---@field workDoneProgress? boolean +---Capabilities specific to the showMessage request. +--- +---@since 3.16.0 +---@field showMessage? lsp.ShowMessageRequestClientCapabilities +---Capabilities specific to the showDocument request. +--- +---@since 3.16.0 +---@field showDocument? lsp.ShowDocumentClientCapabilities + +---General client capabilities. +--- +---@since 3.16.0 +---@class lsp.GeneralClientCapabilities +---Client capability that signals how the client +---handles stale requests (e.g. a request +---for which the client will not process the response +---anymore since the information is outdated). +--- +---@since 3.17.0 +---@field staleRequestSupport? anonym18 +---Client capabilities specific to regular expressions. +--- +---@since 3.16.0 +---@field regularExpressions? lsp.RegularExpressionsClientCapabilities +---Client capabilities specific to the client's markdown parser. +--- +---@since 3.16.0 +---@field markdown? lsp.MarkdownClientCapabilities +---The position encodings supported by the client. Client and server +---have to agree on the same position encoding to ensure that offsets +---(e.g. character position in a line) are interpreted the same on both +---sides. +--- +---To keep the protocol backwards compatible the following applies: if +---the value 'utf-16' is missing from the array of position encodings +---servers can assume that the client supports UTF-16. UTF-16 is +---therefore a mandatory encoding. +--- +---If omitted it defaults to ['utf-16']. +--- +---Implementation considerations: since the conversion from one encoding +---into another requires the content of the file / line the conversion +---is best done where the file is read which is usually on the server +---side. +--- +---@since 3.17.0 +---@field positionEncodings? lsp.PositionEncodingKind[] + +---A relative pattern is a helper to construct glob patterns that are matched +---relatively to a base URI. The common value for a `baseUri` is a workspace +---folder root, but it can be another absolute URI as well. +--- +---@since 3.17.0 +---@class lsp.RelativePattern +---A workspace folder or a base URI to which this pattern will be matched +---against relatively. +---@field baseUri lsp.WorkspaceFolder|lsp.URI +---The actual glob pattern; +---@field pattern lsp.Pattern + +---@class lsp.WorkspaceEditClientCapabilities +---The client supports versioned document changes in `WorkspaceEdit`s +---@field documentChanges? boolean +---The resource operations the client supports. Clients should at least +---support 'create', 'rename' and 'delete' files and folders. +--- +---@since 3.13.0 +---@field resourceOperations? lsp.ResourceOperationKind[] +---The failure handling strategy of a client if applying the workspace edit +---fails. +--- +---@since 3.13.0 +---@field failureHandling? lsp.FailureHandlingKind +---Whether the client normalizes line endings to the client specific +---setting. +---If set to `true` the client will normalize line ending characters +---in a workspace edit to the client-specified new line +---character. +--- +---@since 3.16.0 +---@field normalizesLineEndings? boolean +---Whether the client in general supports change annotations on text edits, +---create file, rename file and delete file changes. +--- +---@since 3.16.0 +---@field changeAnnotationSupport? anonym19 + +---@class lsp.DidChangeConfigurationClientCapabilities +---Did change configuration notification supports dynamic registration. +---@field dynamicRegistration? boolean + +---@class lsp.DidChangeWatchedFilesClientCapabilities +---Did change watched files notification supports dynamic registration. Please note +---that the current protocol doesn't support static configuration for file changes +---from the server side. +---@field dynamicRegistration? boolean +---Whether the client has support for {@link RelativePattern relative pattern} +---or not. +--- +---@since 3.17.0 +---@field relativePatternSupport? boolean + +---Client capabilities for a {@link WorkspaceSymbolRequest}. +---@class lsp.WorkspaceSymbolClientCapabilities +---Symbol request supports dynamic registration. +---@field dynamicRegistration? boolean +---Specific capabilities for the `SymbolKind` in the `workspace/symbol` request. +---@field symbolKind? anonym20 +---The client supports tags on `SymbolInformation`. +---Clients supporting tags have to handle unknown tags gracefully. +--- +---@since 3.16.0 +---@field tagSupport? anonym21 +---The client support partial workspace symbols. The client will send the +---request `workspaceSymbol/resolve` to the server to resolve additional +---properties. +--- +---@since 3.17.0 +---@field resolveSupport? anonym22 + +---The client capabilities of a {@link ExecuteCommandRequest}. +---@class lsp.ExecuteCommandClientCapabilities +---Execute command supports dynamic registration. +---@field dynamicRegistration? boolean + +---@since 3.16.0 +---@class lsp.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 detects a project +---wide change that requires such a calculation. +---@field refreshSupport? boolean + +---@since 3.16.0 +---@class lsp.CodeLensWorkspaceClientCapabilities +---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 +---code lenses 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. +---@field refreshSupport? boolean + +---Capabilities relating to events from file operations by the user in the client. +--- +---These events do not come from the file system, they come from user operations +---like renaming a file in the UI. +--- +---@since 3.16.0 +---@class lsp.FileOperationClientCapabilities +---Whether the client supports dynamic registration for file requests/notifications. +---@field dynamicRegistration? boolean +---The client has support for sending didCreateFiles notifications. +---@field didCreate? boolean +---The client has support for sending willCreateFiles requests. +---@field willCreate? boolean +---The client has support for sending didRenameFiles notifications. +---@field didRename? boolean +---The client has support for sending willRenameFiles requests. +---@field willRename? boolean +---The client has support for sending didDeleteFiles notifications. +---@field didDelete? boolean +---The client has support for sending willDeleteFiles requests. +---@field willDelete? boolean + +---Client workspace capabilities specific to inline values. +--- +---@since 3.17.0 +---@class lsp.InlineValueWorkspaceClientCapabilities +---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 +---inline values currently shown. It should be used with absolute care and is +---useful for situation where a server for example detects a project wide +---change that requires such a calculation. +---@field refreshSupport? boolean + +---Client workspace capabilities specific to inlay hints. +--- +---@since 3.17.0 +---@class lsp.InlayHintWorkspaceClientCapabilities +---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 +---inlay hints currently shown. It should be used with absolute care and +---is useful for situation where a server for example detects a project wide +---change that requires such a calculation. +---@field refreshSupport? boolean + +---Workspace client capabilities specific to diagnostic pull requests. +--- +---@since 3.17.0 +---@class lsp.DiagnosticWorkspaceClientCapabilities +---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 +---pulled diagnostics currently shown. It should be used with absolute care and +---is useful for situation where a server for example detects a project wide +---change that requires such a calculation. +---@field refreshSupport? boolean + +---@class lsp.TextDocumentSyncClientCapabilities +---Whether text document synchronization supports dynamic registration. +---@field dynamicRegistration? boolean +---The client supports sending will save notifications. +---@field willSave? boolean +---The client supports sending a will save request and +---waits for a response providing text edits which will +---be applied to the document before it is saved. +---@field willSaveWaitUntil? boolean +---The client supports did save notifications. +---@field didSave? boolean + +---Completion client capabilities +---@class lsp.CompletionClientCapabilities +---Whether completion supports dynamic registration. +---@field dynamicRegistration? boolean +---The client supports the following `CompletionItem` specific +---capabilities. +---@field completionItem? anonym26 +---@field completionItemKind? anonym27 +---Defines how the client handles whitespace and indentation +---when accepting a completion item that uses multi line +---text in either `insertText` or `textEdit`. +--- +---@since 3.17.0 +---@field insertTextMode? lsp.InsertTextMode +---The client supports to send additional context information for a +---`textDocument/completion` request. +---@field contextSupport? boolean +---The client supports the following `CompletionList` specific +---capabilities. +--- +---@since 3.17.0 +---@field completionList? anonym28 + +---@class lsp.HoverClientCapabilities +---Whether hover supports dynamic registration. +---@field dynamicRegistration? boolean +---Client supports the following content formats for the content +---property. The order describes the preferred format of the client. +---@field contentFormat? lsp.MarkupKind[] + +---Client Capabilities for a {@link SignatureHelpRequest}. +---@class lsp.SignatureHelpClientCapabilities +---Whether signature help supports dynamic registration. +---@field dynamicRegistration? boolean +---The client supports the following `SignatureInformation` +---specific properties. +---@field signatureInformation? anonym30 +---The client supports to send additional context information for a +---`textDocument/signatureHelp` request. A client that opts into +---contextSupport will also support the `retriggerCharacters` on +---`SignatureHelpOptions`. +--- +---@since 3.15.0 +---@field contextSupport? boolean + +---@since 3.14.0 +---@class lsp.DeclarationClientCapabilities +---Whether declaration supports dynamic registration. If this is set to `true` +---the client supports the new `DeclarationRegistrationOptions` return value +---for the corresponding server capability as well. +---@field dynamicRegistration? boolean +---The client supports additional metadata in the form of declaration links. +---@field linkSupport? boolean + +---Client Capabilities for a {@link DefinitionRequest}. +---@class lsp.DefinitionClientCapabilities +---Whether definition supports dynamic registration. +---@field dynamicRegistration? boolean +---The client supports additional metadata in the form of definition links. +--- +---@since 3.14.0 +---@field linkSupport? boolean + +---Since 3.6.0 +---@class lsp.TypeDefinitionClientCapabilities +---Whether implementation supports dynamic registration. If this is set to `true` +---the client supports the new `TypeDefinitionRegistrationOptions` return value +---for the corresponding server capability as well. +---@field dynamicRegistration? boolean +---The client supports additional metadata in the form of definition links. +--- +---Since 3.14.0 +---@field linkSupport? boolean + +---@since 3.6.0 +---@class lsp.ImplementationClientCapabilities +---Whether implementation supports dynamic registration. If this is set to `true` +---the client supports the new `ImplementationRegistrationOptions` return value +---for the corresponding server capability as well. +---@field dynamicRegistration? boolean +---The client supports additional metadata in the form of definition links. +--- +---@since 3.14.0 +---@field linkSupport? boolean + +---Client Capabilities for a {@link ReferencesRequest}. +---@class lsp.ReferenceClientCapabilities +---Whether references supports dynamic registration. +---@field dynamicRegistration? boolean + +---Client Capabilities for a {@link DocumentHighlightRequest}. +---@class lsp.DocumentHighlightClientCapabilities +---Whether document highlight supports dynamic registration. +---@field dynamicRegistration? boolean + +---Client Capabilities for a {@link DocumentSymbolRequest}. +---@class lsp.DocumentSymbolClientCapabilities +---Whether document symbol supports dynamic registration. +---@field dynamicRegistration? boolean +---Specific capabilities for the `SymbolKind` in the +---`textDocument/documentSymbol` request. +---@field symbolKind? anonym31 +---The client supports hierarchical document symbols. +---@field hierarchicalDocumentSymbolSupport? boolean +---The client supports tags on `SymbolInformation`. Tags are supported on +---`DocumentSymbol` if `hierarchicalDocumentSymbolSupport` is set to true. +---Clients supporting tags have to handle unknown tags gracefully. +--- +---@since 3.16.0 +---@field tagSupport? anonym32 +---The client supports an additional label presented in the UI when +---registering a document symbol provider. +--- +---@since 3.16.0 +---@field labelSupport? boolean + +---The Client Capabilities of a {@link CodeActionRequest}. +---@class lsp.CodeActionClientCapabilities +---Whether code action supports dynamic registration. +---@field dynamicRegistration? boolean +---The client support code action literals of type `CodeAction` as a valid +---response of the `textDocument/codeAction` request. If the property is not +---set the request can only return `Command` literals. +--- +---@since 3.8.0 +---@field codeActionLiteralSupport? anonym34 +---Whether code action supports the `isPreferred` property. +--- +---@since 3.15.0 +---@field isPreferredSupport? boolean +---Whether code action supports the `disabled` property. +--- +---@since 3.16.0 +---@field disabledSupport? boolean +---Whether code action supports the `data` property which is +---preserved between a `textDocument/codeAction` and a +---`codeAction/resolve` request. +--- +---@since 3.16.0 +---@field dataSupport? boolean +---Whether the client supports resolving additional code action +---properties via a separate `codeAction/resolve` request. +--- +---@since 3.16.0 +---@field resolveSupport? anonym35 +---Whether the client honors the change annotations in +---text edits and resource operations returned via the +---`CodeAction#edit` property by for example presenting +---the workspace edit in the user interface and asking +---for confirmation. +--- +---@since 3.16.0 +---@field honorsChangeAnnotations? boolean + +---The client capabilities of a {@link CodeLensRequest}. +---@class lsp.CodeLensClientCapabilities +---Whether code lens supports dynamic registration. +---@field dynamicRegistration? boolean + +---The client capabilities of a {@link DocumentLinkRequest}. +---@class lsp.DocumentLinkClientCapabilities +---Whether document link supports dynamic registration. +---@field dynamicRegistration? boolean +---Whether the client supports the `tooltip` property on `DocumentLink`. +--- +---@since 3.15.0 +---@field tooltipSupport? boolean + +---@class lsp.DocumentColorClientCapabilities +---Whether implementation supports dynamic registration. If this is set to `true` +---the client supports the new `DocumentColorRegistrationOptions` return value +---for the corresponding server capability as well. +---@field dynamicRegistration? boolean + +---Client capabilities of a {@link DocumentFormattingRequest}. +---@class lsp.DocumentFormattingClientCapabilities +---Whether formatting supports dynamic registration. +---@field dynamicRegistration? boolean + +---Client capabilities of a {@link DocumentRangeFormattingRequest}. +---@class lsp.DocumentRangeFormattingClientCapabilities +---Whether range formatting supports dynamic registration. +---@field dynamicRegistration? boolean +---Whether the client supports formatting multiple ranges at once. +--- +---@since 3.18.0 +---@proposed +---@field rangesSupport? boolean + +---Client capabilities of a {@link DocumentOnTypeFormattingRequest}. +---@class lsp.DocumentOnTypeFormattingClientCapabilities +---Whether on type formatting supports dynamic registration. +---@field dynamicRegistration? boolean + +---@class lsp.RenameClientCapabilities +---Whether rename supports dynamic registration. +---@field dynamicRegistration? boolean +---Client supports testing for validity of rename operations +---before execution. +--- +---@since 3.12.0 +---@field prepareSupport? boolean +---Client supports the default behavior result. +--- +---The value indicates the default behavior used by the +---client. +--- +---@since 3.16.0 +---@field prepareSupportDefaultBehavior? lsp.PrepareSupportDefaultBehavior +---Whether the client honors the change annotations in +---text edits and resource operations returned via the +---rename request's workspace edit by for example presenting +---the workspace edit in the user interface and asking +---for confirmation. +--- +---@since 3.16.0 +---@field honorsChangeAnnotations? boolean + +---@class lsp.FoldingRangeClientCapabilities +---Whether implementation supports dynamic registration for folding range +---providers. If this is set to `true` the client supports the new +---`FoldingRangeRegistrationOptions` return value for the corresponding +---server capability as well. +---@field dynamicRegistration? boolean +---The maximum number of folding ranges that the client prefers to receive +---per document. The value serves as a hint, servers are free to follow the +---limit. +---@field rangeLimit? uinteger +---If set, the client signals that it only supports folding complete lines. +---If set, client will ignore specified `startCharacter` and `endCharacter` +---properties in a FoldingRange. +---@field lineFoldingOnly? boolean +---Specific options for the folding range kind. +--- +---@since 3.17.0 +---@field foldingRangeKind? anonym36 +---Specific options for the folding range. +--- +---@since 3.17.0 +---@field foldingRange? anonym37 + +---@class lsp.SelectionRangeClientCapabilities +---Whether implementation supports dynamic registration for selection range providers. If this is set to `true` +---the client supports the new `SelectionRangeRegistrationOptions` return value for the corresponding server +---capability as well. +---@field dynamicRegistration? boolean + +---The publish diagnostic client capabilities. +---@class lsp.PublishDiagnosticsClientCapabilities +---Whether the clients accepts diagnostics with related information. +---@field relatedInformation? boolean +---Client supports the tag property to provide meta data about a diagnostic. +---Clients supporting tags have to handle unknown tags gracefully. +--- +---@since 3.15.0 +---@field tagSupport? anonym38 +---Whether the client interprets the version property of the +---`textDocument/publishDiagnostics` notification's parameter. +--- +---@since 3.15.0 +---@field versionSupport? boolean +---Client supports a codeDescription property +--- +---@since 3.16.0 +---@field codeDescriptionSupport? boolean +---Whether code action supports the `data` property which is +---preserved between a `textDocument/publishDiagnostics` and +---`textDocument/codeAction` request. +--- +---@since 3.16.0 +---@field dataSupport? boolean + +---@since 3.16.0 +---@class lsp.CallHierarchyClientCapabilities +---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. +---@field dynamicRegistration? boolean + +---@since 3.16.0 +---@class lsp.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. +---@field 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. +---@field requests anonym41 +---The token types that the client supports. +---@field tokenTypes string[] +---The token modifiers that the client supports. +---@field tokenModifiers string[] +---The token formats the clients supports. +---@field formats lsp.TokenFormat[] +---Whether the client supports tokens that can overlap each other. +---@field overlappingTokenSupport? boolean +---Whether the client supports tokens that can span multiple lines. +---@field multilineTokenSupport? boolean +---Whether the client allows the server to actively cancel a +---semantic token request, e.g. supports returning +---LSPErrorCodes.ServerCancelled. If a server does the client +---needs to retrigger the request. +--- +---@since 3.17.0 +---@field serverCancelSupport? boolean +---Whether the client uses semantic tokens to augment existing +---syntax tokens. If set to `true` client side created syntax +---tokens and semantic tokens are both used for colorization. If +---set to `false` the client only uses the returned semantic tokens +---for colorization. +--- +---If the value is `undefined` then the client behavior is not +---specified. +--- +---@since 3.17.0 +---@field augmentsSyntaxTokens? boolean + +---Client capabilities for the linked editing range request. +--- +---@since 3.16.0 +---@class lsp.LinkedEditingRangeClientCapabilities +---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. +---@field dynamicRegistration? boolean + +---Client capabilities specific to the moniker request. +--- +---@since 3.16.0 +---@class lsp.MonikerClientCapabilities +---Whether moniker supports dynamic registration. If this is set to `true` +---the client supports the new `MonikerRegistrationOptions` return value +---for the corresponding server capability as well. +---@field dynamicRegistration? boolean + +---@since 3.17.0 +---@class lsp.TypeHierarchyClientCapabilities +---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. +---@field dynamicRegistration? boolean + +---Client capabilities specific to inline values. +--- +---@since 3.17.0 +---@class lsp.InlineValueClientCapabilities +---Whether implementation supports dynamic registration for inline value providers. +---@field dynamicRegistration? boolean + +---Inlay hint client capabilities. +--- +---@since 3.17.0 +---@class lsp.InlayHintClientCapabilities +---Whether inlay hints support dynamic registration. +---@field dynamicRegistration? boolean +---Indicates which properties a client can resolve lazily on an inlay +---hint. +---@field resolveSupport? anonym42 + +---Client capabilities specific to diagnostic pull requests. +--- +---@since 3.17.0 +---@class lsp.DiagnosticClientCapabilities +---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. +---@field dynamicRegistration? boolean +---Whether the clients supports related documents for document diagnostic pulls. +---@field relatedDocumentSupport? boolean + +---Client capabilities specific to inline completions. +--- +---@since 3.18.0 +---@class lsp.InlineCompletionClientCapabilities +---Whether implementation supports dynamic registration for inline completion providers. +---@field dynamicRegistration? boolean + +---Notebook specific client capabilities. +--- +---@since 3.17.0 +---@class lsp.NotebookDocumentSyncClientCapabilities +---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. +---@field dynamicRegistration? boolean +---The client supports sending execution summary data per cell. +---@field executionSummarySupport? boolean + +---Show message request client capabilities +---@class lsp.ShowMessageRequestClientCapabilities +---Capabilities specific to the `MessageActionItem` type. +---@field messageActionItem? anonym43 + +---Client capabilities for the showDocument request. +--- +---@since 3.16.0 +---@class lsp.ShowDocumentClientCapabilities +---The client has support for the showDocument +---request. +---@field support boolean + +---Client capabilities specific to regular expressions. +--- +---@since 3.16.0 +---@class lsp.RegularExpressionsClientCapabilities +---The engine's name. +---@field engine string +---The engine's version. +---@field version? string + +---Client capabilities specific to the used markdown parser. +--- +---@since 3.16.0 +---@class lsp.MarkdownClientCapabilities +---The name of the parser. +---@field parser string +---The version of the parser. +---@field version? string +---A list of HTML tags that the client allows / supports in +---Markdown. +--- +---@since 3.17.0 +---@field allowedTags? string[] + +---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 +---@alias lsp.SemanticTokenTypes +---| "namespace" # namespace +---| "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 +---| "decorator" # decorator + +---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 +---@alias lsp.SemanticTokenModifiers +---| "declaration" # declaration +---| "definition" # definition +---| "readonly" # readonly +---| "static" # static +---| "deprecated" # deprecated +---| "abstract" # abstract +---| "async" # async +---| "modification" # modification +---| "documentation" # documentation +---| "defaultLibrary" # defaultLibrary + +---The document diagnostic report kinds. +--- +---@since 3.17.0 +---@alias lsp.DocumentDiagnosticReportKind +---| "full" # Full +---| "unchanged" # Unchanged + +---Predefined error codes. +---@alias lsp.ErrorCodes +---| -32700 # ParseError +---| -32600 # InvalidRequest +---| -32601 # MethodNotFound +---| -32602 # InvalidParams +---| -32603 # InternalError +---| -32002 # ServerNotInitialized +---| -32001 # UnknownErrorCode + +---@alias lsp.LSPErrorCodes +---| -32803 # RequestFailed +---| -32802 # ServerCancelled +---| -32801 # ContentModified +---| -32800 # RequestCancelled + +---A set of predefined range kinds. +---@alias lsp.FoldingRangeKind +---| "comment" # Comment +---| "imports" # Imports +---| "region" # Region + +---A symbol kind. +---@alias lsp.SymbolKind +---| 1 # File +---| 2 # Module +---| 3 # Namespace +---| 4 # Package +---| 5 # Class +---| 6 # Method +---| 7 # Property +---| 8 # Field +---| 9 # Constructor +---| 10 # Enum +---| 11 # Interface +---| 12 # Function +---| 13 # Variable +---| 14 # Constant +---| 15 # String +---| 16 # Number +---| 17 # Boolean +---| 18 # Array +---| 19 # Object +---| 20 # Key +---| 21 # Null +---| 22 # EnumMember +---| 23 # Struct +---| 24 # Event +---| 25 # Operator +---| 26 # TypeParameter + +---Symbol tags are extra annotations that tweak the rendering of a symbol. +--- +---@since 3.16 +---@alias lsp.SymbolTag +---| 1 # Deprecated + +---Moniker uniqueness level to define scope of the moniker. +--- +---@since 3.16.0 +---@alias lsp.UniquenessLevel +---| "document" # document +---| "project" # project +---| "group" # group +---| "scheme" # scheme +---| "global" # global + +---The moniker kind. +--- +---@since 3.16.0 +---@alias lsp.MonikerKind +---| "import" # import +---| "export" # export +---| "local" # local + +---Inlay hint kinds. +--- +---@since 3.17.0 +---@alias lsp.InlayHintKind +---| 1 # Type +---| 2 # Parameter + +---Defines whether the insert text in a completion item should be interpreted as +---plain text or a snippet. +---@alias lsp.InsertTextFormat +---| 1 # PlainText +---| 2 # Snippet + +---The message type +---@alias lsp.MessageType +---| 1 # Error +---| 2 # Warning +---| 3 # Info +---| 4 # Log + +---Defines how the host (editor) should sync +---document changes to the language server. +---@alias lsp.TextDocumentSyncKind +---| 0 # None +---| 1 # Full +---| 2 # Incremental + +---Represents reasons why a text document is saved. +---@alias lsp.TextDocumentSaveReason +---| 1 # Manual +---| 2 # AfterDelay +---| 3 # FocusOut + +---The kind of a completion entry. +---@alias lsp.CompletionItemKind +---| 1 # Text +---| 2 # Method +---| 3 # Function +---| 4 # Constructor +---| 5 # Field +---| 6 # Variable +---| 7 # Class +---| 8 # Interface +---| 9 # Module +---| 10 # Property +---| 11 # Unit +---| 12 # Value +---| 13 # Enum +---| 14 # Keyword +---| 15 # Snippet +---| 16 # Color +---| 17 # File +---| 18 # Reference +---| 19 # Folder +---| 20 # EnumMember +---| 21 # Constant +---| 22 # Struct +---| 23 # Event +---| 24 # Operator +---| 25 # TypeParameter + +---Completion item tags are extra annotations that tweak the rendering of a completion +---item. +--- +---@since 3.15.0 +---@alias lsp.CompletionItemTag +---| 1 # Deprecated + +---How whitespace and indentation is handled during completion +---item insertion. +--- +---@since 3.16.0 +---@alias lsp.InsertTextMode +---| 1 # asIs +---| 2 # adjustIndentation + +---A document highlight kind. +---@alias lsp.DocumentHighlightKind +---| 1 # Text +---| 2 # Read +---| 3 # Write + +---A set of predefined code action kinds +---@alias lsp.CodeActionKind +---| "" # Empty +---| "quickfix" # QuickFix +---| "refactor" # Refactor +---| "refactor.extract" # RefactorExtract +---| "refactor.inline" # RefactorInline +---| "refactor.rewrite" # RefactorRewrite +---| "source" # Source +---| "source.organizeImports" # SourceOrganizeImports +---| "source.fixAll" # SourceFixAll + +---@alias lsp.TraceValues +---| "off" # Off +---| "messages" # Messages +---| "verbose" # Verbose + +---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. +---@alias lsp.MarkupKind +---| "plaintext" # PlainText +---| "markdown" # Markdown + +---Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered. +--- +---@since 3.18.0 +---@alias lsp.InlineCompletionTriggerKind +---| 0 # Invoked +---| 1 # Automatic + +---A set of predefined position encoding kinds. +--- +---@since 3.17.0 +---@alias lsp.PositionEncodingKind +---| "utf-8" # UTF8 +---| "utf-16" # UTF16 +---| "utf-32" # UTF32 + +---The file event type +---@alias lsp.FileChangeType +---| 1 # Created +---| 2 # Changed +---| 3 # Deleted + +---@alias lsp.WatchKind +---| 1 # Create +---| 2 # Change +---| 4 # Delete + +---The diagnostic's severity. +---@alias lsp.DiagnosticSeverity +---| 1 # Error +---| 2 # Warning +---| 3 # Information +---| 4 # Hint + +---The diagnostic tags. +--- +---@since 3.15.0 +---@alias lsp.DiagnosticTag +---| 1 # Unnecessary +---| 2 # Deprecated + +---How a completion was triggered +---@alias lsp.CompletionTriggerKind +---| 1 # Invoked +---| 2 # TriggerCharacter +---| 3 # TriggerForIncompleteCompletions + +---How a signature help was triggered. +--- +---@since 3.15.0 +---@alias lsp.SignatureHelpTriggerKind +---| 1 # Invoked +---| 2 # TriggerCharacter +---| 3 # ContentChange + +---The reason why code actions were requested. +--- +---@since 3.17.0 +---@alias lsp.CodeActionTriggerKind +---| 1 # Invoked +---| 2 # Automatic + +---A pattern kind describing if a glob pattern matches a file a folder or +---both. +--- +---@since 3.16.0 +---@alias lsp.FileOperationPatternKind +---| "file" # file +---| "folder" # folder + +---A notebook cell kind. +--- +---@since 3.17.0 +---@alias lsp.NotebookCellKind +---| 1 # Markup +---| 2 # Code + +---@alias lsp.ResourceOperationKind +---| "create" # Create +---| "rename" # Rename +---| "delete" # Delete + +---@alias lsp.FailureHandlingKind +---| "abort" # Abort +---| "transactional" # Transactional +---| "textOnlyTransactional" # TextOnlyTransactional +---| "undo" # Undo + +---@alias lsp.PrepareSupportDefaultBehavior +---| 1 # Identifier + +---@alias lsp.TokenFormat +---| "relative" # Relative + +---The definition of a symbol represented as one or many {@link Location locations}. +---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. +---@alias lsp.Definition lsp.Location|lsp.Location[] + +---Information about where a symbol is defined. +--- +---Provides additional metadata over normal {@link Location location} definitions, including the range of +---the defining symbol +---@alias lsp.DefinitionLink lsp.LocationLink + +---LSP arrays. +---@since 3.17.0 +---@alias lsp.LSPArray lsp.LSPAny[] + +---The LSP any type. +---Please note that strictly speaking a property with the value `undefined` +---can't be converted into JSON preserving the property name. However for +---convenience it is allowed and assumed that all these properties are +---optional as well. +---@since 3.17.0 +---@alias lsp.LSPAny lsp.LSPObject|lsp.LSPArray|string|integer|uinteger|decimal|boolean|lsp.null + +---The declaration of a symbol representation as one or many {@link Location locations}. +---@alias lsp.Declaration lsp.Location|lsp.Location[] + +---Information about where a symbol is declared. +--- +---Provides additional metadata over normal {@link Location location} declarations, including the range of +---the declaring symbol. +--- +---Servers should prefer returning `DeclarationLink` over `Declaration` if supported +---by the client. +---@alias lsp.DeclarationLink lsp.LocationLink + +---Inline value information can be provided by different means: +---- directly as a text value (class InlineValueText). +---- as a name to use for a variable lookup (class InlineValueVariableLookup) +---- as an evaluatable expression (class InlineValueEvaluatableExpression) +---The InlineValue types combines all inline value types into one type. +--- +---@since 3.17.0 +---@alias lsp.InlineValue lsp.InlineValueText|lsp.InlineValueVariableLookup|lsp.InlineValueEvaluatableExpression + +---The result of a document diagnostic pull request. A report can +---either be a full report containing all diagnostics for the +---requested document or an unchanged report indicating that nothing +---has changed in terms of diagnostics in comparison to the last +---pull request. +--- +---@since 3.17.0 +---@alias lsp.DocumentDiagnosticReport lsp.RelatedFullDocumentDiagnosticReport|lsp.RelatedUnchangedDocumentDiagnosticReport + +---@alias lsp.PrepareRenameResult lsp.Range|anonym44|anonym45 + +---A document selector is the combination of one or many document filters. +--- +---@sample `let sel:DocumentSelector = [{ language: 'typescript' }, { language: 'json', pattern: '**∕tsconfig.json' }]`; +--- +---The use of a string as a document filter is deprecated @since 3.16.0. +---@alias lsp.DocumentSelector lsp.DocumentFilter[] + +---@alias lsp.ProgressToken integer|string + +---An identifier to refer to a change annotation stored with a workspace edit. +---@alias lsp.ChangeAnnotationIdentifier string + +---A workspace diagnostic document report. +--- +---@since 3.17.0 +---@alias lsp.WorkspaceDocumentDiagnosticReport lsp.WorkspaceFullDocumentDiagnosticReport|lsp.WorkspaceUnchangedDocumentDiagnosticReport + +---An event describing a change to a text document. If only a text is provided +---it is considered to be the full content of the document. +---@alias lsp.TextDocumentContentChangeEvent anonym46|anonym47 + +---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. +---@alias lsp.MarkedString string|anonym48 + +---A document filter describes a top level text document or +---a notebook cell document. +--- +---@since 3.17.0 - proposed support for NotebookCellTextDocumentFilter. +---@alias lsp.DocumentFilter lsp.TextDocumentFilter|lsp.NotebookCellTextDocumentFilter + +---LSP object definition. +---@since 3.17.0 +---@alias lsp.LSPObject table + +---The glob pattern. Either a string pattern or a relative pattern. +--- +---@since 3.17.0 +---@alias lsp.GlobPattern lsp.Pattern|lsp.RelativePattern + +---A document filter denotes a document by different properties like +---the {@link TextDocument.languageId language}, the {@link Uri.scheme scheme} of +---its resource, or a glob-pattern that is applied to the {@link TextDocument.fileName path}. +--- +---Glob patterns can have the following syntax: +---- `*` to match one or more characters in a path segment +---- `?` to match on one character in a path segment +---- `**` to match any number of path segments, including none +---- `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files) +---- `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …) +---- `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`) +--- +---@sample A language filter that applies to typescript files on disk: `{ language: 'typescript', scheme: 'file' }` +---@sample A language filter that applies to all package.json paths: `{ language: 'json', pattern: '**package.json' }` +--- +---@since 3.17.0 +---@alias lsp.TextDocumentFilter anonym49|anonym50|anonym51 + +---A notebook document filter denotes a notebook document by +---different properties. The properties will be match +---against the notebook's URI (same as with documents) +--- +---@since 3.17.0 +---@alias lsp.NotebookDocumentFilter anonym52|anonym53|anonym54 + +---The glob pattern to watch relative to the base path. Glob patterns can have the following syntax: +---- `*` to match one or more characters in a path segment +---- `?` to match on one character in a path segment +---- `**` to match any number of path segments, including none +---- `{}` to group conditions (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files) +---- `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …) +---- `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`) +--- +---@since 3.17.0 +---@alias lsp.Pattern string + +---@class anonym1 +---The name of the server as defined by the server. +---@field name string +---The server's version as defined by the server. +---@field version? string + +---@class anonym3 +---@field insert lsp.Range +---@field replace lsp.Range + +---@class anonym2 +---A default commit character set. +--- +---@since 3.17.0 +---@field commitCharacters? string[] +---A default edit range. +--- +---@since 3.17.0 +---@field editRange? lsp.Range|anonym3 +---A default insert text format. +--- +---@since 3.17.0 +---@field insertTextFormat? lsp.InsertTextFormat +---A default insert text mode. +--- +---@since 3.17.0 +---@field insertTextMode? lsp.InsertTextMode +---A default data value. +--- +---@since 3.17.0 +---@field data? lsp.LSPAny + +---@class anonym4 +---Human readable description of why the code action is currently disabled. +--- +---This is displayed in the code actions UI. +---@field reason string + +---@class anonym5 +---@field uri lsp.DocumentUri + +---@class anonym6 + +---@class anonym7 +---The server supports deltas for full documents. +---@field delta? boolean + +---@class anonym9 +---The change to the cell array. +---@field array lsp.NotebookCellArrayChange +---Additional opened cell text documents. +---@field didOpen? lsp.TextDocumentItem[] +---Additional closed cell text documents. +---@field didClose? lsp.TextDocumentIdentifier[] + +---@class anonym10 +---@field document lsp.VersionedTextDocumentIdentifier +---@field changes lsp.TextDocumentContentChangeEvent[] + +---@class anonym8 +---Changes to the cell structure to add or +---remove cells. +---@field structure? anonym9 +---Changes to notebook cells properties like its +---kind, execution summary or metadata. +---@field data? lsp.NotebookCell[] +---Changes to the text content of notebook cells. +---@field textContent? anonym10[] + +---@class anonym11 +---The name of the client as defined by the client. +---@field name string +---The client's version as defined by the client. +---@field version? string + +---@class anonym12 +---The server supports workspace folder. +--- +---@since 3.6.0 +---@field workspaceFolders? lsp.WorkspaceFoldersServerCapabilities +---The server is interested in notifications/requests for operations on files. +--- +---@since 3.16.0 +---@field fileOperations? lsp.FileOperationOptions + +---@class anonym13 +---The server has support for completion item label +---details (see also `CompletionItemLabelDetails`) when +---receiving a completion item in a resolve call. +--- +---@since 3.17.0 +---@field labelDetailsSupport? boolean + +---@class anonym15 +---@field language string + +---@class anonym14 +---The notebook to be synced If a string +---value is provided it matches against the +---notebook type. '*' matches every notebook. +---@field notebook string|lsp.NotebookDocumentFilter +---The cells of the matching notebook to be synced. +---@field cells? anonym15[] + +---@class anonym17 +---@field language string + +---@class anonym16 +---The notebook to be synced If a string +---value is provided it matches against the +---notebook type. '*' matches every notebook. +---@field notebook? string|lsp.NotebookDocumentFilter +---The cells of the matching notebook to be synced. +---@field cells anonym17[] + +---@class anonym18 +---The client will actively cancel the request. +---@field cancel boolean +---The list of requests for which the client +---will retry the request if it receives a +---response with error code `ContentModified` +---@field retryOnContentModified string[] + +---@class anonym19 +---Whether the client groups edits with equal labels into tree nodes, +---for instance all edits labelled with "Changes in Strings" would +---be a tree node. +---@field groupsOnLabel? boolean + +---@class anonym20 +---The symbol kind values the client supports. When this +---property exists the client also guarantees that it will +---handle values outside its set gracefully and falls back +---to a default value when unknown. +--- +---If this property is not present the client only supports +---the symbol kinds from `File` to `Array` as defined in +---the initial version of the protocol. +---@field valueSet? lsp.SymbolKind[] + +---@class anonym21 +---The tags supported by the client. +---@field valueSet lsp.SymbolTag[] + +---@class anonym22 +---The properties that a client can resolve lazily. Usually +---`location.range` +---@field properties string[] + +---@class anonym24 +---The tags supported by the client. +---@field valueSet lsp.CompletionItemTag[] + +---@class anonym25 +---The properties that a client can resolve lazily. +---@field properties string[] + +---@class anonym26 +---@field valueSet lsp.InsertTextMode[] + +---@class anonym23 +---Client supports snippets as insert text. +--- +---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. +---@field snippetSupport? boolean +---Client supports commit characters on a completion item. +---@field commitCharactersSupport? boolean +---Client supports the following content formats for the documentation +---property. The order describes the preferred format of the client. +---@field documentationFormat? lsp.MarkupKind[] +---Client supports the deprecated property on a completion item. +---@field deprecatedSupport? boolean +---Client supports the preselect property on a completion item. +---@field preselectSupport? boolean +---Client supports the tag property on a completion item. Clients supporting +---tags have to handle unknown tags gracefully. Clients especially need to +---preserve unknown tags when sending a completion item back to the server in +---a resolve call. +--- +---@since 3.15.0 +---@field tagSupport? anonym24 +---Client support insert replace edit to control different behavior if a +---completion item is inserted in the text or should replace text. +--- +---@since 3.16.0 +---@field insertReplaceSupport? boolean +---Indicates which properties a client can resolve lazily on a completion +---item. Before version 3.16.0 only the predefined properties `documentation` +---and `details` could be resolved lazily. +--- +---@since 3.16.0 +---@field resolveSupport? anonym25 +---The client supports the `insertTextMode` property on +---a completion item to override the whitespace handling mode +---as defined by the client (see `insertTextMode`). +--- +---@since 3.16.0 +---@field insertTextModeSupport? anonym26 +---The client has support for completion item label +---details (see also `CompletionItemLabelDetails`). +--- +---@since 3.17.0 +---@field labelDetailsSupport? boolean + +---@class anonym27 +---The completion item kind values the client supports. When this +---property exists the client also guarantees that it will +---handle values outside its set gracefully and falls back +---to a default value when unknown. +--- +---If this property is not present the client only supports +---the completion items kinds from `Text` to `Reference` as defined in +---the initial version of the protocol. +---@field valueSet? lsp.CompletionItemKind[] + +---@class anonym28 +---The client supports the following itemDefaults on +---a completion list. +--- +---The value lists the supported property names of the +---`CompletionList.itemDefaults` object. If omitted +---no properties are supported. +--- +---@since 3.17.0 +---@field itemDefaults? string[] + +---@class anonym30 +---The client supports processing label offsets instead of a +---simple label string. +--- +---@since 3.14.0 +---@field labelOffsetSupport? boolean + +---@class anonym29 +---Client supports the following content formats for the documentation +---property. The order describes the preferred format of the client. +---@field documentationFormat? lsp.MarkupKind[] +---Client capabilities specific to parameter information. +---@field parameterInformation? anonym30 +---The client supports the `activeParameter` property on `SignatureInformation` +---literal. +--- +---@since 3.16.0 +---@field activeParameterSupport? boolean + +---@class anonym31 +---The symbol kind values the client supports. When this +---property exists the client also guarantees that it will +---handle values outside its set gracefully and falls back +---to a default value when unknown. +--- +---If this property is not present the client only supports +---the symbol kinds from `File` to `Array` as defined in +---the initial version of the protocol. +---@field valueSet? lsp.SymbolKind[] + +---@class anonym32 +---The tags supported by the client. +---@field valueSet lsp.SymbolTag[] + +---@class anonym34 +---The code action kind values the client supports. When this +---property exists the client also guarantees that it will +---handle values outside its set gracefully and falls back +---to a default value when unknown. +---@field valueSet lsp.CodeActionKind[] + +---@class anonym33 +---The code action kind is support with the following value +---set. +---@field codeActionKind anonym34 + +---@class anonym35 +---The properties that a client can resolve lazily. +---@field properties string[] + +---@class anonym36 +---The folding range kind values the client supports. When this +---property exists the client also guarantees that it will +---handle values outside its set gracefully and falls back +---to a default value when unknown. +---@field valueSet? lsp.FoldingRangeKind[] + +---@class anonym37 +---If set, the client signals that it supports setting collapsedText on +---folding ranges to display custom labels instead of the default text. +--- +---@since 3.17.0 +---@field collapsedText? boolean + +---@class anonym38 +---The tags supported by the client. +---@field valueSet lsp.DiagnosticTag[] + +---@class anonym40 + +---@class anonym41 +---The client will send the `textDocument/semanticTokens/full/delta` request if +---the server provides a corresponding handler. +---@field delta? boolean + +---@class anonym39 +---The client will send the `textDocument/semanticTokens/range` request if +---the server provides a corresponding handler. +---@field range? boolean|anonym40 +---The client will send the `textDocument/semanticTokens/full` request if +---the server provides a corresponding handler. +---@field full? boolean|anonym41 + +---@class anonym42 +---The properties that a client can resolve lazily. +---@field properties string[] + +---@class anonym43 +---Whether the client supports additional attributes which +---are preserved and send back to the server in the +---request's response. +---@field additionalPropertiesSupport? boolean + +---@class anonym44 +---@field range lsp.Range +---@field placeholder string + +---@class anonym45 +---@field defaultBehavior boolean + +---@class anonym46 +---The range of the document that changed. +---@field range lsp.Range +---The optional length of the range that got replaced. +--- +---@deprecated use range instead. +---@field rangeLength? uinteger +---The new text for the provided range. +---@field text string + +---@class anonym47 +---The new text of the whole document. +---@field text string + +---@class anonym48 +---@field language string +---@field value string + +---@class anonym49 +---A language id, like `typescript`. +---@field language string +---A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. +---@field scheme? string +---A glob pattern, like `*.{ts,js}`. +---@field pattern? string + +---@class anonym50 +---A language id, like `typescript`. +---@field language? string +---A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. +---@field scheme string +---A glob pattern, like `*.{ts,js}`. +---@field pattern? string + +---@class anonym51 +---A language id, like `typescript`. +---@field language? string +---A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. +---@field scheme? string +---A glob pattern, like `*.{ts,js}`. +---@field pattern string + +---@class anonym52 +---The type of the enclosing notebook. +---@field notebookType string +---A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. +---@field scheme? string +---A glob pattern. +---@field pattern? string + +---@class anonym53 +---The type of the enclosing notebook. +---@field notebookType? string +---A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. +---@field scheme string +---A glob pattern. +---@field pattern? string + +---@class anonym54 +---The type of the enclosing notebook. +---@field notebookType? string +---A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. +---@field scheme? string +---A glob pattern. +---@field pattern string diff --git a/runtime/lua/vim/lsp/_watchfiles.lua b/runtime/lua/vim/lsp/_watchfiles.lua index 5dbd4a7199..1a4909b3f3 100644 --- a/runtime/lua/vim/lsp/_watchfiles.lua +++ b/runtime/lua/vim/lsp/_watchfiles.lua @@ -6,11 +6,13 @@ local lpeg = vim.lpeg local M = {} +---@alias lpeg userdata + --- Parses the raw pattern into an |lpeg| pattern. LPeg patterns natively support the "this" or "that" --- alternative constructions described in the LSP spec that cannot be expressed in a standard Lua pattern. --- ---@param pattern string The raw glob pattern ----@return userdata An |lpeg| representation of the pattern, or nil if the pattern is invalid. +---@return lpeg An |lpeg| representation of the pattern, or nil if the pattern is invalid. local function parse(pattern) local l = lpeg @@ -109,7 +111,7 @@ local to_lsp_change_type = { --- Default excludes the same as VSCode's `files.watcherExclude` setting. --- https://github.com/microsoft/vscode/blob/eef30e7165e19b33daa1e15e92fa34ff4a5df0d3/src/vs/workbench/contrib/files/browser/files.contribution.ts#L261 ----@type Lpeg pattern +---@type lpeg parsed Lpeg pattern M._poll_exclude_pattern = parse('**/.git/{objects,subtree-cache}/**') + parse('**/node_modules/*/**') + parse('**/.hg/store/**') @@ -132,7 +134,7 @@ function M.register(reg, ctx) if not has_capability or not client.workspace_folders then return end - local watch_regs = {} --- @type table + local watch_regs = {} --- @type table for _, w in ipairs(reg.registerOptions.watchers) do local relative_pattern = false local glob_patterns = {} --- @type {baseUri:string, pattern: string}[] diff --git a/runtime/lua/vim/lsp/inlay_hint.lua b/runtime/lua/vim/lsp/inlay_hint.lua index eb2f59b312..8407105d47 100644 --- a/runtime/lua/vim/lsp/inlay_hint.lua +++ b/runtime/lua/vim/lsp/inlay_hint.lua @@ -5,8 +5,8 @@ local api = vim.api local M = {} ---@class lsp.inlay_hint.bufstate ----@field version integer ----@field client_hint table> client_id -> (lnum -> hints) +---@field version? integer +---@field client_hint? table> client_id -> (lnum -> hints) ---@field applied table Last version of hints applied to this line ---@field enabled boolean Whether inlay hints are enabled for this buffer ---@type table diff --git a/runtime/lua/vim/lsp/semantic_tokens.lua b/runtime/lua/vim/lsp/semantic_tokens.lua index bab1b23ee4..5b20344bd3 100644 --- a/runtime/lua/vim/lsp/semantic_tokens.lua +++ b/runtime/lua/vim/lsp/semantic_tokens.lua @@ -14,11 +14,11 @@ local uv = vim.uv --- @field marked boolean whether this token has had extmarks applied --- --- @class STCurrentResult ---- @field version integer document version associated with this result ---- @field result_id string resultId from the server; used with delta requests ---- @field highlights STTokenRange[] cache of highlight ranges for this document version ---- @field tokens integer[] raw token array as received by the server. used for calculating delta responses ---- @field namespace_cleared boolean whether the namespace was cleared for this result yet +--- @field version? integer document version associated with this result +--- @field result_id? string resultId from the server; used with delta requests +--- @field highlights? STTokenRange[] cache of highlight ranges for this document version +--- @field tokens? integer[] raw token array as received by the server. used for calculating delta responses +--- @field namespace_cleared? boolean whether the namespace was cleared for this result yet --- --- @class STActiveRequest --- @field request_id integer the LSP request ID of the most recent request sent to the server @@ -717,8 +717,7 @@ end --- mark will be deleted by the semantic token engine when appropriate; for --- example, when the LSP sends updated tokens. This function is intended for --- use inside |LspTokenUpdate| callbacks. ----@param token (table) a semantic token, found as `args.data.token` in ---- |LspTokenUpdate|. +---@param token (table) a semantic token, found as `args.data.token` in |LspTokenUpdate|. ---@param bufnr (integer) the buffer to highlight ---@param client_id (integer) The ID of the |vim.lsp.client| ---@param hl_group (string) Highlight group name diff --git a/runtime/lua/vim/lsp/types.lua b/runtime/lua/vim/lsp/types.lua deleted file mode 100644 index 98e948c945..0000000000 --- a/runtime/lua/vim/lsp/types.lua +++ /dev/null @@ -1,21 +0,0 @@ ----@meta - ----@alias lsp-handler fun(err: lsp.ResponseError|nil, result: any, context: lsp.HandlerContext, config: table|nil): any? - ----@class lsp.HandlerContext ----@field method string ----@field client_id integer ----@field bufnr? integer ----@field params? any - ----@class lsp.ResponseError ----@field code integer ----@field message string ----@field data string|number|boolean|table[]|table|nil - ---- @class lsp.DocumentFilter ---- @field language? string ---- @field scheme? string ---- @field pattern? string - ---- @alias lsp.RegisterOptions any | lsp.StaticRegistrationOptions | lsp.TextDocumentRegistrationOptions diff --git a/runtime/lua/vim/lsp/types/protocol.lua b/runtime/lua/vim/lsp/types/protocol.lua deleted file mode 100644 index e1ed8dbcc3..0000000000 --- a/runtime/lua/vim/lsp/types/protocol.lua +++ /dev/null @@ -1,4393 +0,0 @@ ---[[ -This file is autogenerated from scripts/gen_lsp.lua -Regenerate: -nvim -l scripts/gen_lsp.lua gen --version 3.18 --runtime/lua/vim/lsp/types/protocol.lua ---]] - ----@alias lsp.null nil ----@alias uinteger integer ----@alias lsp.decimal number ----@alias lsp.DocumentUri string ----@alias lsp.URI string ----@alias lsp.LSPObject table ----@alias lsp.LSPArray lsp.LSPAny[] ----@alias lsp.LSPAny lsp.LSPObject|lsp.LSPArray|string|number|boolean|nil - ----@class lsp.ImplementationParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams - ----Represents a location inside a resource, such as a line ----inside a text file. ----@class lsp.Location ----@field uri lsp.DocumentUri ----@field range lsp.Range - ----@class lsp.ImplementationRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions - ----@class lsp.TypeDefinitionParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams - ----@class lsp.TypeDefinitionRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions - ----A workspace folder inside a client. ----@class lsp.WorkspaceFolder ----The associated URI for this workspace folder. ----@field uri lsp.URI ----The name of the workspace folder. Used to refer to this ----workspace folder in the user interface. ----@field name string - ----The parameters of a `workspace/didChangeWorkspaceFolders` notification. ----@class lsp.DidChangeWorkspaceFoldersParams ----The actual workspace folder change event. ----@field event lsp.WorkspaceFoldersChangeEvent - ----The parameters of a configuration request. ----@class lsp.ConfigurationParams ----@field items lsp.ConfigurationItem[] - ----Parameters for a {@link DocumentColorRequest}. ----@class lsp.DocumentColorParams ----The text document. ----@field textDocument lsp.TextDocumentIdentifier - ----Represents a color range from a document. ----@class lsp.ColorInformation ----The range in the document where this color appears. ----@field range lsp.Range ----The actual color value for this color range. ----@field color lsp.Color - ----@class lsp.DocumentColorRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions - ----Parameters for a {@link ColorPresentationRequest}. ----@class lsp.ColorPresentationParams ----The text document. ----@field textDocument lsp.TextDocumentIdentifier ----The color to request presentations for. ----@field color lsp.Color ----The range where the color would be inserted. Serves as a context. ----@field range lsp.Range - ----@class lsp.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. ----@field label string ----An {@link TextEdit edit} which is applied to a document when selecting ----this presentation for the color. When `falsy` the {@link ColorPresentation.label label} ----is used. ----@field textEdit? lsp.TextEdit ----An optional array of additional {@link TextEdit text edits} that are applied when ----selecting this color presentation. Edits must not overlap with the main {@link ColorPresentation.textEdit edit} nor with themselves. ----@field additionalTextEdits? lsp.TextEdit[] - ----@class lsp.WorkDoneProgressOptions ----@field workDoneProgress? boolean - ----General text document registration options. ----@class lsp.TextDocumentRegistrationOptions ----A document selector to identify the scope of the registration. If set to null ----the document selector provided on the client side will be used. ----@field documentSelector lsp.DocumentSelector|lsp.null - ----Parameters for a {@link FoldingRangeRequest}. ----@class lsp.FoldingRangeParams ----The text document. ----@field textDocument lsp.TextDocumentIdentifier - ----Represents a folding range. To be valid, start and end line must be bigger than zero and smaller ----than the number of lines in the document. Clients are free to ignore invalid ranges. ----@class lsp.FoldingRange ----The zero-based start line of the range to fold. The folded area starts after the line's last character. ----To be valid, the end must be zero or larger and smaller than the number of lines in the document. ----@field startLine uinteger ----The zero-based character offset from where the folded range starts. If not defined, defaults to the length of the start line. ----@field startCharacter? uinteger ----The zero-based end line of the range to fold. The folded area ends with the line's last character. ----To be valid, the end must be zero or larger and smaller than the number of lines in the document. ----@field endLine uinteger ----The zero-based character offset before the folded range ends. If not defined, defaults to the length of the end line. ----@field endCharacter? uinteger ----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 {@link FoldingRangeKind} for an enumeration of standardized kinds. ----@field kind? lsp.FoldingRangeKind ----The text that the client should show when the specified range is ----collapsed. If not defined or not supported by the client, a default ----will be chosen by the client. ---- ----@since 3.17.0 ----@field collapsedText? string - ----@class lsp.FoldingRangeRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions - ----@class lsp.DeclarationParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams - ----@class lsp.DeclarationRegistrationOptions: lsp.DeclarationOptions, lsp.StaticRegistrationOptions - ----A parameter literal used in selection range requests. ----@class lsp.SelectionRangeParams ----The text document. ----@field textDocument lsp.TextDocumentIdentifier ----The positions inside the text document. ----@field positions lsp.Position[] - ----A selection range represents a part of a selection hierarchy. A selection range ----may have a parent selection range that contains it. ----@class lsp.SelectionRange ----The {@link Range range} of this selection range. ----@field range lsp.Range ----The parent selection range containing this range. Therefore `parent.range` must contain `this.range`. ----@field parent? lsp.SelectionRange - ----@class lsp.SelectionRangeRegistrationOptions: lsp.SelectionRangeOptions, lsp.StaticRegistrationOptions - ----@class lsp.WorkDoneProgressCreateParams ----The token to be used to report progress. ----@field token lsp.ProgressToken - ----@class lsp.WorkDoneProgressCancelParams ----The token to be used to report progress. ----@field token lsp.ProgressToken - ----The parameter of a `textDocument/prepareCallHierarchy` request. ---- ----@since 3.16.0 ----@class lsp.CallHierarchyPrepareParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams - ----Represents programming constructs like functions or constructors in the context ----of call hierarchy. ---- ----@since 3.16.0 ----@class lsp.CallHierarchyItem ----The name of this item. ----@field name string ----The kind of this item. ----@field kind lsp.SymbolKind ----Tags for this item. ----@field tags? lsp.SymbolTag[] ----More detail for this item, e.g. the signature of a function. ----@field detail? string ----The resource identifier of this item. ----@field uri lsp.DocumentUri ----The range enclosing this symbol not including leading/trailing whitespace but everything else, e.g. comments and code. ----@field range lsp.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 {@link CallHierarchyItem.range `range`}. ----@field selectionRange lsp.Range ----A data entry field that is preserved between a call hierarchy prepare and ----incoming calls or outgoing calls requests. ----@field data? lsp.LSPAny - ----Call hierarchy options used during static or dynamic registration. ---- ----@since 3.16.0 ----@class lsp.CallHierarchyRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions - ----The parameter of a `callHierarchy/incomingCalls` request. ---- ----@since 3.16.0 ----@class lsp.CallHierarchyIncomingCallsParams ----@field item lsp.CallHierarchyItem - ----Represents an incoming call, e.g. a caller of a method or constructor. ---- ----@since 3.16.0 ----@class lsp.CallHierarchyIncomingCall ----The item that makes the call. ----@field from lsp.CallHierarchyItem ----The ranges at which the calls appear. This is relative to the caller ----denoted by {@link CallHierarchyIncomingCall.from `this.from`}. ----@field fromRanges lsp.Range[] - ----The parameter of a `callHierarchy/outgoingCalls` request. ---- ----@since 3.16.0 ----@class lsp.CallHierarchyOutgoingCallsParams ----@field item lsp.CallHierarchyItem - ----Represents an outgoing call, e.g. calling a getter from a method or a method from a constructor etc. ---- ----@since 3.16.0 ----@class lsp.CallHierarchyOutgoingCall ----The item that is called. ----@field to lsp.CallHierarchyItem ----The range at which this item is called. This is the range relative to the caller, e.g the item ----passed to {@link CallHierarchyItemProvider.provideCallHierarchyOutgoingCalls `provideCallHierarchyOutgoingCalls`} ----and not {@link CallHierarchyOutgoingCall.to `this.to`}. ----@field fromRanges lsp.Range[] - ----@since 3.16.0 ----@class lsp.SemanticTokensParams ----The text document. ----@field textDocument lsp.TextDocumentIdentifier - ----@since 3.16.0 ----@class lsp.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. ----@field resultId? string ----The actual tokens. ----@field data uinteger[] - ----@since 3.16.0 ----@class lsp.SemanticTokensPartialResult ----@field data uinteger[] - ----@since 3.16.0 ----@class lsp.SemanticTokensRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions - ----@since 3.16.0 ----@class lsp.SemanticTokensDeltaParams ----The text document. ----@field textDocument lsp.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. ----@field previousResultId string - ----@since 3.16.0 ----@class lsp.SemanticTokensDelta ----@field resultId? string ----The semantic token edits to transform a previous result into a new result. ----@field edits lsp.SemanticTokensEdit[] - ----@since 3.16.0 ----@class lsp.SemanticTokensDeltaPartialResult ----@field edits lsp.SemanticTokensEdit[] - ----@since 3.16.0 ----@class lsp.SemanticTokensRangeParams ----The text document. ----@field textDocument lsp.TextDocumentIdentifier ----The range the semantic tokens are requested for. ----@field range lsp.Range - ----Params to show a resource in the UI. ---- ----@since 3.16.0 ----@class lsp.ShowDocumentParams ----The uri to show. ----@field uri lsp.URI ----Indicates to show the resource in an external program. ----To show, for example, `https://code.visualstudio.com/` ----in the default WEB browser set `external` to `true`. ----@field external? boolean ----An optional property to indicate whether the editor ----showing the document should take focus or not. ----Clients might ignore this property if an external ----program is started. ----@field takeFocus? boolean ----An optional selection range if the document is a text ----document. Clients might ignore the property if an ----external program is started or the file is not a text ----file. ----@field selection? lsp.Range - ----The result of a showDocument request. ---- ----@since 3.16.0 ----@class lsp.ShowDocumentResult ----A boolean indicating if the show was successful. ----@field success boolean - ----@class lsp.LinkedEditingRangeParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams - ----The result of a linked editing range request. ---- ----@since 3.16.0 ----@class lsp.LinkedEditingRanges ----A list of ranges that can be edited together. The ranges must have ----identical length and contain identical text content. The ranges cannot overlap. ----@field ranges lsp.Range[] ----An optional word pattern (regular expression) that describes valid contents for ----the given ranges. If no pattern is provided, the client configuration's word ----pattern will be used. ----@field wordPattern? string - ----@class lsp.LinkedEditingRangeRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions - ----The parameters sent in notifications/requests for user-initiated creation of ----files. ---- ----@since 3.16.0 ----@class lsp.CreateFilesParams ----An array of all files/folders created in this operation. ----@field files lsp.FileCreate[] - ----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. ---- ----Since version 3.13.0 a workspace edit can contain resource operations as well. If resource ----operations are present clients need to execute the operations in the order in which they ----are provided. So a workspace edit for example can consist of the following two changes: ----(1) a create file a.txt and (2) a text document edit which insert text into file a.txt. ---- ----An invalid sequence (e.g. (1) delete file a.txt and (2) insert text into file a.txt) will ----cause failure of the operation. How the client recovers from the failure is described by ----the client capability: `workspace.workspaceEdit.failureHandling` ----@class lsp.WorkspaceEdit ----Holds changes to existing resources. ----@field changes? table ----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. ----@field documentChanges? lsp.TextDocumentEdit|lsp.CreateFile|lsp.RenameFile|lsp.DeleteFile[] ----A map of change annotations that can be referenced in `AnnotatedTextEdit`s or create, rename and ----delete file / folder operations. ---- ----Whether clients honor this property depends on the client capability `workspace.changeAnnotationSupport`. ---- ----@since 3.16.0 ----@field changeAnnotations? table - ----The options to register for file operations. ---- ----@since 3.16.0 ----@class lsp.FileOperationRegistrationOptions ----The actual filters. ----@field filters lsp.FileOperationFilter[] - ----The parameters sent in notifications/requests for user-initiated renames of ----files. ---- ----@since 3.16.0 ----@class lsp.RenameFilesParams ----An array of all files/folders renamed in this operation. When a folder is renamed, only ----the folder will be included, and not its children. ----@field files lsp.FileRename[] - ----The parameters sent in notifications/requests for user-initiated deletes of ----files. ---- ----@since 3.16.0 ----@class lsp.DeleteFilesParams ----An array of all files/folders deleted in this operation. ----@field files lsp.FileDelete[] - ----@class lsp.MonikerParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams - ----Moniker definition to match LSIF 0.5 moniker definition. ---- ----@since 3.16.0 ----@class lsp.Moniker ----The scheme of the moniker. For example tsc or .Net ----@field scheme string ----The identifier of the moniker. The value is opaque in LSIF however ----schema owners are allowed to define the structure if they want. ----@field identifier string ----The scope in which the moniker is unique ----@field unique lsp.UniquenessLevel ----The moniker kind if known. ----@field kind? lsp.MonikerKind - ----@class lsp.MonikerRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----The parameter of a `textDocument/prepareTypeHierarchy` request. ---- ----@since 3.17.0 ----@class lsp.TypeHierarchyPrepareParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams - ----@since 3.17.0 ----@class lsp.TypeHierarchyItem ----The name of this item. ----@field name string ----The kind of this item. ----@field kind lsp.SymbolKind ----Tags for this item. ----@field tags? lsp.SymbolTag[] ----More detail for this item, e.g. the signature of a function. ----@field detail? string ----The resource identifier of this item. ----@field uri lsp.DocumentUri ----The range enclosing this symbol not including leading/trailing whitespace ----but everything else, e.g. comments and code. ----@field range lsp.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 ----{@link TypeHierarchyItem.range `range`}. ----@field selectionRange lsp.Range ----A data entry field that is preserved between a type hierarchy prepare and ----supertypes or subtypes requests. It could also be used to identify the ----type hierarchy in the server, helping improve the performance on ----resolving supertypes and subtypes. ----@field data? lsp.LSPAny - ----Type hierarchy options used during static or dynamic registration. ---- ----@since 3.17.0 ----@class lsp.TypeHierarchyRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions - ----The parameter of a `typeHierarchy/supertypes` request. ---- ----@since 3.17.0 ----@class lsp.TypeHierarchySupertypesParams ----@field item lsp.TypeHierarchyItem - ----The parameter of a `typeHierarchy/subtypes` request. ---- ----@since 3.17.0 ----@class lsp.TypeHierarchySubtypesParams ----@field item lsp.TypeHierarchyItem - ----A parameter literal used in inline value requests. ---- ----@since 3.17.0 ----@class lsp.InlineValueParams ----The text document. ----@field textDocument lsp.TextDocumentIdentifier ----The document range for which inline values should be computed. ----@field range lsp.Range ----Additional information about the context in which inline values were ----requested. ----@field context lsp.InlineValueContext - ----Inline value options used during static or dynamic registration. ---- ----@since 3.17.0 ----@class lsp.InlineValueRegistrationOptions: lsp.InlineValueOptions, lsp.StaticRegistrationOptions - ----A parameter literal used in inlay hint requests. ---- ----@since 3.17.0 ----@class lsp.InlayHintParams ----The text document. ----@field textDocument lsp.TextDocumentIdentifier ----The document range for which inlay hints should be computed. ----@field range lsp.Range - ----Inlay hint information. ---- ----@since 3.17.0 ----@class lsp.InlayHint ----The position of this hint. ----@field position lsp.Position ----The label of this hint. A human readable string or an array of ----InlayHintLabelPart label parts. ---- ----*Note* that neither the string nor the label part can be empty. ----@field label string|lsp.InlayHintLabelPart[] ----The kind of this hint. Can be omitted in which case the client ----should fall back to a reasonable default. ----@field kind? lsp.InlayHintKind ----Optional text edits that are performed when accepting this inlay hint. ---- ----*Note* that edits are expected to change the document so that the inlay ----hint (or its nearest variant) is now part of the document and the inlay ----hint itself is now obsolete. ----@field textEdits? lsp.TextEdit[] ----The tooltip text when you hover over this item. ----@field tooltip? string|lsp.MarkupContent ----Render padding before the hint. ---- ----Note: Padding should use the editor's background color, not the ----background color of the hint itself. That means padding can be used ----to visually align/separate an inlay hint. ----@field paddingLeft? boolean ----Render padding after the hint. ---- ----Note: Padding should use the editor's background color, not the ----background color of the hint itself. That means padding can be used ----to visually align/separate an inlay hint. ----@field paddingRight? boolean ----A data entry field that is preserved on an inlay hint between ----a `textDocument/inlayHint` and a `inlayHint/resolve` request. ----@field data? lsp.LSPAny - ----Inlay hint options used during static or dynamic registration. ---- ----@since 3.17.0 ----@class lsp.InlayHintRegistrationOptions: lsp.InlayHintOptions, lsp.StaticRegistrationOptions - ----Parameters of the document diagnostic request. ---- ----@since 3.17.0 ----@class lsp.DocumentDiagnosticParams ----The text document. ----@field textDocument lsp.TextDocumentIdentifier ----The additional identifier provided during registration. ----@field identifier? string ----The result id of a previous response if provided. ----@field previousResultId? string - ----A partial result for a document diagnostic report. ---- ----@since 3.17.0 ----@class lsp.DocumentDiagnosticReportPartialResult ----@field relatedDocuments table - ----Cancellation data returned from a diagnostic request. ---- ----@since 3.17.0 ----@class lsp.DiagnosticServerCancellationData ----@field retriggerRequest boolean - ----Diagnostic registration options. ---- ----@since 3.17.0 ----@class lsp.DiagnosticRegistrationOptions: lsp.TextDocumentRegistrationOptions, lsp.StaticRegistrationOptions - ----Parameters of the workspace diagnostic request. ---- ----@since 3.17.0 ----@class lsp.WorkspaceDiagnosticParams ----The additional identifier provided during registration. ----@field identifier? string ----The currently known diagnostic reports with their ----previous result ids. ----@field previousResultIds lsp.PreviousResultId[] - ----A workspace diagnostic report. ---- ----@since 3.17.0 ----@class lsp.WorkspaceDiagnosticReport ----@field items lsp.WorkspaceDocumentDiagnosticReport[] - ----A partial result for a workspace diagnostic report. ---- ----@since 3.17.0 ----@class lsp.WorkspaceDiagnosticReportPartialResult ----@field items lsp.WorkspaceDocumentDiagnosticReport[] - ----The params sent in an open notebook document notification. ---- ----@since 3.17.0 ----@class lsp.DidOpenNotebookDocumentParams ----The notebook document that got opened. ----@field notebookDocument lsp.NotebookDocument ----The text documents that represent the content ----of a notebook cell. ----@field cellTextDocuments lsp.TextDocumentItem[] - ----The params sent in a change notebook document notification. ---- ----@since 3.17.0 ----@class lsp.DidChangeNotebookDocumentParams ----The notebook document that did change. The version number points ----to the version after all provided changes have been applied. If ----only the text document content of a cell changes the notebook version ----doesn't necessarily have to change. ----@field notebookDocument lsp.VersionedNotebookDocumentIdentifier ----The actual changes to the notebook document. ---- ----The changes describe single state changes to the notebook document. ----So if there are two changes c1 (at array index 0) and c2 (at array ----index 1) for a notebook in state S then c1 moves the notebook from ----S to S' and c2 from S' to S''. So c1 is computed on the state S and ----c2 is computed on the state S'. ---- ----To mirror the content of a notebook using change events use the following approach: ----- start with the same initial content ----- apply the 'notebookDocument/didChange' notifications in the order you receive them. ----- apply the `NotebookChangeEvent`s in a single notification in the order ---- you receive them. ----@field change lsp.NotebookDocumentChangeEvent - ----The params sent in a save notebook document notification. ---- ----@since 3.17.0 ----@class lsp.DidSaveNotebookDocumentParams ----The notebook document that got saved. ----@field notebookDocument lsp.NotebookDocumentIdentifier - ----The params sent in a close notebook document notification. ---- ----@since 3.17.0 ----@class lsp.DidCloseNotebookDocumentParams ----The notebook document that got closed. ----@field notebookDocument lsp.NotebookDocumentIdentifier ----The text documents that represent the content ----of a notebook cell that got closed. ----@field cellTextDocuments lsp.TextDocumentIdentifier[] - ----A parameter literal used in inline completion requests. ---- ----@since 3.18.0 ----@class lsp.InlineCompletionParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams ----Additional information about the context in which inline completions were ----requested. ----@field context lsp.InlineCompletionContext - ----Represents a collection of {@link InlineCompletionItem inline completion items} to be presented in the editor. ----@class lsp.InlineCompletionList ----The inline completion items ----@field items lsp.InlineCompletionItem[] - ----An inline completion item represents a text snippet that is proposed inline to complete text that is being typed. ---- ----@since 3.18.0 ----@class lsp.InlineCompletionItem ----The text to replace the range with. Must be set. ----@field insertText string ----The format of the insert text. The format applies to the `insertText`. If omitted defaults to `InsertTextFormat.PlainText`. ----@field insertTextFormat? lsp.InsertTextFormat ----A text that is used to decide if this inline completion should be shown. When `falsy` the {@link InlineCompletionItem.insertText} is used. ----@field filterText? string ----The range to replace. Must begin and end on the same line. ----@field range? lsp.Range ----An optional {@link Command} that is executed *after* inserting this completion. ----@field command? lsp.Command - ----Inline completion options used during static or dynamic registration. ---- ----@since 3.18.0 ----@class lsp.InlineCompletionRegistrationOptions: lsp.InlineCompletionOptions, lsp.StaticRegistrationOptions - ----@class lsp.RegistrationParams ----@field registrations lsp.Registration[] - ----@class lsp.UnregistrationParams ----@field unregisterations lsp.Unregistration[] - ----@class lsp.InitializeParams: lsp._InitializeParams - ----The result returned from an initialize request. ----@class lsp.InitializeResult ----The capabilities the language server provides. ----@field capabilities lsp.ServerCapabilities ----Information about the server. ---- ----@since 3.15.0 ----@field serverInfo? anonym1 - ----The data type of the ResponseError if the ----initialize request fails. ----@class lsp.InitializeError ----Indicates whether the client execute the following retry logic: ----(1) show the message provided by the ResponseError to the user ----(2) user selects retry or cancel ----(3) if user selected retry the initialize method is sent again. ----@field retry boolean - ----@class lsp.InitializedParams - ----The parameters of a change configuration notification. ----@class lsp.DidChangeConfigurationParams ----The actual changed settings ----@field settings lsp.LSPAny - ----@class lsp.DidChangeConfigurationRegistrationOptions ----@field section? string|string[] - ----The parameters of a notification message. ----@class lsp.ShowMessageParams ----The message type. See {@link MessageType} ----@field type lsp.MessageType ----The actual message. ----@field message string - ----@class lsp.ShowMessageRequestParams ----The message type. See {@link MessageType} ----@field type lsp.MessageType ----The actual message. ----@field message string ----The message action items to present. ----@field actions? lsp.MessageActionItem[] - ----@class lsp.MessageActionItem ----A short title like 'Retry', 'Open Log' etc. ----@field title string - ----The log message parameters. ----@class lsp.LogMessageParams ----The message type. See {@link MessageType} ----@field type lsp.MessageType ----The actual message. ----@field message string - ----The parameters sent in an open text document notification ----@class lsp.DidOpenTextDocumentParams ----The document that was opened. ----@field textDocument lsp.TextDocumentItem - ----The change text document notification's parameters. ----@class lsp.DidChangeTextDocumentParams ----The document that did change. The version number points ----to the version after all provided content changes have ----been applied. ----@field textDocument lsp.VersionedTextDocumentIdentifier ----The actual content changes. The content changes describe single state changes ----to the document. So if there are two content changes c1 (at array index 0) and ----c2 (at array index 1) for a document in state S then c1 moves the document from ----S to S' and c2 from S' to S''. So c1 is computed on the state S and c2 is computed ----on the state S'. ---- ----To mirror the content of a document using change events use the following approach: ----- start with the same initial content ----- apply the 'textDocument/didChange' notifications in the order you receive them. ----- apply the `TextDocumentContentChangeEvent`s in a single notification in the order ---- you receive them. ----@field contentChanges lsp.TextDocumentContentChangeEvent[] - ----Describe options to be used when registered for text document change events. ----@class lsp.TextDocumentChangeRegistrationOptions: lsp.TextDocumentRegistrationOptions ----How documents are synced to the server. ----@field syncKind lsp.TextDocumentSyncKind - ----The parameters sent in a close text document notification ----@class lsp.DidCloseTextDocumentParams ----The document that was closed. ----@field textDocument lsp.TextDocumentIdentifier - ----The parameters sent in a save text document notification ----@class lsp.DidSaveTextDocumentParams ----The document that was saved. ----@field textDocument lsp.TextDocumentIdentifier ----Optional the content when saved. Depends on the includeText value ----when the save notification was requested. ----@field text? string - ----Save registration options. ----@class lsp.TextDocumentSaveRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----The parameters sent in a will save text document notification. ----@class lsp.WillSaveTextDocumentParams ----The document that will be saved. ----@field textDocument lsp.TextDocumentIdentifier ----The 'TextDocumentSaveReason'. ----@field reason lsp.TextDocumentSaveReason - ----A text edit applicable to a text document. ----@class lsp.TextEdit ----The range of the text document to be manipulated. To insert ----text into a document create a range where start === end. ----@field range lsp.Range ----The string to be inserted. For delete operations use an ----empty string. ----@field newText string - ----The watched files change notification's parameters. ----@class lsp.DidChangeWatchedFilesParams ----The actual file events. ----@field changes lsp.FileEvent[] - ----Describe options to be used when registered for text document change events. ----@class lsp.DidChangeWatchedFilesRegistrationOptions ----The watchers to register. ----@field watchers lsp.FileSystemWatcher[] - ----The publish diagnostic notification's parameters. ----@class lsp.PublishDiagnosticsParams ----The URI for which diagnostic information is reported. ----@field uri lsp.DocumentUri ----Optional the version number of the document the diagnostics are published for. ---- ----@since 3.15.0 ----@field version? integer ----An array of diagnostic information items. ----@field diagnostics lsp.Diagnostic[] - ----Completion parameters ----@class lsp.CompletionParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams ----The completion context. This is only available it the client specifies ----to send this using the client capability `textDocument.completion.contextSupport === true` ----@field context? lsp.CompletionContext - ----A completion item represents a text snippet that is ----proposed to complete text that is being typed. ----@class lsp.CompletionItem ----The label of this completion item. ---- ----The label property is also by default the text that ----is inserted when selecting this completion. ---- ----If label details are provided the label itself should ----be an unqualified name of the completion item. ----@field label string ----Additional details for the label ---- ----@since 3.17.0 ----@field labelDetails? lsp.CompletionItemLabelDetails ----The kind of this completion item. Based of the kind ----an icon is chosen by the editor. ----@field kind? lsp.CompletionItemKind ----Tags for this completion item. ---- ----@since 3.15.0 ----@field tags? lsp.CompletionItemTag[] ----A human-readable string with additional information ----about this item, like type or symbol information. ----@field detail? string ----A human-readable string that represents a doc-comment. ----@field documentation? string|lsp.MarkupContent ----Indicates if this item is deprecated. ----@deprecated Use `tags` instead. ----@field 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. ----@field preselect? boolean ----A string that should be used when comparing this item ----with other items. When `falsy` the {@link CompletionItem.label label} ----is used. ----@field sortText? string ----A string that should be used when filtering a set of ----completion items. When `falsy` the {@link CompletionItem.label label} ----is used. ----@field filterText? string ----A string that should be inserted into a document when selecting ----this completion. When `falsy` the {@link CompletionItem.label 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. ----@field 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 omitted defaults to `InsertTextFormat.PlainText`. ---- ----Please note that the insertTextFormat doesn't apply to ----`additionalTextEdits`. ----@field insertTextFormat? lsp.InsertTextFormat ----How whitespace and indentation is handled during completion ----item insertion. If not provided the clients default value depends on ----the `textDocument.completion.insertTextMode` client capability. ---- ----@since 3.16.0 ----@field insertTextMode? lsp.InsertTextMode ----An {@link TextEdit edit} which is applied to a document when selecting ----this completion. When an edit is provided the value of ----{@link CompletionItem.insertText insertText} is ignored. ---- ----Most editors support two different operations when accepting a completion ----item. One is to insert a completion text and the other is to replace an ----existing text with a completion text. Since this can usually not be ----predetermined by a server it can report both ranges. Clients need to ----signal support for `InsertReplaceEdits` via the ----`textDocument.completion.insertReplaceSupport` client capability ----property. ---- ----*Note 1:* The text edit's range as well as both ranges from an insert ----replace edit must be a [single line] and they must contain the position ----at which completion has been requested. ----*Note 2:* If an `InsertReplaceEdit` is returned the edit's insert range ----must be a prefix of the edit's replace range, that means it must be ----contained and starting at the same position. ---- ----@since 3.16.0 additional type `InsertReplaceEdit` ----@field textEdit? lsp.TextEdit|lsp.InsertReplaceEdit ----The edit text used if the completion item is part of a CompletionList and ----CompletionList defines an item default for the text edit range. ---- ----Clients will only honor this property if they opt into completion list ----item defaults using the capability `completionList.itemDefaults`. ---- ----If not provided and a list's default range is provided the label ----property is used as a text. ---- ----@since 3.17.0 ----@field textEditText? string ----An optional array of additional {@link TextEdit text edits} that are applied when ----selecting this completion. Edits must not overlap (including the same insert position) ----with the main {@link CompletionItem.textEdit edit} 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). ----@field additionalTextEdits? lsp.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. ----@field commitCharacters? string[] ----An optional {@link Command command} that is executed *after* inserting this completion. *Note* that ----additional modifications to the current document should be described with the ----{@link CompletionItem.additionalTextEdits additionalTextEdits}-property. ----@field command? lsp.Command ----A data entry field that is preserved on a completion item between a ----{@link CompletionRequest} and a {@link CompletionResolveRequest}. ----@field data? lsp.LSPAny - ----Represents a collection of {@link CompletionItem completion items} to be presented ----in the editor. ----@class lsp.CompletionList ----This list it not complete. Further typing results in recomputing this list. ---- ----Recomputed lists have all their items replaced (not appended) in the ----incomplete completion sessions. ----@field isIncomplete boolean ----In many cases the items of an actual completion result share the same ----value for properties like `commitCharacters` or the range of a text ----edit. A completion list can therefore define item defaults which will ----be used if a completion item itself doesn't specify the value. ---- ----If a completion list specifies a default value and a completion item ----also specifies a corresponding value the one from the item is used. ---- ----Servers are only allowed to return default values if the client ----signals support for this via the `completionList.itemDefaults` ----capability. ---- ----@since 3.17.0 ----@field itemDefaults? anonym3 ----The completion items. ----@field items lsp.CompletionItem[] - ----Registration options for a {@link CompletionRequest}. ----@class lsp.CompletionRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----Parameters for a {@link HoverRequest}. ----@class lsp.HoverParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams - ----The result of a hover request. ----@class lsp.Hover ----The hover's content ----@field contents lsp.MarkupContent|lsp.MarkedString|lsp.MarkedString[] ----An optional range inside the text document that is used to ----visualize the hover, e.g. by changing the background color. ----@field range? lsp.Range - ----Registration options for a {@link HoverRequest}. ----@class lsp.HoverRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----Parameters for a {@link SignatureHelpRequest}. ----@class lsp.SignatureHelpParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams ----The signature help context. This is only available if the client specifies ----to send this using the client capability `textDocument.signatureHelp.contextSupport === true` ---- ----@since 3.15.0 ----@field context? lsp.SignatureHelpContext - ----Signature help represents the signature of something ----callable. There can be multiple signature but only one ----active and only one active parameter. ----@class lsp.SignatureHelp ----One or more signatures. ----@field signatures lsp.SignatureInformation[] ----The active signature. If omitted or the value lies outside the ----range of `signatures` the value defaults to zero or is ignored if ----the `SignatureHelp` has no signatures. ---- ----Whenever possible implementors should make an active decision about ----the active signature and shouldn't rely on a default value. ---- ----In future version of the protocol this property might become ----mandatory to better express this. ----@field activeSignature? uinteger ----The active parameter of the active signature. If omitted or the value ----lies outside the range of `signatures[activeSignature].parameters` ----defaults to 0 if the active signature has parameters. If ----the active signature has no parameters it is ignored. ----In future version of the protocol this property might become ----mandatory to better express the active parameter if the ----active signature does have any. ----@field activeParameter? uinteger - ----Registration options for a {@link SignatureHelpRequest}. ----@class lsp.SignatureHelpRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----Parameters for a {@link DefinitionRequest}. ----@class lsp.DefinitionParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams - ----Registration options for a {@link DefinitionRequest}. ----@class lsp.DefinitionRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----Parameters for a {@link ReferencesRequest}. ----@class lsp.ReferenceParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams ----@field context lsp.ReferenceContext - ----Registration options for a {@link ReferencesRequest}. ----@class lsp.ReferenceRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----Parameters for a {@link DocumentHighlightRequest}. ----@class lsp.DocumentHighlightParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams, lsp.PartialResultParams - ----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. ----@class lsp.DocumentHighlight ----The range this highlight applies to. ----@field range lsp.Range ----The highlight kind, default is {@link DocumentHighlightKind.Text text}. ----@field kind? lsp.DocumentHighlightKind - ----Registration options for a {@link DocumentHighlightRequest}. ----@class lsp.DocumentHighlightRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----Parameters for a {@link DocumentSymbolRequest}. ----@class lsp.DocumentSymbolParams ----The text document. ----@field textDocument lsp.TextDocumentIdentifier - ----Represents information about programming constructs like variables, classes, ----interfaces etc. ----@class lsp.SymbolInformation: lsp.BaseSymbolInformation ----Indicates if this symbol is deprecated. ---- ----@deprecated Use tags instead ----@field 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 things like visibility modifiers. ---- ----The range doesn't have to denote a node range in the sense of an abstract ----syntax tree. It can therefore not be used to re-construct a hierarchy of ----the symbols. ----@field location lsp.Location - ----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. ----@class lsp.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. ----@field name string ----More detail for this symbol, e.g the signature of a function. ----@field detail? string ----The kind of this symbol. ----@field kind lsp.SymbolKind ----Tags for this document symbol. ---- ----@since 3.16.0 ----@field tags? lsp.SymbolTag[] ----Indicates if this symbol is deprecated. ---- ----@deprecated Use tags instead ----@field 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 clients cursor is ----inside the symbol to reveal in the symbol in the UI. ----@field range lsp.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 `range`. ----@field selectionRange lsp.Range ----Children of this symbol, e.g. properties of a class. ----@field children? lsp.DocumentSymbol[] - ----Registration options for a {@link DocumentSymbolRequest}. ----@class lsp.DocumentSymbolRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----The parameters of a {@link CodeActionRequest}. ----@class lsp.CodeActionParams ----The document in which the command was invoked. ----@field textDocument lsp.TextDocumentIdentifier ----The range for which the command was invoked. ----@field range lsp.Range ----Context carrying additional information. ----@field context lsp.CodeActionContext - ----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. ----@class lsp.Command ----Title of the command, like `save`. ----@field title string ----The identifier of the actual command handler. ----@field command string ----Arguments that the command handler should be ----invoked with. ----@field arguments? lsp.LSPAny[] - ----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. ----@class lsp.CodeAction ----A short, human-readable, title for this code action. ----@field title string ----The kind of the code action. ---- ----Used to filter code actions. ----@field kind? lsp.CodeActionKind ----The diagnostics that this code action resolves. ----@field diagnostics? lsp.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 ----@field isPreferred? boolean ----Marks that the code action cannot currently be applied. ---- ----Clients should follow the following guidelines regarding disabled code actions: ---- ---- - Disabled code actions are not shown in automatic [lightbulbs](https://code.visualstudio.com/docs/editor/editingevolved#_code-action) ---- code action menus. ---- ---- - Disabled actions are shown as faded out in the code action menu when the user requests a more specific type ---- of code action, such as refactorings. ---- ---- - If the user has a [keybinding](https://code.visualstudio.com/docs/editor/refactoring#_keybindings-for-code-actions) ---- that auto applies a code action and only disabled code actions are returned, the client should show the user an ---- error message with `reason` in the editor. ---- ----@since 3.16.0 ----@field disabled? anonym4 ----The workspace edit this code action performs. ----@field edit? lsp.WorkspaceEdit ----A command this code action executes. If a code action ----provides an edit and a command, first the edit is ----executed and then the command. ----@field command? lsp.Command ----A data entry field that is preserved on a code action between ----a `textDocument/codeAction` and a `codeAction/resolve` request. ---- ----@since 3.16.0 ----@field data? lsp.LSPAny - ----Registration options for a {@link CodeActionRequest}. ----@class lsp.CodeActionRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----The parameters of a {@link WorkspaceSymbolRequest}. ----@class lsp.WorkspaceSymbolParams ----A query string to filter symbols by. Clients may send an empty ----string here to request all symbols. ----@field query string - ----A special workspace symbol that supports locations without a range. ---- ----See also SymbolInformation. ---- ----@since 3.17.0 ----@class lsp.WorkspaceSymbol: lsp.BaseSymbolInformation ----The location of the symbol. Whether a server is allowed to ----return a location without a range depends on the client ----capability `workspace.symbol.resolveSupport`. ---- ----See SymbolInformation#location for more details. ----@field location lsp.Location|anonym5 ----A data entry field that is preserved on a workspace symbol between a ----workspace symbol request and a workspace symbol resolve request. ----@field data? lsp.LSPAny - ----Registration options for a {@link WorkspaceSymbolRequest}. ----@class lsp.WorkspaceSymbolRegistrationOptions: lsp.WorkspaceSymbolOptions - ----The parameters of a {@link CodeLensRequest}. ----@class lsp.CodeLensParams ----The document to request code lens for. ----@field textDocument lsp.TextDocumentIdentifier - ----A code lens represents a {@link 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 in two stages. ----@class lsp.CodeLens ----The range in which this code lens is valid. Should only span a single line. ----@field range lsp.Range ----The command this code lens represents. ----@field command? lsp.Command ----A data entry field that is preserved on a code lens item between ----a {@link CodeLensRequest} and a [CodeLensResolveRequest] ----(#CodeLensResolveRequest) ----@field data? lsp.LSPAny - ----Registration options for a {@link CodeLensRequest}. ----@class lsp.CodeLensRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----The parameters of a {@link DocumentLinkRequest}. ----@class lsp.DocumentLinkParams ----The document to provide document links for. ----@field textDocument lsp.TextDocumentIdentifier - ----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. ----@class lsp.DocumentLink ----The range this link applies to. ----@field range lsp.Range ----The uri this link points to. If missing a resolve request is sent later. ----@field target? lsp.URI ----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 ----@field tooltip? string ----A data entry field that is preserved on a document link between a ----DocumentLinkRequest and a DocumentLinkResolveRequest. ----@field data? lsp.LSPAny - ----Registration options for a {@link DocumentLinkRequest}. ----@class lsp.DocumentLinkRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----The parameters of a {@link DocumentFormattingRequest}. ----@class lsp.DocumentFormattingParams ----The document to format. ----@field textDocument lsp.TextDocumentIdentifier ----The format options. ----@field options lsp.FormattingOptions - ----Registration options for a {@link DocumentFormattingRequest}. ----@class lsp.DocumentFormattingRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----The parameters of a {@link DocumentRangeFormattingRequest}. ----@class lsp.DocumentRangeFormattingParams ----The document to format. ----@field textDocument lsp.TextDocumentIdentifier ----The range to format ----@field range lsp.Range ----The format options ----@field options lsp.FormattingOptions - ----Registration options for a {@link DocumentRangeFormattingRequest}. ----@class lsp.DocumentRangeFormattingRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----The parameters of a {@link DocumentRangesFormattingRequest}. ---- ----@since 3.18.0 ----@proposed ----@class lsp.DocumentRangesFormattingParams ----The document to format. ----@field textDocument lsp.TextDocumentIdentifier ----The ranges to format ----@field ranges lsp.Range[] ----The format options ----@field options lsp.FormattingOptions - ----The parameters of a {@link DocumentOnTypeFormattingRequest}. ----@class lsp.DocumentOnTypeFormattingParams ----The document to format. ----@field textDocument lsp.TextDocumentIdentifier ----The position around which the on type formatting should happen. ----This is not necessarily the exact position where the character denoted ----by the property `ch` got typed. ----@field position lsp.Position ----The character that has been typed that triggered the formatting ----on type request. That is not necessarily the last character that ----got inserted into the document since the client could auto insert ----characters as well (e.g. like automatic brace completion). ----@field ch string ----The formatting options. ----@field options lsp.FormattingOptions - ----Registration options for a {@link DocumentOnTypeFormattingRequest}. ----@class lsp.DocumentOnTypeFormattingRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----The parameters of a {@link RenameRequest}. ----@class lsp.RenameParams ----The document to rename. ----@field textDocument lsp.TextDocumentIdentifier ----The position at which this request was sent. ----@field position lsp.Position ----The new name of the symbol. If the given name is not valid the ----request must return a {@link ResponseError} with an ----appropriate message set. ----@field newName string - ----Registration options for a {@link RenameRequest}. ----@class lsp.RenameRegistrationOptions: lsp.TextDocumentRegistrationOptions - ----@class lsp.PrepareRenameParams: lsp.TextDocumentPositionParams, lsp.WorkDoneProgressParams - ----The parameters of a {@link ExecuteCommandRequest}. ----@class lsp.ExecuteCommandParams ----The identifier of the actual command handler. ----@field command string ----Arguments that the command should be invoked with. ----@field arguments? lsp.LSPAny[] - ----Registration options for a {@link ExecuteCommandRequest}. ----@class lsp.ExecuteCommandRegistrationOptions: lsp.ExecuteCommandOptions - ----The parameters passed via an apply workspace edit request. ----@class lsp.ApplyWorkspaceEditParams ----An optional label of the workspace edit. This label is ----presented in the user interface for example on an undo ----stack to undo the workspace edit. ----@field label? string ----The edits to apply. ----@field edit lsp.WorkspaceEdit - ----The result returned from the apply workspace edit request. ---- ----@since 3.17 renamed from ApplyWorkspaceEditResponse ----@class lsp.ApplyWorkspaceEditResult ----Indicates whether the edit was applied or not. ----@field applied boolean ----An optional textual description for why the edit was not applied. ----This may be used by the server for diagnostic logging or to provide ----a suitable error for a request that triggered the edit. ----@field failureReason? string ----Depending on the client's failure handling strategy `failedChange` might ----contain the index of the change that failed. This property is only available ----if the client signals a `failureHandlingStrategy` in its client capabilities. ----@field failedChange? uinteger - ----@class lsp.WorkDoneProgressBegin ----@field kind "begin" ----Mandatory title of the progress operation. Used to briefly inform about ----the kind of operation being performed. ---- ----Examples: "Indexing" or "Linking dependencies". ----@field title string ----Controls if a cancel button should show to allow the user to cancel the ----long running operation. Clients that don't support cancellation are allowed ----to ignore the setting. ----@field cancellable? boolean ----Optional, more detailed associated progress message. Contains ----complementary information to the `title`. ---- ----Examples: "3/25 files", "project/src/module2", "node_modules/some_dep". ----If unset, the previous progress message (if any) is still valid. ----@field message? string ----Optional progress percentage to display (value 100 is considered 100%). ----If not provided infinite progress is assumed and clients are allowed ----to ignore the `percentage` value in subsequent in report notifications. ---- ----The value should be steadily rising. Clients are free to ignore values ----that are not following this rule. The value range is [0, 100]. ----@field percentage? uinteger - ----@class lsp.WorkDoneProgressReport ----@field kind "report" ----Controls enablement state of a cancel button. ---- ----Clients that don't support cancellation or don't support controlling the button's ----enablement state are allowed to ignore the property. ----@field cancellable? boolean ----Optional, more detailed associated progress message. Contains ----complementary information to the `title`. ---- ----Examples: "3/25 files", "project/src/module2", "node_modules/some_dep". ----If unset, the previous progress message (if any) is still valid. ----@field message? string ----Optional progress percentage to display (value 100 is considered 100%). ----If not provided infinite progress is assumed and clients are allowed ----to ignore the `percentage` value in subsequent in report notifications. ---- ----The value should be steadily rising. Clients are free to ignore values ----that are not following this rule. The value range is [0, 100] ----@field percentage? uinteger - ----@class lsp.WorkDoneProgressEnd ----@field kind "end" ----Optional, a final message indicating to for example indicate the outcome ----of the operation. ----@field message? string - ----@class lsp.SetTraceParams ----@field value lsp.TraceValues - ----@class lsp.LogTraceParams ----@field message string ----@field verbose? string - ----@class lsp.CancelParams ----The request id to cancel. ----@field id integer|string - ----@class lsp.ProgressParams ----The progress token provided by the client or server. ----@field token lsp.ProgressToken ----The progress data. ----@field value lsp.LSPAny - ----A parameter literal used in requests to pass a text document and a position inside that ----document. ----@class lsp.TextDocumentPositionParams ----The text document. ----@field textDocument lsp.TextDocumentIdentifier ----The position inside the text document. ----@field position lsp.Position - ----@class lsp.WorkDoneProgressParams ----An optional token that a server can use to report work done progress. ----@field workDoneToken? lsp.ProgressToken - ----@class lsp.PartialResultParams ----An optional token that a server can use to report partial results (e.g. streaming) to ----the client. ----@field partialResultToken? lsp.ProgressToken - ----Represents the connection of two locations. Provides additional metadata over normal {@link Location locations}, ----including an origin range. ----@class lsp.LocationLink ----Span of the origin of this link. ---- ----Used as the underlined span for mouse interaction. Defaults to the word range at ----the definition position. ----@field originSelectionRange? lsp.Range ----The target resource identifier of this link. ----@field targetUri lsp.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. ----@field targetRange lsp.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 `targetRange`. See also `DocumentSymbol#range` ----@field targetSelectionRange lsp.Range - ----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 } ----} ----``` ----@class lsp.Range ----The range's start position. ----@field start lsp.Position ----The range's end position. ----@field end lsp.Position - ----@class lsp.ImplementationOptions - ----Static registration options to be returned in the initialize ----request. ----@class lsp.StaticRegistrationOptions ----The id used to register the request. The id can be used to deregister ----the request again. See also Registration#id. ----@field id? string - ----@class lsp.TypeDefinitionOptions - ----The workspace folder change event. ----@class lsp.WorkspaceFoldersChangeEvent ----The array of added workspace folders ----@field added lsp.WorkspaceFolder[] ----The array of the removed workspace folders ----@field removed lsp.WorkspaceFolder[] - ----@class lsp.ConfigurationItem ----The scope to get the configuration section for. ----@field scopeUri? string ----The configuration section asked for. ----@field section? string - ----A literal to identify a text document in the client. ----@class lsp.TextDocumentIdentifier ----The text document's uri. ----@field uri lsp.DocumentUri - ----Represents a color in RGBA space. ----@class lsp.Color ----The red component of this color in the range [0-1]. ----@field red decimal ----The green component of this color in the range [0-1]. ----@field green decimal ----The blue component of this color in the range [0-1]. ----@field blue decimal ----The alpha component of this color in the range [0-1]. ----@field alpha decimal - ----@class lsp.DocumentColorOptions - ----@class lsp.FoldingRangeOptions - ----@class lsp.DeclarationOptions - ----Position in a text document expressed as zero-based line and character ----offset. Prior to 3.17 the offsets were always 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. ----Since 3.17 clients and servers can agree on a different string encoding ----representation (e.g. UTF-8). The client announces it's supported encoding ----via the client capability [`general.positionEncodings`](#clientCapabilities). ----The value is an array of position encodings the client supports, with ----decreasing preference (e.g. the encoding at index `0` is the most preferred ----one). To stay backwards compatible the only mandatory encoding is UTF-16 ----represented via the string `utf-16`. The server can pick one of the ----encodings offered by the client and signals that encoding back to the ----client via the initialize result's property ----[`capabilities.positionEncoding`](#serverCapabilities). If the string value ----`utf-16` is missing from the client's capability `general.positionEncodings` ----servers can safely assume that the client supports UTF-16. If the server ----omits the position encoding in its initialize result the encoding defaults ----to the string value `utf-16`. Implementation considerations: since the ----conversion from one encoding into another requires the content of the ----file / line the conversion is best done where the file is read which is ----usually on the server side. ---- ----Positions are line end character agnostic. So you can not specify a position ----that denotes `\r|\n` or `\n|` where `|` represents the character offset. ---- ----@since 3.17.0 - support for negotiated position encoding. ----@class lsp.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. ----@field line uinteger ----Character offset on a line in a document (zero-based). ---- ----The meaning of this offset is determined by the negotiated ----`PositionEncodingKind`. ---- ----If the character value is greater than the line length it defaults back to the ----line length. ----@field character uinteger - ----@class lsp.SelectionRangeOptions - ----Call hierarchy options used during static registration. ---- ----@since 3.16.0 ----@class lsp.CallHierarchyOptions - ----@since 3.16.0 ----@class lsp.SemanticTokensOptions ----The legend used by the server ----@field legend lsp.SemanticTokensLegend ----Server supports providing semantic tokens for a specific range ----of a document. ----@field range? boolean|anonym6 ----Server supports providing semantic tokens for a full document. ----@field full? boolean|anonym7 - ----@since 3.16.0 ----@class lsp.SemanticTokensEdit ----The start offset of the edit. ----@field start uinteger ----The count of elements to remove. ----@field deleteCount uinteger ----The elements to insert. ----@field data? uinteger[] - ----@class lsp.LinkedEditingRangeOptions - ----Represents information on a file/folder create. ---- ----@since 3.16.0 ----@class lsp.FileCreate ----A file:// URI for the location of the file/folder being created. ----@field uri string - ----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. ----@class lsp.TextDocumentEdit ----The text document to change. ----@field textDocument lsp.OptionalVersionedTextDocumentIdentifier ----The edits to be applied. ---- ----@since 3.16.0 - support for AnnotatedTextEdit. This is guarded using a ----client capability. ----@field edits lsp.TextEdit|lsp.AnnotatedTextEdit[] - ----Create file operation. ----@class lsp.CreateFile: lsp.ResourceOperation ----A create ----@field kind "create" ----The resource to create. ----@field uri lsp.DocumentUri ----Additional options ----@field options? lsp.CreateFileOptions - ----Rename file operation ----@class lsp.RenameFile: lsp.ResourceOperation ----A rename ----@field kind "rename" ----The old (existing) location. ----@field oldUri lsp.DocumentUri ----The new location. ----@field newUri lsp.DocumentUri ----Rename options. ----@field options? lsp.RenameFileOptions - ----Delete file operation ----@class lsp.DeleteFile: lsp.ResourceOperation ----A delete ----@field kind "delete" ----The file to delete. ----@field uri lsp.DocumentUri ----Delete options. ----@field options? lsp.DeleteFileOptions - ----Additional information that describes document changes. ---- ----@since 3.16.0 ----@class lsp.ChangeAnnotation ----A human-readable string describing the actual change. The string ----is rendered prominent in the user interface. ----@field label string ----A flag which indicates that user confirmation is needed ----before applying the change. ----@field needsConfirmation? boolean ----A human-readable string which is rendered less prominent in ----the user interface. ----@field description? string - ----A filter to describe in which file operation requests or notifications ----the server is interested in receiving. ---- ----@since 3.16.0 ----@class lsp.FileOperationFilter ----A Uri scheme like `file` or `untitled`. ----@field scheme? string ----The actual file operation pattern. ----@field pattern lsp.FileOperationPattern - ----Represents information on a file/folder rename. ---- ----@since 3.16.0 ----@class lsp.FileRename ----A file:// URI for the original location of the file/folder being renamed. ----@field oldUri string ----A file:// URI for the new location of the file/folder being renamed. ----@field newUri string - ----Represents information on a file/folder delete. ---- ----@since 3.16.0 ----@class lsp.FileDelete ----A file:// URI for the location of the file/folder being deleted. ----@field uri string - ----@class lsp.MonikerOptions - ----Type hierarchy options used during static registration. ---- ----@since 3.17.0 ----@class lsp.TypeHierarchyOptions - ----@since 3.17.0 ----@class lsp.InlineValueContext ----The stack frame (as a DAP Id) where the execution has stopped. ----@field frameId integer ----The document range where execution has stopped. ----Typically the end position of the range denotes the line where the inline values are shown. ----@field stoppedLocation lsp.Range - ----Provide inline value as text. ---- ----@since 3.17.0 ----@class lsp.InlineValueText ----The document range for which the inline value applies. ----@field range lsp.Range ----The text of the inline value. ----@field text string - ----Provide inline value through a variable lookup. ----If only a range is specified, the variable name will be extracted from the underlying document. ----An optional variable name can be used to override the extracted name. ---- ----@since 3.17.0 ----@class lsp.InlineValueVariableLookup ----The document range for which the inline value applies. ----The range is used to extract the variable name from the underlying document. ----@field range lsp.Range ----If specified the name of the variable to look up. ----@field variableName? string ----How to perform the lookup. ----@field caseSensitiveLookup boolean - ----Provide an inline value through an expression evaluation. ----If only a range is specified, the expression will be extracted from the underlying document. ----An optional expression can be used to override the extracted expression. ---- ----@since 3.17.0 ----@class lsp.InlineValueEvaluatableExpression ----The document range for which the inline value applies. ----The range is used to extract the evaluatable expression from the underlying document. ----@field range lsp.Range ----If specified the expression overrides the extracted expression. ----@field expression? string - ----Inline value options used during static registration. ---- ----@since 3.17.0 ----@class lsp.InlineValueOptions - ----An inlay hint label part allows for interactive and composite labels ----of inlay hints. ---- ----@since 3.17.0 ----@class lsp.InlayHintLabelPart ----The value of this label part. ----@field value string ----The tooltip text when you hover over this label part. Depending on ----the client capability `inlayHint.resolveSupport` clients might resolve ----this property late using the resolve request. ----@field tooltip? string|lsp.MarkupContent ----An optional source code location that represents this ----label part. ---- ----The editor will use this location for the hover and for code navigation ----features: This part will become a clickable link that resolves to the ----definition of the symbol at the given location (not necessarily the ----location itself), it shows the hover that shows at the given location, ----and it shows a context menu with further code navigation commands. ---- ----Depending on the client capability `inlayHint.resolveSupport` clients ----might resolve this property late using the resolve request. ----@field location? lsp.Location ----An optional command for this label part. ---- ----Depending on the client capability `inlayHint.resolveSupport` clients ----might resolve this property late using the resolve request. ----@field command? lsp.Command - ----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. ----@class lsp.MarkupContent ----The type of the Markup ----@field kind lsp.MarkupKind ----The content itself ----@field value string - ----Inlay hint options used during static registration. ---- ----@since 3.17.0 ----@class lsp.InlayHintOptions ----The server provides support to resolve additional ----information for an inlay hint item. ----@field resolveProvider? boolean - ----A full diagnostic report with a set of related documents. ---- ----@since 3.17.0 ----@class lsp.RelatedFullDocumentDiagnosticReport: lsp.FullDocumentDiagnosticReport ----Diagnostics of related documents. This information is useful ----in programming languages where code in a file A can generate ----diagnostics in a file B which A depends on. An example of ----such a language is C/C++ where marco definitions in a file ----a.cpp and result in errors in a header file b.hpp. ---- ----@since 3.17.0 ----@field relatedDocuments? table - ----An unchanged diagnostic report with a set of related documents. ---- ----@since 3.17.0 ----@class lsp.RelatedUnchangedDocumentDiagnosticReport: lsp.UnchangedDocumentDiagnosticReport ----Diagnostics of related documents. This information is useful ----in programming languages where code in a file A can generate ----diagnostics in a file B which A depends on. An example of ----such a language is C/C++ where marco definitions in a file ----a.cpp and result in errors in a header file b.hpp. ---- ----@since 3.17.0 ----@field relatedDocuments? table - ----A diagnostic report with a full set of problems. ---- ----@since 3.17.0 ----@class lsp.FullDocumentDiagnosticReport ----A full document diagnostic report. ----@field kind "full" ----An optional result id. If provided it will ----be sent on the next diagnostic request for the ----same document. ----@field resultId? string ----The actual items. ----@field items lsp.Diagnostic[] - ----A diagnostic report indicating that the last returned ----report is still accurate. ---- ----@since 3.17.0 ----@class lsp.UnchangedDocumentDiagnosticReport ----A document diagnostic report indicating ----no changes to the last result. A server can ----only return `unchanged` if result ids are ----provided. ----@field kind "unchanged" ----A result id which will be sent on the next ----diagnostic request for the same document. ----@field resultId string - ----Diagnostic options. ---- ----@since 3.17.0 ----@class lsp.DiagnosticOptions ----An optional identifier under which the diagnostics are ----managed by the client. ----@field identifier? string ----Whether the language has inter file dependencies meaning that ----editing code in one file can result in a different diagnostic ----set in another file. Inter file dependencies are common for ----most programming languages and typically uncommon for linters. ----@field interFileDependencies boolean ----The server provides support for workspace diagnostics as well. ----@field workspaceDiagnostics boolean - ----A previous result id in a workspace pull request. ---- ----@since 3.17.0 ----@class lsp.PreviousResultId ----The URI for which the client knowns a ----result id. ----@field uri lsp.DocumentUri ----The value of the previous result id. ----@field value string - ----A notebook document. ---- ----@since 3.17.0 ----@class lsp.NotebookDocument ----The notebook document's uri. ----@field uri lsp.URI ----The type of the notebook. ----@field notebookType string ----The version number of this document (it will increase after each ----change, including undo/redo). ----@field version integer ----Additional metadata stored with the notebook ----document. ---- ----Note: should always be an object literal (e.g. LSPObject) ----@field metadata? lsp.LSPObject ----The cells of a notebook. ----@field cells lsp.NotebookCell[] - ----An item to transfer a text document from the client to the ----server. ----@class lsp.TextDocumentItem ----The text document's uri. ----@field uri lsp.DocumentUri ----The text document's language identifier. ----@field languageId string ----The version number of this document (it will increase after each ----change, including undo/redo). ----@field version integer ----The content of the opened text document. ----@field text string - ----A versioned notebook document identifier. ---- ----@since 3.17.0 ----@class lsp.VersionedNotebookDocumentIdentifier ----The version number of this notebook document. ----@field version integer ----The notebook document's uri. ----@field uri lsp.URI - ----A change event for a notebook document. ---- ----@since 3.17.0 ----@class lsp.NotebookDocumentChangeEvent ----The changed meta data if any. ---- ----Note: should always be an object literal (e.g. LSPObject) ----@field metadata? lsp.LSPObject ----Changes to cells ----@field cells? anonym10 - ----A literal to identify a notebook document in the client. ---- ----@since 3.17.0 ----@class lsp.NotebookDocumentIdentifier ----The notebook document's uri. ----@field uri lsp.URI - ----Provides information about the context in which an inline completion was requested. ---- ----@since 3.18.0 ----@class lsp.InlineCompletionContext ----Describes how the inline completion was triggered. ----@field triggerKind lsp.InlineCompletionTriggerKind ----Provides information about the currently selected item in the autocomplete widget if it is visible. ----@field selectedCompletionInfo? lsp.SelectedCompletionInfo - ----Inline completion options used during static registration. ---- ----@since 3.18.0 ----@class lsp.InlineCompletionOptions - ----General parameters to to register for an notification or to register a provider. ----@class lsp.Registration ----The id used to register the request. The id can be used to deregister ----the request again. ----@field id string ----The method / capability to register for. ----@field method string ----Options necessary for the registration. ----@field registerOptions? lsp.LSPAny - ----General parameters to unregister a request or notification. ----@class lsp.Unregistration ----The id used to unregister the request or notification. Usually an id ----provided during the register request. ----@field id string ----The method to unregister for. ----@field method string - ----The initialize parameters ----@class lsp._InitializeParams ----The process Id of the parent process that started ----the server. ---- ----Is `null` if the process has not been started by another process. ----If the parent process is not alive then the server should exit. ----@field processId integer|lsp.null ----Information about the client ---- ----@since 3.15.0 ----@field clientInfo? anonym11 ----The locale the client is currently showing the user interface ----in. This must not necessarily be the locale of the operating ----system. ---- ----Uses IETF language tags as the value's syntax ----(See https://en.wikipedia.org/wiki/IETF_language_tag) ---- ----@since 3.16.0 ----@field locale? string ----The rootPath of the workspace. Is null ----if no folder is open. ---- ----@deprecated in favour of rootUri. ----@field rootPath? string|lsp.null ----The rootUri of the workspace. Is null if no ----folder is open. If both `rootPath` and `rootUri` are set ----`rootUri` wins. ---- ----@deprecated in favour of workspaceFolders. ----@field rootUri lsp.DocumentUri|lsp.null ----The capabilities provided by the client (editor or tool) ----@field capabilities lsp.ClientCapabilities ----User provided initialization options. ----@field initializationOptions? lsp.LSPAny ----The initial trace setting. If omitted trace is disabled ('off'). ----@field trace? lsp.TraceValues - ----@class lsp.WorkspaceFoldersInitializeParams ----The workspace folders configured in the client when the server starts. ---- ----This property is only available if the client supports workspace folders. ----It can be `null` if the client supports workspace folders but none are ----configured. ---- ----@since 3.6.0 ----@field workspaceFolders? lsp.WorkspaceFolder[]|lsp.null - ----Defines the capabilities provided by a language ----server. ----@class lsp.ServerCapabilities ----The position encoding the server picked from the encodings offered ----by the client via the client capability `general.positionEncodings`. ---- ----If the client didn't provide any position encodings the only valid ----value that a server can return is 'utf-16'. ---- ----If omitted it defaults to 'utf-16'. ---- ----@since 3.17.0 ----@field positionEncoding? lsp.PositionEncodingKind ----Defines how text documents are synced. Is either a detailed structure ----defining each notification or for backwards compatibility the ----TextDocumentSyncKind number. ----@field textDocumentSync? lsp.TextDocumentSyncOptions|lsp.TextDocumentSyncKind ----Defines how notebook documents are synced. ---- ----@since 3.17.0 ----@field notebookDocumentSync? lsp.NotebookDocumentSyncOptions|lsp.NotebookDocumentSyncRegistrationOptions ----The server provides completion support. ----@field completionProvider? lsp.CompletionOptions ----The server provides hover support. ----@field hoverProvider? boolean|lsp.HoverOptions ----The server provides signature help support. ----@field signatureHelpProvider? lsp.SignatureHelpOptions ----The server provides Goto Declaration support. ----@field declarationProvider? boolean|lsp.DeclarationOptions|lsp.DeclarationRegistrationOptions ----The server provides goto definition support. ----@field definitionProvider? boolean|lsp.DefinitionOptions ----The server provides Goto Type Definition support. ----@field typeDefinitionProvider? boolean|lsp.TypeDefinitionOptions|lsp.TypeDefinitionRegistrationOptions ----The server provides Goto Implementation support. ----@field implementationProvider? boolean|lsp.ImplementationOptions|lsp.ImplementationRegistrationOptions ----The server provides find references support. ----@field referencesProvider? boolean|lsp.ReferenceOptions ----The server provides document highlight support. ----@field documentHighlightProvider? boolean|lsp.DocumentHighlightOptions ----The server provides document symbol support. ----@field documentSymbolProvider? boolean|lsp.DocumentSymbolOptions ----The server provides code actions. CodeActionOptions may only be ----specified if the client states that it supports ----`codeActionLiteralSupport` in its initial `initialize` request. ----@field codeActionProvider? boolean|lsp.CodeActionOptions ----The server provides code lens. ----@field codeLensProvider? lsp.CodeLensOptions ----The server provides document link support. ----@field documentLinkProvider? lsp.DocumentLinkOptions ----The server provides color provider support. ----@field colorProvider? boolean|lsp.DocumentColorOptions|lsp.DocumentColorRegistrationOptions ----The server provides workspace symbol support. ----@field workspaceSymbolProvider? boolean|lsp.WorkspaceSymbolOptions ----The server provides document formatting. ----@field documentFormattingProvider? boolean|lsp.DocumentFormattingOptions ----The server provides document range formatting. ----@field documentRangeFormattingProvider? boolean|lsp.DocumentRangeFormattingOptions ----The server provides document formatting on typing. ----@field documentOnTypeFormattingProvider? lsp.DocumentOnTypeFormattingOptions ----The server provides rename support. RenameOptions may only be ----specified if the client states that it supports ----`prepareSupport` in its initial `initialize` request. ----@field renameProvider? boolean|lsp.RenameOptions ----The server provides folding provider support. ----@field foldingRangeProvider? boolean|lsp.FoldingRangeOptions|lsp.FoldingRangeRegistrationOptions ----The server provides selection range support. ----@field selectionRangeProvider? boolean|lsp.SelectionRangeOptions|lsp.SelectionRangeRegistrationOptions ----The server provides execute command support. ----@field executeCommandProvider? lsp.ExecuteCommandOptions ----The server provides call hierarchy support. ---- ----@since 3.16.0 ----@field callHierarchyProvider? boolean|lsp.CallHierarchyOptions|lsp.CallHierarchyRegistrationOptions ----The server provides linked editing range support. ---- ----@since 3.16.0 ----@field linkedEditingRangeProvider? boolean|lsp.LinkedEditingRangeOptions|lsp.LinkedEditingRangeRegistrationOptions ----The server provides semantic tokens support. ---- ----@since 3.16.0 ----@field semanticTokensProvider? lsp.SemanticTokensOptions|lsp.SemanticTokensRegistrationOptions ----The server provides moniker support. ---- ----@since 3.16.0 ----@field monikerProvider? boolean|lsp.MonikerOptions|lsp.MonikerRegistrationOptions ----The server provides type hierarchy support. ---- ----@since 3.17.0 ----@field typeHierarchyProvider? boolean|lsp.TypeHierarchyOptions|lsp.TypeHierarchyRegistrationOptions ----The server provides inline values. ---- ----@since 3.17.0 ----@field inlineValueProvider? boolean|lsp.InlineValueOptions|lsp.InlineValueRegistrationOptions ----The server provides inlay hints. ---- ----@since 3.17.0 ----@field inlayHintProvider? boolean|lsp.InlayHintOptions|lsp.InlayHintRegistrationOptions ----The server has support for pull model diagnostics. ---- ----@since 3.17.0 ----@field diagnosticProvider? lsp.DiagnosticOptions|lsp.DiagnosticRegistrationOptions ----Inline completion options used during static registration. ---- ----@since 3.18.0 ----@field inlineCompletionProvider? boolean|lsp.InlineCompletionOptions ----Workspace specific server capabilities. ----@field workspace? anonym12 ----Experimental server capabilities. ----@field experimental? lsp.LSPAny - ----A text document identifier to denote a specific version of a text document. ----@class lsp.VersionedTextDocumentIdentifier: lsp.TextDocumentIdentifier ----The version number of this document. ----@field version integer - ----Save options. ----@class lsp.SaveOptions ----The client is supposed to include the content on save. ----@field includeText? boolean - ----An event describing a file change. ----@class lsp.FileEvent ----The file's uri. ----@field uri lsp.DocumentUri ----The change type. ----@field type lsp.FileChangeType - ----@class lsp.FileSystemWatcher ----The glob pattern to watch. See {@link GlobPattern glob pattern} for more detail. ---- ----@since 3.17.0 support for relative patterns. ----@field globPattern lsp.GlobPattern ----The kind of events of interest. If omitted it defaults ----to WatchKind.Create | WatchKind.Change | WatchKind.Delete ----which is 7. ----@field kind? lsp.WatchKind - ----Represents a diagnostic, such as a compiler error or warning. Diagnostic objects ----are only valid in the scope of a resource. ----@class lsp.Diagnostic ----The range at which the message applies ----@field range lsp.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. ----@field severity? lsp.DiagnosticSeverity ----The diagnostic's code, which usually appear in the user interface. ----@field code? integer|string ----An optional property to describe the error code. ----Requires the code field (above) to be present/not null. ---- ----@since 3.16.0 ----@field codeDescription? lsp.CodeDescription ----A human-readable string describing the source of this ----diagnostic, e.g. 'typescript' or 'super lint'. It usually ----appears in the user interface. ----@field source? string ----The diagnostic's message. It usually appears in the user interface ----@field message string ----Additional metadata about the diagnostic. ---- ----@since 3.15.0 ----@field tags? lsp.DiagnosticTag[] ----An array of related diagnostic information, e.g. when symbol-names within ----a scope collide all definitions can be marked via this property. ----@field relatedInformation? lsp.DiagnosticRelatedInformation[] ----A data entry field that is preserved between a `textDocument/publishDiagnostics` ----notification and `textDocument/codeAction` request. ---- ----@since 3.16.0 ----@field data? lsp.LSPAny - ----Contains additional information about the context in which a completion request is triggered. ----@class lsp.CompletionContext ----How the completion was triggered. ----@field triggerKind lsp.CompletionTriggerKind ----The trigger character (a single character) that has trigger code complete. ----Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter` ----@field triggerCharacter? string - ----Additional details for a completion item label. ---- ----@since 3.17.0 ----@class lsp.CompletionItemLabelDetails ----An optional string which is rendered less prominently directly after {@link CompletionItem.label label}, ----without any spacing. Should be used for function signatures and type annotations. ----@field detail? string ----An optional string which is rendered less prominently after {@link CompletionItem.detail}. Should be used ----for fully qualified names and file paths. ----@field description? string - ----A special text edit to provide an insert and a replace operation. ---- ----@since 3.16.0 ----@class lsp.InsertReplaceEdit ----The string to be inserted. ----@field newText string ----The range if the insert is requested ----@field insert lsp.Range ----The range if the replace is requested. ----@field replace lsp.Range - ----Completion options. ----@class lsp.CompletionOptions ----Most tools trigger completion request automatically without explicitly requesting ----it using a keyboard shortcut (e.g. Ctrl+Space). Typically they do so when the user ----starts to type an identifier. For example if the user types `c` in a JavaScript file ----code complete will automatically pop up present `console` besides others as a ----completion item. Characters that make up identifiers don't need to be listed here. ---- ----If code complete should automatically be trigger on characters not being valid inside ----an identifier (for example `.` in JavaScript) list them in `triggerCharacters`. ----@field triggerCharacters? string[] ----The list of all possible characters that commit a completion. This field can be used ----if clients don't support individual commit characters per completion item. See ----`ClientCapabilities.textDocument.completion.completionItem.commitCharactersSupport` ---- ----If a server provides both `allCommitCharacters` and commit characters on an individual ----completion item the ones on the completion item win. ---- ----@since 3.2.0 ----@field allCommitCharacters? string[] ----The server provides support to resolve additional ----information for a completion item. ----@field resolveProvider? boolean ----The server supports the following `CompletionItem` specific ----capabilities. ---- ----@since 3.17.0 ----@field completionItem? anonym13 - ----Hover options. ----@class lsp.HoverOptions - ----Additional information about the context in which a signature help request was triggered. ---- ----@since 3.15.0 ----@class lsp.SignatureHelpContext ----Action that caused signature help to be triggered. ----@field triggerKind lsp.SignatureHelpTriggerKind ----Character that caused signature help to be triggered. ---- ----This is undefined when `triggerKind !== SignatureHelpTriggerKind.TriggerCharacter` ----@field triggerCharacter? string ----`true` if signature help was already showing when it was triggered. ---- ----Retriggers occurs when the signature help is already active and can be caused by actions such as ----typing a trigger character, a cursor move, or document content changes. ----@field isRetrigger boolean ----The currently active `SignatureHelp`. ---- ----The `activeSignatureHelp` has its `SignatureHelp.activeSignature` field updated based on ----the user navigating through available signatures. ----@field activeSignatureHelp? lsp.SignatureHelp - ----Represents the signature of something callable. A signature ----can have a label, like a function-name, a doc-comment, and ----a set of parameters. ----@class lsp.SignatureInformation ----The label of this signature. Will be shown in ----the UI. ----@field label string ----The human-readable doc-comment of this signature. Will be shown ----in the UI but can be omitted. ----@field documentation? string|lsp.MarkupContent ----The parameters of this signature. ----@field parameters? lsp.ParameterInformation[] ----The index of the active parameter. ---- ----If provided, this is used in place of `SignatureHelp.activeParameter`. ---- ----@since 3.16.0 ----@field activeParameter? uinteger - ----Server Capabilities for a {@link SignatureHelpRequest}. ----@class lsp.SignatureHelpOptions ----List of characters that trigger signature help automatically. ----@field triggerCharacters? string[] ----List of characters that re-trigger signature help. ---- ----These trigger characters are only active when signature help is already showing. All trigger characters ----are also counted as re-trigger characters. ---- ----@since 3.15.0 ----@field retriggerCharacters? string[] - ----Server Capabilities for a {@link DefinitionRequest}. ----@class lsp.DefinitionOptions - ----Value-object that contains additional information when ----requesting references. ----@class lsp.ReferenceContext ----Include the declaration of the current symbol. ----@field includeDeclaration boolean - ----Reference options. ----@class lsp.ReferenceOptions - ----Provider options for a {@link DocumentHighlightRequest}. ----@class lsp.DocumentHighlightOptions - ----A base for all symbol information. ----@class lsp.BaseSymbolInformation ----The name of this symbol. ----@field name string ----The kind of this symbol. ----@field kind lsp.SymbolKind ----Tags for this symbol. ---- ----@since 3.16.0 ----@field tags? lsp.SymbolTag[] ----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. ----@field containerName? string - ----Provider options for a {@link DocumentSymbolRequest}. ----@class lsp.DocumentSymbolOptions ----A human-readable string that is shown when multiple outlines trees ----are shown for the same document. ---- ----@since 3.16.0 ----@field label? string - ----Contains additional diagnostic information about the context in which ----a {@link CodeActionProvider.provideCodeActions code action} is run. ----@class lsp.CodeActionContext ----An array of diagnostics known on the client side overlapping the range provided to the ----`textDocument/codeAction` request. They are provided 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. ----@field diagnostics lsp.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. ----@field only? lsp.CodeActionKind[] ----The reason why code actions were requested. ---- ----@since 3.17.0 ----@field triggerKind? lsp.CodeActionTriggerKind - ----Provider options for a {@link CodeActionRequest}. ----@class lsp.CodeActionOptions ----CodeActionKinds that this server may return. ---- ----The list of kinds may be generic, such as `CodeActionKind.Refactor`, or the server ----may list out every specific kind they provide. ----@field codeActionKinds? lsp.CodeActionKind[] ----The server provides support to resolve additional ----information for a code action. ---- ----@since 3.16.0 ----@field resolveProvider? boolean - ----Server capabilities for a {@link WorkspaceSymbolRequest}. ----@class lsp.WorkspaceSymbolOptions ----The server provides support to resolve additional ----information for a workspace symbol. ---- ----@since 3.17.0 ----@field resolveProvider? boolean - ----Code Lens provider options of a {@link CodeLensRequest}. ----@class lsp.CodeLensOptions ----Code lens has a resolve provider as well. ----@field resolveProvider? boolean - ----Provider options for a {@link DocumentLinkRequest}. ----@class lsp.DocumentLinkOptions ----Document links have a resolve provider as well. ----@field resolveProvider? boolean - ----Value-object describing what options formatting should use. ----@class lsp.FormattingOptions ----Size of a tab in spaces. ----@field tabSize uinteger ----Prefer spaces over tabs. ----@field insertSpaces boolean ----Trim trailing whitespace on a line. ---- ----@since 3.15.0 ----@field trimTrailingWhitespace? boolean ----Insert a newline character at the end of the file if one does not exist. ---- ----@since 3.15.0 ----@field insertFinalNewline? boolean ----Trim all newlines after the final newline at the end of the file. ---- ----@since 3.15.0 ----@field trimFinalNewlines? boolean - ----Provider options for a {@link DocumentFormattingRequest}. ----@class lsp.DocumentFormattingOptions - ----Provider options for a {@link DocumentRangeFormattingRequest}. ----@class lsp.DocumentRangeFormattingOptions ----Whether the server supports formatting multiple ranges at once. ---- ----@since 3.18.0 ----@proposed ----@field rangesSupport? boolean - ----Provider options for a {@link DocumentOnTypeFormattingRequest}. ----@class lsp.DocumentOnTypeFormattingOptions ----A character on which formatting should be triggered, like `{`. ----@field firstTriggerCharacter string ----More trigger characters. ----@field moreTriggerCharacter? string[] - ----Provider options for a {@link RenameRequest}. ----@class lsp.RenameOptions ----Renames should be checked and tested before being executed. ---- ----@since version 3.12.0 ----@field prepareProvider? boolean - ----The server capabilities of a {@link ExecuteCommandRequest}. ----@class lsp.ExecuteCommandOptions ----The commands to be executed on the server ----@field commands string[] - ----@since 3.16.0 ----@class lsp.SemanticTokensLegend ----The token types a server uses. ----@field tokenTypes string[] ----The token modifiers a server uses. ----@field tokenModifiers string[] - ----A text document identifier to optionally denote a specific version of a text document. ----@class lsp.OptionalVersionedTextDocumentIdentifier: lsp.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 specified with document content ownership). ----@field version integer|lsp.null - ----A special text edit with an additional change annotation. ---- ----@since 3.16.0. ----@class lsp.AnnotatedTextEdit: lsp.TextEdit ----The actual identifier of the change annotation ----@field annotationId lsp.ChangeAnnotationIdentifier - ----A generic resource operation. ----@class lsp.ResourceOperation ----The resource operation kind. ----@field kind string ----An optional annotation identifier describing the operation. ---- ----@since 3.16.0 ----@field annotationId? lsp.ChangeAnnotationIdentifier - ----Options to create a file. ----@class lsp.CreateFileOptions ----Overwrite existing file. Overwrite wins over `ignoreIfExists` ----@field overwrite? boolean ----Ignore if exists. ----@field ignoreIfExists? boolean - ----Rename file options ----@class lsp.RenameFileOptions ----Overwrite target if existing. Overwrite wins over `ignoreIfExists` ----@field overwrite? boolean ----Ignores if target exists. ----@field ignoreIfExists? boolean - ----Delete file options ----@class lsp.DeleteFileOptions ----Delete the content recursively if a folder is denoted. ----@field recursive? boolean ----Ignore the operation if the file doesn't exist. ----@field ignoreIfNotExists? boolean - ----A pattern to describe in which file operation requests or notifications ----the server is interested in receiving. ---- ----@since 3.16.0 ----@class lsp.FileOperationPattern ----The glob pattern to match. Glob patterns can have the following syntax: ----- `*` to match one or more characters in a path segment ----- `?` to match on one character in a path segment ----- `**` to match any number of path segments, including none ----- `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files) ----- `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …) ----- `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`) ----@field glob string ----Whether to match files or folders with this pattern. ---- ----Matches both if undefined. ----@field matches? lsp.FileOperationPatternKind ----Additional options used during matching. ----@field options? lsp.FileOperationPatternOptions - ----A full document diagnostic report for a workspace diagnostic result. ---- ----@since 3.17.0 ----@class lsp.WorkspaceFullDocumentDiagnosticReport: lsp.FullDocumentDiagnosticReport ----The URI for which diagnostic information is reported. ----@field uri lsp.DocumentUri ----The version number for which the diagnostics are reported. ----If the document is not marked as open `null` can be provided. ----@field version integer|lsp.null - ----An unchanged document diagnostic report for a workspace diagnostic result. ---- ----@since 3.17.0 ----@class lsp.WorkspaceUnchangedDocumentDiagnosticReport: lsp.UnchangedDocumentDiagnosticReport ----The URI for which diagnostic information is reported. ----@field uri lsp.DocumentUri ----The version number for which the diagnostics are reported. ----If the document is not marked as open `null` can be provided. ----@field version integer|lsp.null - ----A notebook cell. ---- ----A cell's document URI must be unique across ALL notebook ----cells and can therefore be used to uniquely identify a ----notebook cell or the cell's text document. ---- ----@since 3.17.0 ----@class lsp.NotebookCell ----The cell's kind ----@field kind lsp.NotebookCellKind ----The URI of the cell's text document ----content. ----@field document lsp.DocumentUri ----Additional metadata stored with the cell. ---- ----Note: should always be an object literal (e.g. LSPObject) ----@field metadata? lsp.LSPObject ----Additional execution summary information ----if supported by the client. ----@field executionSummary? lsp.ExecutionSummary - ----A change describing how to move a `NotebookCell` ----array from state S to S'. ---- ----@since 3.17.0 ----@class lsp.NotebookCellArrayChange ----The start oftest of the cell that changed. ----@field start uinteger ----The deleted cells ----@field deleteCount uinteger ----The new cells, if any ----@field cells? lsp.NotebookCell[] - ----Describes the currently selected completion item. ---- ----@since 3.18.0 ----@class lsp.SelectedCompletionInfo ----The range that will be replaced if this completion item is accepted. ----@field range lsp.Range ----The text the range will be replaced with if this completion is accepted. ----@field text string - ----Defines the capabilities provided by the client. ----@class lsp.ClientCapabilities ----Workspace specific client capabilities. ----@field workspace? lsp.WorkspaceClientCapabilities ----Text document specific client capabilities. ----@field textDocument? lsp.TextDocumentClientCapabilities ----Capabilities specific to the notebook document support. ---- ----@since 3.17.0 ----@field notebookDocument? lsp.NotebookDocumentClientCapabilities ----Window specific client capabilities. ----@field window? lsp.WindowClientCapabilities ----General client capabilities. ---- ----@since 3.16.0 ----@field general? lsp.GeneralClientCapabilities ----Experimental client capabilities. ----@field experimental? lsp.LSPAny - ----@class lsp.TextDocumentSyncOptions ----Open and close notifications are sent to the server. If omitted open close notification should not ----be sent. ----@field openClose? boolean ----Change notifications are sent to the server. See TextDocumentSyncKind.None, TextDocumentSyncKind.Full ----and TextDocumentSyncKind.Incremental. If omitted it defaults to TextDocumentSyncKind.None. ----@field change? lsp.TextDocumentSyncKind ----If present will save notifications are sent to the server. If omitted the notification should not be ----sent. ----@field willSave? boolean ----If present will save wait until requests are sent to the server. If omitted the request should not be ----sent. ----@field willSaveWaitUntil? boolean ----If present save notifications are sent to the server. If omitted the notification should not be ----sent. ----@field save? boolean|lsp.SaveOptions - ----Options specific to a notebook plus its cells ----to be synced to the server. ---- ----If a selector provides a notebook document ----filter but no cell selector all cells of a ----matching notebook document will be synced. ---- ----If a selector provides no notebook document ----filter but only a cell selector all notebook ----document that contain at least one matching ----cell will be synced. ---- ----@since 3.17.0 ----@class lsp.NotebookDocumentSyncOptions ----The notebooks to be synced ----@field notebookSelector anonym15|anonym17[] ----Whether save notification should be forwarded to ----the server. Will only be honored if mode === `notebook`. ----@field save? boolean - ----Registration options specific to a notebook. ---- ----@since 3.17.0 ----@class lsp.NotebookDocumentSyncRegistrationOptions: lsp.NotebookDocumentSyncOptions, lsp.StaticRegistrationOptions - ----@class lsp.WorkspaceFoldersServerCapabilities ----The server has support for workspace folders ----@field supported? boolean ----Whether the server wants to receive workspace folder ----change notifications. ---- ----If a string is provided the string is treated as an ID ----under which the notification is registered on the client ----side. The ID can be used to unregister for these events ----using the `client/unregisterCapability` request. ----@field changeNotifications? string|boolean - ----Options for notifications/requests for user operations on files. ---- ----@since 3.16.0 ----@class lsp.FileOperationOptions ----The server is interested in receiving didCreateFiles notifications. ----@field didCreate? lsp.FileOperationRegistrationOptions ----The server is interested in receiving willCreateFiles requests. ----@field willCreate? lsp.FileOperationRegistrationOptions ----The server is interested in receiving didRenameFiles notifications. ----@field didRename? lsp.FileOperationRegistrationOptions ----The server is interested in receiving willRenameFiles requests. ----@field willRename? lsp.FileOperationRegistrationOptions ----The server is interested in receiving didDeleteFiles file notifications. ----@field didDelete? lsp.FileOperationRegistrationOptions ----The server is interested in receiving willDeleteFiles file requests. ----@field willDelete? lsp.FileOperationRegistrationOptions - ----Structure to capture a description for an error code. ---- ----@since 3.16.0 ----@class lsp.CodeDescription ----An URI to open with more information about the diagnostic error. ----@field href lsp.URI - ----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. ----@class lsp.DiagnosticRelatedInformation ----The location of this related diagnostic information. ----@field location lsp.Location ----The message of this related diagnostic information. ----@field message string - ----Represents a parameter of a callable-signature. A parameter can ----have a label and a doc-comment. ----@class lsp.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`. ----@field label string|{ [1]: uinteger, [2]: uinteger } ----The human-readable doc-comment of this parameter. Will be shown ----in the UI but can be omitted. ----@field documentation? string|lsp.MarkupContent - ----A notebook cell text document filter denotes a cell text ----document by different properties. ---- ----@since 3.17.0 ----@class lsp.NotebookCellTextDocumentFilter ----A filter that matches against the notebook ----containing the notebook cell. If a string ----value is provided it matches against the ----notebook type. '*' matches every notebook. ----@field notebook string|lsp.NotebookDocumentFilter ----A language id like `python`. ---- ----Will be matched against the language id of the ----notebook cell document. '*' matches every language. ----@field language? string - ----Matching options for the file operation pattern. ---- ----@since 3.16.0 ----@class lsp.FileOperationPatternOptions ----The pattern should be matched ignoring casing. ----@field ignoreCase? boolean - ----@class lsp.ExecutionSummary ----A strict monotonically increasing value ----indicating the execution order of a cell ----inside a notebook. ----@field executionOrder uinteger ----Whether the execution was successful or ----not if known by the client. ----@field success? boolean - ----Workspace specific client capabilities. ----@class lsp.WorkspaceClientCapabilities ----The client supports applying batch edits ----to the workspace by supporting the request ----'workspace/applyEdit' ----@field applyEdit? boolean ----Capabilities specific to `WorkspaceEdit`s. ----@field workspaceEdit? lsp.WorkspaceEditClientCapabilities ----Capabilities specific to the `workspace/didChangeConfiguration` notification. ----@field didChangeConfiguration? lsp.DidChangeConfigurationClientCapabilities ----Capabilities specific to the `workspace/didChangeWatchedFiles` notification. ----@field didChangeWatchedFiles? lsp.DidChangeWatchedFilesClientCapabilities ----Capabilities specific to the `workspace/symbol` request. ----@field symbol? lsp.WorkspaceSymbolClientCapabilities ----Capabilities specific to the `workspace/executeCommand` request. ----@field executeCommand? lsp.ExecuteCommandClientCapabilities ----The client has support for workspace folders. ---- ----@since 3.6.0 ----@field workspaceFolders? boolean ----The client supports `workspace/configuration` requests. ---- ----@since 3.6.0 ----@field configuration? boolean ----Capabilities specific to the semantic token requests scoped to the ----workspace. ---- ----@since 3.16.0. ----@field semanticTokens? lsp.SemanticTokensWorkspaceClientCapabilities ----Capabilities specific to the code lens requests scoped to the ----workspace. ---- ----@since 3.16.0. ----@field codeLens? lsp.CodeLensWorkspaceClientCapabilities ----The client has support for file notifications/requests for user operations on files. ---- ----Since 3.16.0 ----@field fileOperations? lsp.FileOperationClientCapabilities ----Capabilities specific to the inline values requests scoped to the ----workspace. ---- ----@since 3.17.0. ----@field inlineValue? lsp.InlineValueWorkspaceClientCapabilities ----Capabilities specific to the inlay hint requests scoped to the ----workspace. ---- ----@since 3.17.0. ----@field inlayHint? lsp.InlayHintWorkspaceClientCapabilities ----Capabilities specific to the diagnostic requests scoped to the ----workspace. ---- ----@since 3.17.0. ----@field diagnostics? lsp.DiagnosticWorkspaceClientCapabilities - ----Text document specific client capabilities. ----@class lsp.TextDocumentClientCapabilities ----Defines which synchronization capabilities the client supports. ----@field synchronization? lsp.TextDocumentSyncClientCapabilities ----Capabilities specific to the `textDocument/completion` request. ----@field completion? lsp.CompletionClientCapabilities ----Capabilities specific to the `textDocument/hover` request. ----@field hover? lsp.HoverClientCapabilities ----Capabilities specific to the `textDocument/signatureHelp` request. ----@field signatureHelp? lsp.SignatureHelpClientCapabilities ----Capabilities specific to the `textDocument/declaration` request. ---- ----@since 3.14.0 ----@field declaration? lsp.DeclarationClientCapabilities ----Capabilities specific to the `textDocument/definition` request. ----@field definition? lsp.DefinitionClientCapabilities ----Capabilities specific to the `textDocument/typeDefinition` request. ---- ----@since 3.6.0 ----@field typeDefinition? lsp.TypeDefinitionClientCapabilities ----Capabilities specific to the `textDocument/implementation` request. ---- ----@since 3.6.0 ----@field implementation? lsp.ImplementationClientCapabilities ----Capabilities specific to the `textDocument/references` request. ----@field references? lsp.ReferenceClientCapabilities ----Capabilities specific to the `textDocument/documentHighlight` request. ----@field documentHighlight? lsp.DocumentHighlightClientCapabilities ----Capabilities specific to the `textDocument/documentSymbol` request. ----@field documentSymbol? lsp.DocumentSymbolClientCapabilities ----Capabilities specific to the `textDocument/codeAction` request. ----@field codeAction? lsp.CodeActionClientCapabilities ----Capabilities specific to the `textDocument/codeLens` request. ----@field codeLens? lsp.CodeLensClientCapabilities ----Capabilities specific to the `textDocument/documentLink` request. ----@field documentLink? lsp.DocumentLinkClientCapabilities ----Capabilities specific to the `textDocument/documentColor` and the ----`textDocument/colorPresentation` request. ---- ----@since 3.6.0 ----@field colorProvider? lsp.DocumentColorClientCapabilities ----Capabilities specific to the `textDocument/formatting` request. ----@field formatting? lsp.DocumentFormattingClientCapabilities ----Capabilities specific to the `textDocument/rangeFormatting` request. ----@field rangeFormatting? lsp.DocumentRangeFormattingClientCapabilities ----Capabilities specific to the `textDocument/onTypeFormatting` request. ----@field onTypeFormatting? lsp.DocumentOnTypeFormattingClientCapabilities ----Capabilities specific to the `textDocument/rename` request. ----@field rename? lsp.RenameClientCapabilities ----Capabilities specific to the `textDocument/foldingRange` request. ---- ----@since 3.10.0 ----@field foldingRange? lsp.FoldingRangeClientCapabilities ----Capabilities specific to the `textDocument/selectionRange` request. ---- ----@since 3.15.0 ----@field selectionRange? lsp.SelectionRangeClientCapabilities ----Capabilities specific to the `textDocument/publishDiagnostics` notification. ----@field publishDiagnostics? lsp.PublishDiagnosticsClientCapabilities ----Capabilities specific to the various call hierarchy requests. ---- ----@since 3.16.0 ----@field callHierarchy? lsp.CallHierarchyClientCapabilities ----Capabilities specific to the various semantic token request. ---- ----@since 3.16.0 ----@field semanticTokens? lsp.SemanticTokensClientCapabilities ----Capabilities specific to the `textDocument/linkedEditingRange` request. ---- ----@since 3.16.0 ----@field linkedEditingRange? lsp.LinkedEditingRangeClientCapabilities ----Client capabilities specific to the `textDocument/moniker` request. ---- ----@since 3.16.0 ----@field moniker? lsp.MonikerClientCapabilities ----Capabilities specific to the various type hierarchy requests. ---- ----@since 3.17.0 ----@field typeHierarchy? lsp.TypeHierarchyClientCapabilities ----Capabilities specific to the `textDocument/inlineValue` request. ---- ----@since 3.17.0 ----@field inlineValue? lsp.InlineValueClientCapabilities ----Capabilities specific to the `textDocument/inlayHint` request. ---- ----@since 3.17.0 ----@field inlayHint? lsp.InlayHintClientCapabilities ----Capabilities specific to the diagnostic pull model. ---- ----@since 3.17.0 ----@field diagnostic? lsp.DiagnosticClientCapabilities ----Client capabilities specific to inline completions. ---- ----@since 3.18.0 ----@field inlineCompletion? lsp.InlineCompletionClientCapabilities - ----Capabilities specific to the notebook document support. ---- ----@since 3.17.0 ----@class lsp.NotebookDocumentClientCapabilities ----Capabilities specific to notebook document synchronization ---- ----@since 3.17.0 ----@field synchronization lsp.NotebookDocumentSyncClientCapabilities - ----@class lsp.WindowClientCapabilities ----It indicates whether the client supports server initiated ----progress using the `window/workDoneProgress/create` request. ---- ----The capability also controls Whether client supports handling ----of progress notifications. If set servers are allowed to report a ----`workDoneProgress` property in the request specific server ----capabilities. ---- ----@since 3.15.0 ----@field workDoneProgress? boolean ----Capabilities specific to the showMessage request. ---- ----@since 3.16.0 ----@field showMessage? lsp.ShowMessageRequestClientCapabilities ----Capabilities specific to the showDocument request. ---- ----@since 3.16.0 ----@field showDocument? lsp.ShowDocumentClientCapabilities - ----General client capabilities. ---- ----@since 3.16.0 ----@class lsp.GeneralClientCapabilities ----Client capability that signals how the client ----handles stale requests (e.g. a request ----for which the client will not process the response ----anymore since the information is outdated). ---- ----@since 3.17.0 ----@field staleRequestSupport? anonym18 ----Client capabilities specific to regular expressions. ---- ----@since 3.16.0 ----@field regularExpressions? lsp.RegularExpressionsClientCapabilities ----Client capabilities specific to the client's markdown parser. ---- ----@since 3.16.0 ----@field markdown? lsp.MarkdownClientCapabilities ----The position encodings supported by the client. Client and server ----have to agree on the same position encoding to ensure that offsets ----(e.g. character position in a line) are interpreted the same on both ----sides. ---- ----To keep the protocol backwards compatible the following applies: if ----the value 'utf-16' is missing from the array of position encodings ----servers can assume that the client supports UTF-16. UTF-16 is ----therefore a mandatory encoding. ---- ----If omitted it defaults to ['utf-16']. ---- ----Implementation considerations: since the conversion from one encoding ----into another requires the content of the file / line the conversion ----is best done where the file is read which is usually on the server ----side. ---- ----@since 3.17.0 ----@field positionEncodings? lsp.PositionEncodingKind[] - ----A relative pattern is a helper to construct glob patterns that are matched ----relatively to a base URI. The common value for a `baseUri` is a workspace ----folder root, but it can be another absolute URI as well. ---- ----@since 3.17.0 ----@class lsp.RelativePattern ----A workspace folder or a base URI to which this pattern will be matched ----against relatively. ----@field baseUri lsp.WorkspaceFolder|lsp.URI ----The actual glob pattern; ----@field pattern lsp.Pattern - ----@class lsp.WorkspaceEditClientCapabilities ----The client supports versioned document changes in `WorkspaceEdit`s ----@field documentChanges? boolean ----The resource operations the client supports. Clients should at least ----support 'create', 'rename' and 'delete' files and folders. ---- ----@since 3.13.0 ----@field resourceOperations? lsp.ResourceOperationKind[] ----The failure handling strategy of a client if applying the workspace edit ----fails. ---- ----@since 3.13.0 ----@field failureHandling? lsp.FailureHandlingKind ----Whether the client normalizes line endings to the client specific ----setting. ----If set to `true` the client will normalize line ending characters ----in a workspace edit to the client-specified new line ----character. ---- ----@since 3.16.0 ----@field normalizesLineEndings? boolean ----Whether the client in general supports change annotations on text edits, ----create file, rename file and delete file changes. ---- ----@since 3.16.0 ----@field changeAnnotationSupport? anonym19 - ----@class lsp.DidChangeConfigurationClientCapabilities ----Did change configuration notification supports dynamic registration. ----@field dynamicRegistration? boolean - ----@class lsp.DidChangeWatchedFilesClientCapabilities ----Did change watched files notification supports dynamic registration. Please note ----that the current protocol doesn't support static configuration for file changes ----from the server side. ----@field dynamicRegistration? boolean ----Whether the client has support for {@link RelativePattern relative pattern} ----or not. ---- ----@since 3.17.0 ----@field relativePatternSupport? boolean - ----Client capabilities for a {@link WorkspaceSymbolRequest}. ----@class lsp.WorkspaceSymbolClientCapabilities ----Symbol request supports dynamic registration. ----@field dynamicRegistration? boolean ----Specific capabilities for the `SymbolKind` in the `workspace/symbol` request. ----@field symbolKind? anonym20 ----The client supports tags on `SymbolInformation`. ----Clients supporting tags have to handle unknown tags gracefully. ---- ----@since 3.16.0 ----@field tagSupport? anonym21 ----The client support partial workspace symbols. The client will send the ----request `workspaceSymbol/resolve` to the server to resolve additional ----properties. ---- ----@since 3.17.0 ----@field resolveSupport? anonym22 - ----The client capabilities of a {@link ExecuteCommandRequest}. ----@class lsp.ExecuteCommandClientCapabilities ----Execute command supports dynamic registration. ----@field dynamicRegistration? boolean - ----@since 3.16.0 ----@class lsp.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 detects a project ----wide change that requires such a calculation. ----@field refreshSupport? boolean - ----@since 3.16.0 ----@class lsp.CodeLensWorkspaceClientCapabilities ----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 ----code lenses 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. ----@field refreshSupport? boolean - ----Capabilities relating to events from file operations by the user in the client. ---- ----These events do not come from the file system, they come from user operations ----like renaming a file in the UI. ---- ----@since 3.16.0 ----@class lsp.FileOperationClientCapabilities ----Whether the client supports dynamic registration for file requests/notifications. ----@field dynamicRegistration? boolean ----The client has support for sending didCreateFiles notifications. ----@field didCreate? boolean ----The client has support for sending willCreateFiles requests. ----@field willCreate? boolean ----The client has support for sending didRenameFiles notifications. ----@field didRename? boolean ----The client has support for sending willRenameFiles requests. ----@field willRename? boolean ----The client has support for sending didDeleteFiles notifications. ----@field didDelete? boolean ----The client has support for sending willDeleteFiles requests. ----@field willDelete? boolean - ----Client workspace capabilities specific to inline values. ---- ----@since 3.17.0 ----@class lsp.InlineValueWorkspaceClientCapabilities ----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 ----inline values currently shown. It should be used with absolute care and is ----useful for situation where a server for example detects a project wide ----change that requires such a calculation. ----@field refreshSupport? boolean - ----Client workspace capabilities specific to inlay hints. ---- ----@since 3.17.0 ----@class lsp.InlayHintWorkspaceClientCapabilities ----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 ----inlay hints currently shown. It should be used with absolute care and ----is useful for situation where a server for example detects a project wide ----change that requires such a calculation. ----@field refreshSupport? boolean - ----Workspace client capabilities specific to diagnostic pull requests. ---- ----@since 3.17.0 ----@class lsp.DiagnosticWorkspaceClientCapabilities ----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 ----pulled diagnostics currently shown. It should be used with absolute care and ----is useful for situation where a server for example detects a project wide ----change that requires such a calculation. ----@field refreshSupport? boolean - ----@class lsp.TextDocumentSyncClientCapabilities ----Whether text document synchronization supports dynamic registration. ----@field dynamicRegistration? boolean ----The client supports sending will save notifications. ----@field willSave? boolean ----The client supports sending a will save request and ----waits for a response providing text edits which will ----be applied to the document before it is saved. ----@field willSaveWaitUntil? boolean ----The client supports did save notifications. ----@field didSave? boolean - ----Completion client capabilities ----@class lsp.CompletionClientCapabilities ----Whether completion supports dynamic registration. ----@field dynamicRegistration? boolean ----The client supports the following `CompletionItem` specific ----capabilities. ----@field completionItem? anonym26 ----@field completionItemKind? anonym27 ----Defines how the client handles whitespace and indentation ----when accepting a completion item that uses multi line ----text in either `insertText` or `textEdit`. ---- ----@since 3.17.0 ----@field insertTextMode? lsp.InsertTextMode ----The client supports to send additional context information for a ----`textDocument/completion` request. ----@field contextSupport? boolean ----The client supports the following `CompletionList` specific ----capabilities. ---- ----@since 3.17.0 ----@field completionList? anonym28 - ----@class lsp.HoverClientCapabilities ----Whether hover supports dynamic registration. ----@field dynamicRegistration? boolean ----Client supports the following content formats for the content ----property. The order describes the preferred format of the client. ----@field contentFormat? lsp.MarkupKind[] - ----Client Capabilities for a {@link SignatureHelpRequest}. ----@class lsp.SignatureHelpClientCapabilities ----Whether signature help supports dynamic registration. ----@field dynamicRegistration? boolean ----The client supports the following `SignatureInformation` ----specific properties. ----@field signatureInformation? anonym30 ----The client supports to send additional context information for a ----`textDocument/signatureHelp` request. A client that opts into ----contextSupport will also support the `retriggerCharacters` on ----`SignatureHelpOptions`. ---- ----@since 3.15.0 ----@field contextSupport? boolean - ----@since 3.14.0 ----@class lsp.DeclarationClientCapabilities ----Whether declaration supports dynamic registration. If this is set to `true` ----the client supports the new `DeclarationRegistrationOptions` return value ----for the corresponding server capability as well. ----@field dynamicRegistration? boolean ----The client supports additional metadata in the form of declaration links. ----@field linkSupport? boolean - ----Client Capabilities for a {@link DefinitionRequest}. ----@class lsp.DefinitionClientCapabilities ----Whether definition supports dynamic registration. ----@field dynamicRegistration? boolean ----The client supports additional metadata in the form of definition links. ---- ----@since 3.14.0 ----@field linkSupport? boolean - ----Since 3.6.0 ----@class lsp.TypeDefinitionClientCapabilities ----Whether implementation supports dynamic registration. If this is set to `true` ----the client supports the new `TypeDefinitionRegistrationOptions` return value ----for the corresponding server capability as well. ----@field dynamicRegistration? boolean ----The client supports additional metadata in the form of definition links. ---- ----Since 3.14.0 ----@field linkSupport? boolean - ----@since 3.6.0 ----@class lsp.ImplementationClientCapabilities ----Whether implementation supports dynamic registration. If this is set to `true` ----the client supports the new `ImplementationRegistrationOptions` return value ----for the corresponding server capability as well. ----@field dynamicRegistration? boolean ----The client supports additional metadata in the form of definition links. ---- ----@since 3.14.0 ----@field linkSupport? boolean - ----Client Capabilities for a {@link ReferencesRequest}. ----@class lsp.ReferenceClientCapabilities ----Whether references supports dynamic registration. ----@field dynamicRegistration? boolean - ----Client Capabilities for a {@link DocumentHighlightRequest}. ----@class lsp.DocumentHighlightClientCapabilities ----Whether document highlight supports dynamic registration. ----@field dynamicRegistration? boolean - ----Client Capabilities for a {@link DocumentSymbolRequest}. ----@class lsp.DocumentSymbolClientCapabilities ----Whether document symbol supports dynamic registration. ----@field dynamicRegistration? boolean ----Specific capabilities for the `SymbolKind` in the ----`textDocument/documentSymbol` request. ----@field symbolKind? anonym31 ----The client supports hierarchical document symbols. ----@field hierarchicalDocumentSymbolSupport? boolean ----The client supports tags on `SymbolInformation`. Tags are supported on ----`DocumentSymbol` if `hierarchicalDocumentSymbolSupport` is set to true. ----Clients supporting tags have to handle unknown tags gracefully. ---- ----@since 3.16.0 ----@field tagSupport? anonym32 ----The client supports an additional label presented in the UI when ----registering a document symbol provider. ---- ----@since 3.16.0 ----@field labelSupport? boolean - ----The Client Capabilities of a {@link CodeActionRequest}. ----@class lsp.CodeActionClientCapabilities ----Whether code action supports dynamic registration. ----@field dynamicRegistration? boolean ----The client support code action literals of type `CodeAction` as a valid ----response of the `textDocument/codeAction` request. If the property is not ----set the request can only return `Command` literals. ---- ----@since 3.8.0 ----@field codeActionLiteralSupport? anonym34 ----Whether code action supports the `isPreferred` property. ---- ----@since 3.15.0 ----@field isPreferredSupport? boolean ----Whether code action supports the `disabled` property. ---- ----@since 3.16.0 ----@field disabledSupport? boolean ----Whether code action supports the `data` property which is ----preserved between a `textDocument/codeAction` and a ----`codeAction/resolve` request. ---- ----@since 3.16.0 ----@field dataSupport? boolean ----Whether the client supports resolving additional code action ----properties via a separate `codeAction/resolve` request. ---- ----@since 3.16.0 ----@field resolveSupport? anonym35 ----Whether the client honors the change annotations in ----text edits and resource operations returned via the ----`CodeAction#edit` property by for example presenting ----the workspace edit in the user interface and asking ----for confirmation. ---- ----@since 3.16.0 ----@field honorsChangeAnnotations? boolean - ----The client capabilities of a {@link CodeLensRequest}. ----@class lsp.CodeLensClientCapabilities ----Whether code lens supports dynamic registration. ----@field dynamicRegistration? boolean - ----The client capabilities of a {@link DocumentLinkRequest}. ----@class lsp.DocumentLinkClientCapabilities ----Whether document link supports dynamic registration. ----@field dynamicRegistration? boolean ----Whether the client supports the `tooltip` property on `DocumentLink`. ---- ----@since 3.15.0 ----@field tooltipSupport? boolean - ----@class lsp.DocumentColorClientCapabilities ----Whether implementation supports dynamic registration. If this is set to `true` ----the client supports the new `DocumentColorRegistrationOptions` return value ----for the corresponding server capability as well. ----@field dynamicRegistration? boolean - ----Client capabilities of a {@link DocumentFormattingRequest}. ----@class lsp.DocumentFormattingClientCapabilities ----Whether formatting supports dynamic registration. ----@field dynamicRegistration? boolean - ----Client capabilities of a {@link DocumentRangeFormattingRequest}. ----@class lsp.DocumentRangeFormattingClientCapabilities ----Whether range formatting supports dynamic registration. ----@field dynamicRegistration? boolean ----Whether the client supports formatting multiple ranges at once. ---- ----@since 3.18.0 ----@proposed ----@field rangesSupport? boolean - ----Client capabilities of a {@link DocumentOnTypeFormattingRequest}. ----@class lsp.DocumentOnTypeFormattingClientCapabilities ----Whether on type formatting supports dynamic registration. ----@field dynamicRegistration? boolean - ----@class lsp.RenameClientCapabilities ----Whether rename supports dynamic registration. ----@field dynamicRegistration? boolean ----Client supports testing for validity of rename operations ----before execution. ---- ----@since 3.12.0 ----@field prepareSupport? boolean ----Client supports the default behavior result. ---- ----The value indicates the default behavior used by the ----client. ---- ----@since 3.16.0 ----@field prepareSupportDefaultBehavior? lsp.PrepareSupportDefaultBehavior ----Whether the client honors the change annotations in ----text edits and resource operations returned via the ----rename request's workspace edit by for example presenting ----the workspace edit in the user interface and asking ----for confirmation. ---- ----@since 3.16.0 ----@field honorsChangeAnnotations? boolean - ----@class lsp.FoldingRangeClientCapabilities ----Whether implementation supports dynamic registration for folding range ----providers. If this is set to `true` the client supports the new ----`FoldingRangeRegistrationOptions` return value for the corresponding ----server capability as well. ----@field dynamicRegistration? boolean ----The maximum number of folding ranges that the client prefers to receive ----per document. The value serves as a hint, servers are free to follow the ----limit. ----@field rangeLimit? uinteger ----If set, the client signals that it only supports folding complete lines. ----If set, client will ignore specified `startCharacter` and `endCharacter` ----properties in a FoldingRange. ----@field lineFoldingOnly? boolean ----Specific options for the folding range kind. ---- ----@since 3.17.0 ----@field foldingRangeKind? anonym36 ----Specific options for the folding range. ---- ----@since 3.17.0 ----@field foldingRange? anonym37 - ----@class lsp.SelectionRangeClientCapabilities ----Whether implementation supports dynamic registration for selection range providers. If this is set to `true` ----the client supports the new `SelectionRangeRegistrationOptions` return value for the corresponding server ----capability as well. ----@field dynamicRegistration? boolean - ----The publish diagnostic client capabilities. ----@class lsp.PublishDiagnosticsClientCapabilities ----Whether the clients accepts diagnostics with related information. ----@field relatedInformation? boolean ----Client supports the tag property to provide meta data about a diagnostic. ----Clients supporting tags have to handle unknown tags gracefully. ---- ----@since 3.15.0 ----@field tagSupport? anonym38 ----Whether the client interprets the version property of the ----`textDocument/publishDiagnostics` notification's parameter. ---- ----@since 3.15.0 ----@field versionSupport? boolean ----Client supports a codeDescription property ---- ----@since 3.16.0 ----@field codeDescriptionSupport? boolean ----Whether code action supports the `data` property which is ----preserved between a `textDocument/publishDiagnostics` and ----`textDocument/codeAction` request. ---- ----@since 3.16.0 ----@field dataSupport? boolean - ----@since 3.16.0 ----@class lsp.CallHierarchyClientCapabilities ----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. ----@field dynamicRegistration? boolean - ----@since 3.16.0 ----@class lsp.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. ----@field 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. ----@field requests anonym41 ----The token types that the client supports. ----@field tokenTypes string[] ----The token modifiers that the client supports. ----@field tokenModifiers string[] ----The token formats the clients supports. ----@field formats lsp.TokenFormat[] ----Whether the client supports tokens that can overlap each other. ----@field overlappingTokenSupport? boolean ----Whether the client supports tokens that can span multiple lines. ----@field multilineTokenSupport? boolean ----Whether the client allows the server to actively cancel a ----semantic token request, e.g. supports returning ----LSPErrorCodes.ServerCancelled. If a server does the client ----needs to retrigger the request. ---- ----@since 3.17.0 ----@field serverCancelSupport? boolean ----Whether the client uses semantic tokens to augment existing ----syntax tokens. If set to `true` client side created syntax ----tokens and semantic tokens are both used for colorization. If ----set to `false` the client only uses the returned semantic tokens ----for colorization. ---- ----If the value is `undefined` then the client behavior is not ----specified. ---- ----@since 3.17.0 ----@field augmentsSyntaxTokens? boolean - ----Client capabilities for the linked editing range request. ---- ----@since 3.16.0 ----@class lsp.LinkedEditingRangeClientCapabilities ----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. ----@field dynamicRegistration? boolean - ----Client capabilities specific to the moniker request. ---- ----@since 3.16.0 ----@class lsp.MonikerClientCapabilities ----Whether moniker supports dynamic registration. If this is set to `true` ----the client supports the new `MonikerRegistrationOptions` return value ----for the corresponding server capability as well. ----@field dynamicRegistration? boolean - ----@since 3.17.0 ----@class lsp.TypeHierarchyClientCapabilities ----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. ----@field dynamicRegistration? boolean - ----Client capabilities specific to inline values. ---- ----@since 3.17.0 ----@class lsp.InlineValueClientCapabilities ----Whether implementation supports dynamic registration for inline value providers. ----@field dynamicRegistration? boolean - ----Inlay hint client capabilities. ---- ----@since 3.17.0 ----@class lsp.InlayHintClientCapabilities ----Whether inlay hints support dynamic registration. ----@field dynamicRegistration? boolean ----Indicates which properties a client can resolve lazily on an inlay ----hint. ----@field resolveSupport? anonym42 - ----Client capabilities specific to diagnostic pull requests. ---- ----@since 3.17.0 ----@class lsp.DiagnosticClientCapabilities ----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. ----@field dynamicRegistration? boolean ----Whether the clients supports related documents for document diagnostic pulls. ----@field relatedDocumentSupport? boolean - ----Client capabilities specific to inline completions. ---- ----@since 3.18.0 ----@class lsp.InlineCompletionClientCapabilities ----Whether implementation supports dynamic registration for inline completion providers. ----@field dynamicRegistration? boolean - ----Notebook specific client capabilities. ---- ----@since 3.17.0 ----@class lsp.NotebookDocumentSyncClientCapabilities ----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. ----@field dynamicRegistration? boolean ----The client supports sending execution summary data per cell. ----@field executionSummarySupport? boolean - ----Show message request client capabilities ----@class lsp.ShowMessageRequestClientCapabilities ----Capabilities specific to the `MessageActionItem` type. ----@field messageActionItem? anonym43 - ----Client capabilities for the showDocument request. ---- ----@since 3.16.0 ----@class lsp.ShowDocumentClientCapabilities ----The client has support for the showDocument ----request. ----@field support boolean - ----Client capabilities specific to regular expressions. ---- ----@since 3.16.0 ----@class lsp.RegularExpressionsClientCapabilities ----The engine's name. ----@field engine string ----The engine's version. ----@field version? string - ----Client capabilities specific to the used markdown parser. ---- ----@since 3.16.0 ----@class lsp.MarkdownClientCapabilities ----The name of the parser. ----@field parser string ----The version of the parser. ----@field version? string ----A list of HTML tags that the client allows / supports in ----Markdown. ---- ----@since 3.17.0 ----@field allowedTags? string[] - ----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 ----@alias lsp.SemanticTokenTypes ----| "namespace" # namespace ----| "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 ----| "decorator" # decorator - ----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 ----@alias lsp.SemanticTokenModifiers ----| "declaration" # declaration ----| "definition" # definition ----| "readonly" # readonly ----| "static" # static ----| "deprecated" # deprecated ----| "abstract" # abstract ----| "async" # async ----| "modification" # modification ----| "documentation" # documentation ----| "defaultLibrary" # defaultLibrary - ----The document diagnostic report kinds. ---- ----@since 3.17.0 ----@alias lsp.DocumentDiagnosticReportKind ----| "full" # Full ----| "unchanged" # Unchanged - ----Predefined error codes. ----@alias lsp.ErrorCodes ----| -32700 # ParseError ----| -32600 # InvalidRequest ----| -32601 # MethodNotFound ----| -32602 # InvalidParams ----| -32603 # InternalError ----| -32002 # ServerNotInitialized ----| -32001 # UnknownErrorCode - ----@alias lsp.LSPErrorCodes ----| -32803 # RequestFailed ----| -32802 # ServerCancelled ----| -32801 # ContentModified ----| -32800 # RequestCancelled - ----A set of predefined range kinds. ----@alias lsp.FoldingRangeKind ----| "comment" # Comment ----| "imports" # Imports ----| "region" # Region - ----A symbol kind. ----@alias lsp.SymbolKind ----| 1 # File ----| 2 # Module ----| 3 # Namespace ----| 4 # Package ----| 5 # Class ----| 6 # Method ----| 7 # Property ----| 8 # Field ----| 9 # Constructor ----| 10 # Enum ----| 11 # Interface ----| 12 # Function ----| 13 # Variable ----| 14 # Constant ----| 15 # String ----| 16 # Number ----| 17 # Boolean ----| 18 # Array ----| 19 # Object ----| 20 # Key ----| 21 # Null ----| 22 # EnumMember ----| 23 # Struct ----| 24 # Event ----| 25 # Operator ----| 26 # TypeParameter - ----Symbol tags are extra annotations that tweak the rendering of a symbol. ---- ----@since 3.16 ----@alias lsp.SymbolTag ----| 1 # Deprecated - ----Moniker uniqueness level to define scope of the moniker. ---- ----@since 3.16.0 ----@alias lsp.UniquenessLevel ----| "document" # document ----| "project" # project ----| "group" # group ----| "scheme" # scheme ----| "global" # global - ----The moniker kind. ---- ----@since 3.16.0 ----@alias lsp.MonikerKind ----| "import" # import ----| "export" # export ----| "local" # local - ----Inlay hint kinds. ---- ----@since 3.17.0 ----@alias lsp.InlayHintKind ----| 1 # Type ----| 2 # Parameter - ----Defines whether the insert text in a completion item should be interpreted as ----plain text or a snippet. ----@alias lsp.InsertTextFormat ----| 1 # PlainText ----| 2 # Snippet - ----The message type ----@alias lsp.MessageType ----| 1 # Error ----| 2 # Warning ----| 3 # Info ----| 4 # Log - ----Defines how the host (editor) should sync ----document changes to the language server. ----@alias lsp.TextDocumentSyncKind ----| 0 # None ----| 1 # Full ----| 2 # Incremental - ----Represents reasons why a text document is saved. ----@alias lsp.TextDocumentSaveReason ----| 1 # Manual ----| 2 # AfterDelay ----| 3 # FocusOut - ----The kind of a completion entry. ----@alias lsp.CompletionItemKind ----| 1 # Text ----| 2 # Method ----| 3 # Function ----| 4 # Constructor ----| 5 # Field ----| 6 # Variable ----| 7 # Class ----| 8 # Interface ----| 9 # Module ----| 10 # Property ----| 11 # Unit ----| 12 # Value ----| 13 # Enum ----| 14 # Keyword ----| 15 # Snippet ----| 16 # Color ----| 17 # File ----| 18 # Reference ----| 19 # Folder ----| 20 # EnumMember ----| 21 # Constant ----| 22 # Struct ----| 23 # Event ----| 24 # Operator ----| 25 # TypeParameter - ----Completion item tags are extra annotations that tweak the rendering of a completion ----item. ---- ----@since 3.15.0 ----@alias lsp.CompletionItemTag ----| 1 # Deprecated - ----How whitespace and indentation is handled during completion ----item insertion. ---- ----@since 3.16.0 ----@alias lsp.InsertTextMode ----| 1 # asIs ----| 2 # adjustIndentation - ----A document highlight kind. ----@alias lsp.DocumentHighlightKind ----| 1 # Text ----| 2 # Read ----| 3 # Write - ----A set of predefined code action kinds ----@alias lsp.CodeActionKind ----| "" # Empty ----| "quickfix" # QuickFix ----| "refactor" # Refactor ----| "refactor.extract" # RefactorExtract ----| "refactor.inline" # RefactorInline ----| "refactor.rewrite" # RefactorRewrite ----| "source" # Source ----| "source.organizeImports" # SourceOrganizeImports ----| "source.fixAll" # SourceFixAll - ----@alias lsp.TraceValues ----| "off" # Off ----| "messages" # Messages ----| "verbose" # Verbose - ----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. ----@alias lsp.MarkupKind ----| "plaintext" # PlainText ----| "markdown" # Markdown - ----Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered. ---- ----@since 3.18.0 ----@alias lsp.InlineCompletionTriggerKind ----| 0 # Invoked ----| 1 # Automatic - ----A set of predefined position encoding kinds. ---- ----@since 3.17.0 ----@alias lsp.PositionEncodingKind ----| "utf-8" # UTF8 ----| "utf-16" # UTF16 ----| "utf-32" # UTF32 - ----The file event type ----@alias lsp.FileChangeType ----| 1 # Created ----| 2 # Changed ----| 3 # Deleted - ----@alias lsp.WatchKind ----| 1 # Create ----| 2 # Change ----| 4 # Delete - ----The diagnostic's severity. ----@alias lsp.DiagnosticSeverity ----| 1 # Error ----| 2 # Warning ----| 3 # Information ----| 4 # Hint - ----The diagnostic tags. ---- ----@since 3.15.0 ----@alias lsp.DiagnosticTag ----| 1 # Unnecessary ----| 2 # Deprecated - ----How a completion was triggered ----@alias lsp.CompletionTriggerKind ----| 1 # Invoked ----| 2 # TriggerCharacter ----| 3 # TriggerForIncompleteCompletions - ----How a signature help was triggered. ---- ----@since 3.15.0 ----@alias lsp.SignatureHelpTriggerKind ----| 1 # Invoked ----| 2 # TriggerCharacter ----| 3 # ContentChange - ----The reason why code actions were requested. ---- ----@since 3.17.0 ----@alias lsp.CodeActionTriggerKind ----| 1 # Invoked ----| 2 # Automatic - ----A pattern kind describing if a glob pattern matches a file a folder or ----both. ---- ----@since 3.16.0 ----@alias lsp.FileOperationPatternKind ----| "file" # file ----| "folder" # folder - ----A notebook cell kind. ---- ----@since 3.17.0 ----@alias lsp.NotebookCellKind ----| 1 # Markup ----| 2 # Code - ----@alias lsp.ResourceOperationKind ----| "create" # Create ----| "rename" # Rename ----| "delete" # Delete - ----@alias lsp.FailureHandlingKind ----| "abort" # Abort ----| "transactional" # Transactional ----| "textOnlyTransactional" # TextOnlyTransactional ----| "undo" # Undo - ----@alias lsp.PrepareSupportDefaultBehavior ----| 1 # Identifier - ----@alias lsp.TokenFormat ----| "relative" # Relative - ----The definition of a symbol represented as one or many {@link Location locations}. ----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. ----@alias lsp.Definition lsp.Location|lsp.Location[] - ----Information about where a symbol is defined. ---- ----Provides additional metadata over normal {@link Location location} definitions, including the range of ----the defining symbol ----@alias lsp.DefinitionLink lsp.LocationLink - ----LSP arrays. ----@since 3.17.0 ----@alias lsp.LSPArray lsp.LSPAny[] - ----The LSP any type. ----Please note that strictly speaking a property with the value `undefined` ----can't be converted into JSON preserving the property name. However for ----convenience it is allowed and assumed that all these properties are ----optional as well. ----@since 3.17.0 ----@alias lsp.LSPAny lsp.LSPObject|lsp.LSPArray|string|integer|uinteger|decimal|boolean|lsp.null - ----The declaration of a symbol representation as one or many {@link Location locations}. ----@alias lsp.Declaration lsp.Location|lsp.Location[] - ----Information about where a symbol is declared. ---- ----Provides additional metadata over normal {@link Location location} declarations, including the range of ----the declaring symbol. ---- ----Servers should prefer returning `DeclarationLink` over `Declaration` if supported ----by the client. ----@alias lsp.DeclarationLink lsp.LocationLink - ----Inline value information can be provided by different means: ----- directly as a text value (class InlineValueText). ----- as a name to use for a variable lookup (class InlineValueVariableLookup) ----- as an evaluatable expression (class InlineValueEvaluatableExpression) ----The InlineValue types combines all inline value types into one type. ---- ----@since 3.17.0 ----@alias lsp.InlineValue lsp.InlineValueText|lsp.InlineValueVariableLookup|lsp.InlineValueEvaluatableExpression - ----The result of a document diagnostic pull request. A report can ----either be a full report containing all diagnostics for the ----requested document or an unchanged report indicating that nothing ----has changed in terms of diagnostics in comparison to the last ----pull request. ---- ----@since 3.17.0 ----@alias lsp.DocumentDiagnosticReport lsp.RelatedFullDocumentDiagnosticReport|lsp.RelatedUnchangedDocumentDiagnosticReport - ----@alias lsp.PrepareRenameResult lsp.Range|anonym44|anonym45 - ----A document selector is the combination of one or many document filters. ---- ----@sample `let sel:DocumentSelector = [{ language: 'typescript' }, { language: 'json', pattern: '**∕tsconfig.json' }]`; ---- ----The use of a string as a document filter is deprecated @since 3.16.0. ----@alias lsp.DocumentSelector lsp.DocumentFilter[] - ----@alias lsp.ProgressToken integer|string - ----An identifier to refer to a change annotation stored with a workspace edit. ----@alias lsp.ChangeAnnotationIdentifier string - ----A workspace diagnostic document report. ---- ----@since 3.17.0 ----@alias lsp.WorkspaceDocumentDiagnosticReport lsp.WorkspaceFullDocumentDiagnosticReport|lsp.WorkspaceUnchangedDocumentDiagnosticReport - ----An event describing a change to a text document. If only a text is provided ----it is considered to be the full content of the document. ----@alias lsp.TextDocumentContentChangeEvent anonym46|anonym47 - ----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. ----@alias lsp.MarkedString string|anonym48 - ----A document filter describes a top level text document or ----a notebook cell document. ---- ----@since 3.17.0 - proposed support for NotebookCellTextDocumentFilter. ----@alias lsp.DocumentFilter lsp.TextDocumentFilter|lsp.NotebookCellTextDocumentFilter - ----LSP object definition. ----@since 3.17.0 ----@alias lsp.LSPObject table - ----The glob pattern. Either a string pattern or a relative pattern. ---- ----@since 3.17.0 ----@alias lsp.GlobPattern lsp.Pattern|lsp.RelativePattern - ----A document filter denotes a document by different properties like ----the {@link TextDocument.languageId language}, the {@link Uri.scheme scheme} of ----its resource, or a glob-pattern that is applied to the {@link TextDocument.fileName path}. ---- ----Glob patterns can have the following syntax: ----- `*` to match one or more characters in a path segment ----- `?` to match on one character in a path segment ----- `**` to match any number of path segments, including none ----- `{}` to group sub patterns into an OR expression. (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files) ----- `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …) ----- `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`) ---- ----@sample A language filter that applies to typescript files on disk: `{ language: 'typescript', scheme: 'file' }` ----@sample A language filter that applies to all package.json paths: `{ language: 'json', pattern: '**package.json' }` ---- ----@since 3.17.0 ----@alias lsp.TextDocumentFilter anonym49|anonym50|anonym51 - ----A notebook document filter denotes a notebook document by ----different properties. The properties will be match ----against the notebook's URI (same as with documents) ---- ----@since 3.17.0 ----@alias lsp.NotebookDocumentFilter anonym52|anonym53|anonym54 - ----The glob pattern to watch relative to the base path. Glob patterns can have the following syntax: ----- `*` to match one or more characters in a path segment ----- `?` to match on one character in a path segment ----- `**` to match any number of path segments, including none ----- `{}` to group conditions (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files) ----- `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …) ----- `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`) ---- ----@since 3.17.0 ----@alias lsp.Pattern string - ----@class anonym1 ----The name of the server as defined by the server. ----@field name string ----The server's version as defined by the server. ----@field version? string - ----@class anonym3 ----@field insert lsp.Range ----@field replace lsp.Range - ----@class anonym2 ----A default commit character set. ---- ----@since 3.17.0 ----@field commitCharacters? string[] ----A default edit range. ---- ----@since 3.17.0 ----@field editRange? lsp.Range|anonym3 ----A default insert text format. ---- ----@since 3.17.0 ----@field insertTextFormat? lsp.InsertTextFormat ----A default insert text mode. ---- ----@since 3.17.0 ----@field insertTextMode? lsp.InsertTextMode ----A default data value. ---- ----@since 3.17.0 ----@field data? lsp.LSPAny - ----@class anonym4 ----Human readable description of why the code action is currently disabled. ---- ----This is displayed in the code actions UI. ----@field reason string - ----@class anonym5 ----@field uri lsp.DocumentUri - ----@class anonym6 - ----@class anonym7 ----The server supports deltas for full documents. ----@field delta? boolean - ----@class anonym9 ----The change to the cell array. ----@field array lsp.NotebookCellArrayChange ----Additional opened cell text documents. ----@field didOpen? lsp.TextDocumentItem[] ----Additional closed cell text documents. ----@field didClose? lsp.TextDocumentIdentifier[] - ----@class anonym10 ----@field document lsp.VersionedTextDocumentIdentifier ----@field changes lsp.TextDocumentContentChangeEvent[] - ----@class anonym8 ----Changes to the cell structure to add or ----remove cells. ----@field structure? anonym9 ----Changes to notebook cells properties like its ----kind, execution summary or metadata. ----@field data? lsp.NotebookCell[] ----Changes to the text content of notebook cells. ----@field textContent? anonym10[] - ----@class anonym11 ----The name of the client as defined by the client. ----@field name string ----The client's version as defined by the client. ----@field version? string - ----@class anonym12 ----The server supports workspace folder. ---- ----@since 3.6.0 ----@field workspaceFolders? lsp.WorkspaceFoldersServerCapabilities ----The server is interested in notifications/requests for operations on files. ---- ----@since 3.16.0 ----@field fileOperations? lsp.FileOperationOptions - ----@class anonym13 ----The server has support for completion item label ----details (see also `CompletionItemLabelDetails`) when ----receiving a completion item in a resolve call. ---- ----@since 3.17.0 ----@field labelDetailsSupport? boolean - ----@class anonym15 ----@field language string - ----@class anonym14 ----The notebook to be synced If a string ----value is provided it matches against the ----notebook type. '*' matches every notebook. ----@field notebook string|lsp.NotebookDocumentFilter ----The cells of the matching notebook to be synced. ----@field cells? anonym15[] - ----@class anonym17 ----@field language string - ----@class anonym16 ----The notebook to be synced If a string ----value is provided it matches against the ----notebook type. '*' matches every notebook. ----@field notebook? string|lsp.NotebookDocumentFilter ----The cells of the matching notebook to be synced. ----@field cells anonym17[] - ----@class anonym18 ----The client will actively cancel the request. ----@field cancel boolean ----The list of requests for which the client ----will retry the request if it receives a ----response with error code `ContentModified` ----@field retryOnContentModified string[] - ----@class anonym19 ----Whether the client groups edits with equal labels into tree nodes, ----for instance all edits labelled with "Changes in Strings" would ----be a tree node. ----@field groupsOnLabel? boolean - ----@class anonym20 ----The symbol kind values the client supports. When this ----property exists the client also guarantees that it will ----handle values outside its set gracefully and falls back ----to a default value when unknown. ---- ----If this property is not present the client only supports ----the symbol kinds from `File` to `Array` as defined in ----the initial version of the protocol. ----@field valueSet? lsp.SymbolKind[] - ----@class anonym21 ----The tags supported by the client. ----@field valueSet lsp.SymbolTag[] - ----@class anonym22 ----The properties that a client can resolve lazily. Usually ----`location.range` ----@field properties string[] - ----@class anonym24 ----The tags supported by the client. ----@field valueSet lsp.CompletionItemTag[] - ----@class anonym25 ----The properties that a client can resolve lazily. ----@field properties string[] - ----@class anonym26 ----@field valueSet lsp.InsertTextMode[] - ----@class anonym23 ----Client supports snippets as insert text. ---- ----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. ----@field snippetSupport? boolean ----Client supports commit characters on a completion item. ----@field commitCharactersSupport? boolean ----Client supports the following content formats for the documentation ----property. The order describes the preferred format of the client. ----@field documentationFormat? lsp.MarkupKind[] ----Client supports the deprecated property on a completion item. ----@field deprecatedSupport? boolean ----Client supports the preselect property on a completion item. ----@field preselectSupport? boolean ----Client supports the tag property on a completion item. Clients supporting ----tags have to handle unknown tags gracefully. Clients especially need to ----preserve unknown tags when sending a completion item back to the server in ----a resolve call. ---- ----@since 3.15.0 ----@field tagSupport? anonym24 ----Client support insert replace edit to control different behavior if a ----completion item is inserted in the text or should replace text. ---- ----@since 3.16.0 ----@field insertReplaceSupport? boolean ----Indicates which properties a client can resolve lazily on a completion ----item. Before version 3.16.0 only the predefined properties `documentation` ----and `details` could be resolved lazily. ---- ----@since 3.16.0 ----@field resolveSupport? anonym25 ----The client supports the `insertTextMode` property on ----a completion item to override the whitespace handling mode ----as defined by the client (see `insertTextMode`). ---- ----@since 3.16.0 ----@field insertTextModeSupport? anonym26 ----The client has support for completion item label ----details (see also `CompletionItemLabelDetails`). ---- ----@since 3.17.0 ----@field labelDetailsSupport? boolean - ----@class anonym27 ----The completion item kind values the client supports. When this ----property exists the client also guarantees that it will ----handle values outside its set gracefully and falls back ----to a default value when unknown. ---- ----If this property is not present the client only supports ----the completion items kinds from `Text` to `Reference` as defined in ----the initial version of the protocol. ----@field valueSet? lsp.CompletionItemKind[] - ----@class anonym28 ----The client supports the following itemDefaults on ----a completion list. ---- ----The value lists the supported property names of the ----`CompletionList.itemDefaults` object. If omitted ----no properties are supported. ---- ----@since 3.17.0 ----@field itemDefaults? string[] - ----@class anonym30 ----The client supports processing label offsets instead of a ----simple label string. ---- ----@since 3.14.0 ----@field labelOffsetSupport? boolean - ----@class anonym29 ----Client supports the following content formats for the documentation ----property. The order describes the preferred format of the client. ----@field documentationFormat? lsp.MarkupKind[] ----Client capabilities specific to parameter information. ----@field parameterInformation? anonym30 ----The client supports the `activeParameter` property on `SignatureInformation` ----literal. ---- ----@since 3.16.0 ----@field activeParameterSupport? boolean - ----@class anonym31 ----The symbol kind values the client supports. When this ----property exists the client also guarantees that it will ----handle values outside its set gracefully and falls back ----to a default value when unknown. ---- ----If this property is not present the client only supports ----the symbol kinds from `File` to `Array` as defined in ----the initial version of the protocol. ----@field valueSet? lsp.SymbolKind[] - ----@class anonym32 ----The tags supported by the client. ----@field valueSet lsp.SymbolTag[] - ----@class anonym34 ----The code action kind values the client supports. When this ----property exists the client also guarantees that it will ----handle values outside its set gracefully and falls back ----to a default value when unknown. ----@field valueSet lsp.CodeActionKind[] - ----@class anonym33 ----The code action kind is support with the following value ----set. ----@field codeActionKind anonym34 - ----@class anonym35 ----The properties that a client can resolve lazily. ----@field properties string[] - ----@class anonym36 ----The folding range kind values the client supports. When this ----property exists the client also guarantees that it will ----handle values outside its set gracefully and falls back ----to a default value when unknown. ----@field valueSet? lsp.FoldingRangeKind[] - ----@class anonym37 ----If set, the client signals that it supports setting collapsedText on ----folding ranges to display custom labels instead of the default text. ---- ----@since 3.17.0 ----@field collapsedText? boolean - ----@class anonym38 ----The tags supported by the client. ----@field valueSet lsp.DiagnosticTag[] - ----@class anonym40 - ----@class anonym41 ----The client will send the `textDocument/semanticTokens/full/delta` request if ----the server provides a corresponding handler. ----@field delta? boolean - ----@class anonym39 ----The client will send the `textDocument/semanticTokens/range` request if ----the server provides a corresponding handler. ----@field range? boolean|anonym40 ----The client will send the `textDocument/semanticTokens/full` request if ----the server provides a corresponding handler. ----@field full? boolean|anonym41 - ----@class anonym42 ----The properties that a client can resolve lazily. ----@field properties string[] - ----@class anonym43 ----Whether the client supports additional attributes which ----are preserved and send back to the server in the ----request's response. ----@field additionalPropertiesSupport? boolean - ----@class anonym44 ----@field range lsp.Range ----@field placeholder string - ----@class anonym45 ----@field defaultBehavior boolean - ----@class anonym46 ----The range of the document that changed. ----@field range lsp.Range ----The optional length of the range that got replaced. ---- ----@deprecated use range instead. ----@field rangeLength? uinteger ----The new text for the provided range. ----@field text string - ----@class anonym47 ----The new text of the whole document. ----@field text string - ----@class anonym48 ----@field language string ----@field value string - ----@class anonym49 ----A language id, like `typescript`. ----@field language string ----A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. ----@field scheme? string ----A glob pattern, like `*.{ts,js}`. ----@field pattern? string - ----@class anonym50 ----A language id, like `typescript`. ----@field language? string ----A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. ----@field scheme string ----A glob pattern, like `*.{ts,js}`. ----@field pattern? string - ----@class anonym51 ----A language id, like `typescript`. ----@field language? string ----A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. ----@field scheme? string ----A glob pattern, like `*.{ts,js}`. ----@field pattern string - ----@class anonym52 ----The type of the enclosing notebook. ----@field notebookType string ----A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. ----@field scheme? string ----A glob pattern. ----@field pattern? string - ----@class anonym53 ----The type of the enclosing notebook. ----@field notebookType? string ----A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. ----@field scheme string ----A glob pattern. ----@field pattern? string - ----@class anonym54 ----The type of the enclosing notebook. ----@field notebookType? string ----A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. ----@field scheme? string ----A glob pattern. ----@field pattern string diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua index 738e23ff28..633cddca2d 100644 --- a/runtime/lua/vim/lsp/util.lua +++ b/runtime/lua/vim/lsp/util.lua @@ -715,8 +715,8 @@ end --- Turns the result of a `textDocument/completion` request into vim-compatible --- |complete-items|. --- ----@param result table The result of a `textDocument/completion` call, e.g. from ----|vim.lsp.buf.completion()|, which may be one of `CompletionItem[]`, +---@param result table The result of a `textDocument/completion` call, e.g. +--- from |vim.lsp.buf.completion()|, which may be one of `CompletionItem[]`, --- `CompletionList` or `null` ---@param prefix (string) the prefix to filter the completion items ---@return table { matches = complete-items table, incomplete = bool } diff --git a/runtime/lua/vim/secure.lua b/runtime/lua/vim/secure.lua index 837738c041..893b3e1877 100644 --- a/runtime/lua/vim/secure.lua +++ b/runtime/lua/vim/secure.lua @@ -119,9 +119,8 @@ end --- - path (string|nil): Path to a file to update. Mutually exclusive with {bufnr}. --- Cannot be used when {action} is "allow". --- - bufnr (number|nil): Buffer number to update. Mutually exclusive with {path}. ----@return (boolean, string) success, msg: ---- - true and full path of target file if operation was successful ---- - false and error message on failure +---@return boolean success true if operation was successful +---@return string msg full path if operation was successful, else error message function M.trust(opts) vim.validate({ path = { opts.path, 's', true }, diff --git a/runtime/lua/vim/shared.lua b/runtime/lua/vim/shared.lua index 32575a1cc9..422d49d746 100644 --- a/runtime/lua/vim/shared.lua +++ b/runtime/lua/vim/shared.lua @@ -6,6 +6,7 @@ -- or the test suite. (Eventually the test suite will be run in a worker process, -- so this wouldn't be a separate case to consider) +---@diagnostic disable-next-line: lowercase-global vim = vim or {} local function _id(v) @@ -533,7 +534,7 @@ end ---@see Based on https://github.com/premake/premake-core/blob/master/src/base/table.lua --- ---@param t table Dict-like table ----@return # iterator over sorted keys and their values +---@return function iterator over sorted keys and their values function vim.spairs(t) assert(type(t) == 'table', string.format('Expected table, got %s', type(t))) diff --git a/runtime/lua/vim/treesitter/query.lua b/runtime/lua/vim/treesitter/query.lua index 08186468a5..3b7e74c0cf 100644 --- a/runtime/lua/vim/treesitter/query.lua +++ b/runtime/lua/vim/treesitter/query.lua @@ -434,7 +434,7 @@ local predicate_handlers = { predicate_handlers['vim-match?'] = predicate_handlers['match?'] ---@class TSMetadata ----@field range Range +---@field range? Range ---@field [integer] TSMetadata ---@field [string] integer|string diff --git a/runtime/lua/vim/version.lua b/runtime/lua/vim/version.lua index 96889438eb..056e1678ff 100644 --- a/runtime/lua/vim/version.lua +++ b/runtime/lua/vim/version.lua @@ -212,15 +212,15 @@ function M.last(versions) return last end ----@class Range +---@class VersionRange ---@field from Version ---@field to? Version -local Range = {} +local VersionRange = {} --- @private --- ---@param version string|Version -function Range:has(version) +function VersionRange:has(version) if type(version) == 'string' then ---@diagnostic disable-next-line: cast-local-type version = M.parse(version) @@ -266,7 +266,7 @@ end --- @param spec string Version range "spec" function M.range(spec) -- Adapted from https://github.com/folke/lazy.nvim if spec == '*' or spec == '' then - return setmetatable({ from = M.parse('0.0.0') }, { __index = Range }) + return setmetatable({ from = M.parse('0.0.0') }, { __index = VersionRange }) end ---@type number? @@ -280,7 +280,7 @@ function M.range(spec) -- Adapted from https://github.com/folke/lazy.nvim return setmetatable({ from = ra and ra.from, to = rb and (#parts == 3 and rb.from or rb.to), - }, { __index = Range }) + }, { __index = VersionRange }) end ---@type string, string local mods, version = spec:lower():match('^([%^=<>~]*)(.*)$') @@ -326,7 +326,7 @@ function M.range(spec) -- Adapted from https://github.com/folke/lazy.nvim end end end - return setmetatable({ from = from, to = to }, { __index = Range }) + return setmetatable({ from = from, to = to }, { __index = VersionRange }) end end -- cgit