mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	docs: lsp, lua #33682
- sort fields alphabetically. - in the `vim.lsp.Client` docs, reference `vim.lsp.ClientConfig` instead of duplicating its docs. - cleanup lots of redundant-yet-drifted field docs.
This commit is contained in:
		| @@ -311,7 +311,7 @@ Nvim's filetype detection behavior matches Vim, but is implemented as part of | |||||||
| |vim.filetype| (see `$VIMRUNTIME/lua/vim/filetype.lua`). The logic is encoded in | |vim.filetype| (see `$VIMRUNTIME/lua/vim/filetype.lua`). The logic is encoded in | ||||||
| three tables, listed in order of precedence (the first match is returned): | three tables, listed in order of precedence (the first match is returned): | ||||||
| 1. `filename` for literal full path or basename lookup; | 1. `filename` for literal full path or basename lookup; | ||||||
| 2. `pattern` for matching filenames or paths against |lua-patterns|, optimized | 2. `pattern` for matching filenames or paths against |lua-pattern|s, optimized | ||||||
|    for fast lookup; |    for fast lookup; | ||||||
| 3. `extension` for literal extension lookup. | 3. `extension` for literal extension lookup. | ||||||
|  |  | ||||||
|   | |||||||
| @@ -705,27 +705,25 @@ Lua module: vim.lsp                                                 *lsp-core* | |||||||
|       • {cmd}?           (`string[]|fun(dispatchers: vim.lsp.rpc.Dispatchers): vim.lsp.rpc.PublicClient`) |       • {cmd}?           (`string[]|fun(dispatchers: vim.lsp.rpc.Dispatchers): vim.lsp.rpc.PublicClient`) | ||||||
|                          See `cmd` in |vim.lsp.ClientConfig|. |                          See `cmd` in |vim.lsp.ClientConfig|. | ||||||
|       • {filetypes}?     (`string[]`) Filetypes the client will attach to, if |       • {filetypes}?     (`string[]`) Filetypes the client will attach to, if | ||||||
|                          activated by `vim.lsp.enable()`. If not provided, |                          activated by `vim.lsp.enable()`. If not provided, the | ||||||
|                          then the client will attach to all filetypes. |                          client will attach to all filetypes. | ||||||
|       • {root_markers}?  (`string[]`) Directory markers (.e.g. '.git/') where |       • {reuse_client}?  (`fun(client: vim.lsp.Client, config: vim.lsp.ClientConfig): boolean`) | ||||||
|                          the LSP server will base its workspaceFolders, |                          Predicate which decides if a client should be | ||||||
|                          rootUri, and rootPath on initialization. Unused if |                          re-used. Used on all running clients. The default | ||||||
|                          `root_dir` is provided. |                          implementation re-uses a client if name and root_dir | ||||||
|  |                          matches. | ||||||
|       • {root_dir}?      (`string|fun(bufnr: integer, on_dir:fun(root_dir?:string))`) |       • {root_dir}?      (`string|fun(bufnr: integer, on_dir:fun(root_dir?:string))`) | ||||||
|                          *lsp-root_dir()* Directory where the LSP server will |                          *lsp-root_dir()* Directory where the LSP server will | ||||||
|                          base its workspaceFolders, rootUri, and rootPath on |                          base its workspaceFolders, rootUri, and rootPath on | ||||||
|                          initialization. The function form receives a buffer |                          initialization. The function form receives a buffer | ||||||
|                          number and `on_dir` callback, which must be called to |                          number and `on_dir` callback which it must call to | ||||||
|                          provide root_dir as a string. LSP will not be |                          provide root_dir, or LSP will not be activated for | ||||||
|                          activated for the buffer unless `on_dir` is called; |                          the buffer. Thus a `root_dir()` function can | ||||||
|                          thus a `root_dir()` function can dynamically decide |                          dynamically decide per-buffer whether to activate (or | ||||||
|                          whether to activate (or skip) LSP per-buffer. See |                          skip) LSP. See example at |vim.lsp.enable()|. | ||||||
|                          example at |vim.lsp.enable()|. |       • {root_markers}?  (`string[]`) Directory markers (e.g. ".git/", | ||||||
|       • {reuse_client}?  (`fun(client: vim.lsp.Client, config: vim.lsp.ClientConfig): boolean`) |                          "package.json") used to decide `root_dir`. Unused if | ||||||
|                          Predicate used to decide if a client should be |                          `root_dir` is provided. | ||||||
|                          re-used. Used on all running clients. The default |  | ||||||
|                          implementation re-uses a client if name and root_dir |  | ||||||
|                          matches. |  | ||||||
|  |  | ||||||
|  |  | ||||||
| buf_attach_client({bufnr}, {client_id})          *vim.lsp.buf_attach_client()* | buf_attach_client({bufnr}, {client_id})          *vim.lsp.buf_attach_client()* | ||||||
| @@ -1148,65 +1146,17 @@ Lua module: vim.lsp.client                                        *lsp-client* | |||||||
| *vim.lsp.Client* | *vim.lsp.Client* | ||||||
|  |  | ||||||
|     Fields: ~ |     Fields: ~ | ||||||
|       • {id}                    (`integer`) The id allocated to the client. |  | ||||||
|       • {name}                  (`string`) If a name is specified on creation, |  | ||||||
|                                 that will be used. Otherwise it is just the |  | ||||||
|                                 client id. This is used for logs and messages. |  | ||||||
|       • {rpc}                   (`vim.lsp.rpc.PublicClient`) RPC client |  | ||||||
|                                 object, for low level interaction with the |  | ||||||
|                                 client. See |vim.lsp.rpc.start()|. |  | ||||||
|       • {offset_encoding}       (`string`) Called "position encoding" in LSP |  | ||||||
|                                 spec, the encoding used for communicating with |  | ||||||
|                                 the server. You can modify this in the |  | ||||||
|                                 `config`'s `on_init` method before text is |  | ||||||
|                                 sent to the server. |  | ||||||
|       • {handlers}              (`table<string,lsp.Handler>`) The handlers |  | ||||||
|                                 used by the client as described in |  | ||||||
|                                 |lsp-handler|. |  | ||||||
|       • {requests}              (`table<integer,{ type: string, bufnr: integer, method: string}?>`) |  | ||||||
|                                 The current pending requests in flight to the |  | ||||||
|                                 server. Entries are key-value pairs with the |  | ||||||
|                                 key being the request id while the value is a |  | ||||||
|                                 table with `type`, `bufnr`, and `method` |  | ||||||
|                                 key-value pairs. `type` is either "pending" |  | ||||||
|                                 for an active request, or "cancel" for a |  | ||||||
|                                 cancel request. It will be "complete" |  | ||||||
|                                 ephemerally while executing |LspRequest| |  | ||||||
|                                 autocmds when replies are received from the |  | ||||||
|                                 server. |  | ||||||
|       • {config}                (`vim.lsp.ClientConfig`) copy of the table |  | ||||||
|                                 that was passed by the user to |  | ||||||
|                                 |vim.lsp.start()|. See |vim.lsp.ClientConfig|. |  | ||||||
|       • {server_capabilities}   (`lsp.ServerCapabilities?`) Response from the |  | ||||||
|                                 server sent on `initialize` describing the |  | ||||||
|                                 server's capabilities. |  | ||||||
|       • {server_info}           (`lsp.ServerInfo?`) Response from the server |  | ||||||
|                                 sent on `initialize` describing information |  | ||||||
|                                 about the server. |  | ||||||
|       • {progress}              (`vim.lsp.Client.Progress`) A ring buffer |  | ||||||
|                                 (|vim.ringbuf()|) containing progress messages |  | ||||||
|                                 sent by the server. See |  | ||||||
|                                 |vim.lsp.Client.Progress|. |  | ||||||
|       • {initialized}           (`true?`) |  | ||||||
|       • {workspace_folders}     (`lsp.WorkspaceFolder[]?`) 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. |  | ||||||
|       • {root_dir}              (`string?`) |  | ||||||
|       • {attached_buffers}      (`table<integer,true>`) |       • {attached_buffers}      (`table<integer,true>`) | ||||||
|  |       • {capabilities}          (`lsp.ClientCapabilities`) Capabilities | ||||||
|  |                                 provided by the client (editor or tool), at | ||||||
|  |                                 startup. | ||||||
|       • {commands}              (`table<string,fun(command: lsp.Command, ctx: table)>`) |       • {commands}              (`table<string,fun(command: lsp.Command, ctx: table)>`) | ||||||
|                                 Table of command name to function which is |                                 Client commands. See |vim.lsp.ClientConfig|. | ||||||
|                                 called if any LSP action (code action, code |       • {config}                (`vim.lsp.ClientConfig`) Copy of the config | ||||||
|                                 lenses, ...) triggers the command. Client |                                 passed to |vim.lsp.start()|. See | ||||||
|                                 commands take precedence over the global |                                 |vim.lsp.ClientConfig|. | ||||||
|                                 command registry. |       • {dynamic_capabilities}  (`lsp.DynamicCapabilities`) Capabilities | ||||||
|       • {settings}              (`lsp.LSPObject`) Map with language server |                                 provided at runtime (after startup). | ||||||
|                                 specific settings. These are returned to the |  | ||||||
|                                 language server if requested via |  | ||||||
|                                 `workspace/configuration`. Keys are |  | ||||||
|                                 case-sensitive. |  | ||||||
|       • {flags}                 (`table`) A table with flags for the client. |       • {flags}                 (`table`) A table with flags for the client. | ||||||
|                                 The current (experimental) flags are: |                                 The current (experimental) flags are: | ||||||
|                                 • {allow_incremental_sync}? (`boolean`, |                                 • {allow_incremental_sync}? (`boolean`, | ||||||
| @@ -1223,9 +1173,41 @@ Lua module: vim.lsp.client                                        *lsp-client* | |||||||
|                                   false, nvim exits immediately after sending |                                   false, nvim exits immediately after sending | ||||||
|                                   the "shutdown" request to the server. |                                   the "shutdown" request to the server. | ||||||
|       • {get_language_id}       (`fun(bufnr: integer, filetype: string): string`) |       • {get_language_id}       (`fun(bufnr: integer, filetype: string): string`) | ||||||
|       • {capabilities}          (`lsp.ClientCapabilities`) The capabilities |                                 See |vim.lsp.ClientConfig|. | ||||||
|                                 provided by the client (editor or tool) |       • {handlers}              (`table<string,lsp.Handler>`) See | ||||||
|       • {dynamic_capabilities}  (`lsp.DynamicCapabilities`) |                                 |vim.lsp.ClientConfig|. | ||||||
|  |       • {id}                    (`integer`) The id allocated to the client. | ||||||
|  |       • {initialized}           (`true?`) | ||||||
|  |       • {name}                  (`string`) See |vim.lsp.ClientConfig|. | ||||||
|  |       • {offset_encoding}       (`string`) See |vim.lsp.ClientConfig|. | ||||||
|  |       • {progress}              (`vim.lsp.Client.Progress`) A ring buffer | ||||||
|  |                                 (|vim.ringbuf()|) containing progress messages | ||||||
|  |                                 sent by the server. See | ||||||
|  |                                 |vim.lsp.Client.Progress|. | ||||||
|  |       • {requests}              (`table<integer,{ type: string, bufnr: integer, method: string}?>`) | ||||||
|  |                                 The current pending requests in flight to the | ||||||
|  |                                 server. Entries are key-value pairs with the | ||||||
|  |                                 key being the request id while the value is a | ||||||
|  |                                 table with `type`, `bufnr`, and `method` | ||||||
|  |                                 key-value pairs. `type` is either "pending" | ||||||
|  |                                 for an active request, or "cancel" for a | ||||||
|  |                                 cancel request. It will be "complete" | ||||||
|  |                                 ephemerally while executing |LspRequest| | ||||||
|  |                                 autocmds when replies are received from the | ||||||
|  |                                 server. | ||||||
|  |       • {root_dir}              (`string?`) See |vim.lsp.ClientConfig|. | ||||||
|  |       • {rpc}                   (`vim.lsp.rpc.PublicClient`) RPC client | ||||||
|  |                                 object, for low level interaction with the | ||||||
|  |                                 client. See |vim.lsp.rpc.start()|. | ||||||
|  |       • {server_capabilities}   (`lsp.ServerCapabilities?`) Response from the | ||||||
|  |                                 server sent on `initialize` describing the | ||||||
|  |                                 server's capabilities. | ||||||
|  |       • {server_info}           (`lsp.ServerInfo?`) Response from the server | ||||||
|  |                                 sent on `initialize` describing server | ||||||
|  |                                 information (e.g. version). | ||||||
|  |       • {settings}              (`lsp.LSPObject`) See |vim.lsp.ClientConfig|. | ||||||
|  |       • {workspace_folders}     (`lsp.WorkspaceFolder[]?`) See | ||||||
|  |                                 |vim.lsp.ClientConfig|. | ||||||
|       • {request}               (`fun(self: vim.lsp.Client, method: string, params: table?, handler: lsp.Handler?, bufnr: integer?): boolean, integer?`) |       • {request}               (`fun(self: vim.lsp.Client, method: string, params: table?, handler: lsp.Handler?, bufnr: integer?): boolean, integer?`) | ||||||
|                                 See |Client:request()|. |                                 See |Client:request()|. | ||||||
|       • {request_sync}          (`fun(self: vim.lsp.Client, method: string, params: table, timeout_ms: integer?, bufnr: integer?): {err: lsp.ResponseError?, result:any}?, string?`) |       • {request_sync}          (`fun(self: vim.lsp.Client, method: string, params: table, timeout_ms: integer?, bufnr: integer?): {err: lsp.ResponseError?, result:any}?, string?`) | ||||||
| @@ -1255,6 +1237,23 @@ Lua module: vim.lsp.client                                        *lsp-client* | |||||||
| *vim.lsp.ClientConfig* | *vim.lsp.ClientConfig* | ||||||
|  |  | ||||||
|     Fields: ~ |     Fields: ~ | ||||||
|  |       • {before_init}?         (`fun(params: lsp.InitializeParams, config: vim.lsp.ClientConfig)`) | ||||||
|  |                                Callback invoked before the LSP "initialize" | ||||||
|  |                                phase, where `params` contains the parameters | ||||||
|  |                                being sent to the server and `config` is the | ||||||
|  |                                config that was passed to |vim.lsp.start()|. | ||||||
|  |                                You can use this to modify parameters before | ||||||
|  |                                they are sent. | ||||||
|  |       • {capabilities}?        (`lsp.ClientCapabilities`) Map overriding the | ||||||
|  |                                default capabilities defined by | ||||||
|  |                                |vim.lsp.protocol.make_client_capabilities()|, | ||||||
|  |                                passed to the language server on | ||||||
|  |                                initialization. Hint: use | ||||||
|  |                                make_client_capabilities() and modify its | ||||||
|  |                                result. | ||||||
|  |                                • Note: To send an empty dictionary use | ||||||
|  |                                  |vim.empty_dict()|, else it will be encoded | ||||||
|  |                                  as an array. | ||||||
|       • {cmd}                  (`string[]|fun(dispatchers: vim.lsp.rpc.Dispatchers): vim.lsp.rpc.PublicClient`) |       • {cmd}                  (`string[]|fun(dispatchers: vim.lsp.rpc.Dispatchers): vim.lsp.rpc.PublicClient`) | ||||||
|                                command string[] that launches the language |                                command string[] that launches the language | ||||||
|                                server (treated as in |jobstart()|, must be |                                server (treated as in |jobstart()|, must be | ||||||
| @@ -1270,101 +1269,24 @@ Lua module: vim.lsp.client                                        *lsp-client* | |||||||
|                                |vim.lsp.rpc.connect()| |                                |vim.lsp.rpc.connect()| | ||||||
|       • {cmd_cwd}?             (`string`, default: cwd) Directory to launch |       • {cmd_cwd}?             (`string`, default: cwd) Directory to launch | ||||||
|                                the `cmd` process. Not related to `root_dir`. |                                the `cmd` process. Not related to `root_dir`. | ||||||
|       • {cmd_env}?             (`table`) Environment flags to pass to the LSP |       • {cmd_env}?             (`table`) Environment variables passed to the | ||||||
|                                on spawn. Must be specified using a table. |                                LSP process on spawn. Non-string values are | ||||||
|                                Non-string values are coerced to string. |                                coerced to string. Example: >lua | ||||||
|                                Example: >lua |                                    { PORT = 8080; HOST = '0.0.0.0'; } | ||||||
|                                    { PORT = 8080; HOST = "0.0.0.0"; } |  | ||||||
| < | < | ||||||
|  |       • {commands}?            (`table<string,fun(command: lsp.Command, ctx: table)>`) | ||||||
|  |                                Client commands. Map of command names to | ||||||
|  |                                user-defined functions. Commands passed to | ||||||
|  |                                `start()` take precedence over the global | ||||||
|  |                                command registry. Each key must be a unique | ||||||
|  |                                command name, and the value is a function which | ||||||
|  |                                is called if any LSP action (code action, code | ||||||
|  |                                lenses, …) triggers the command. | ||||||
|       • {detached}?            (`boolean`, default: true) Daemonize the server |       • {detached}?            (`boolean`, default: true) Daemonize the server | ||||||
|                                process so that it runs in a separate process |                                process so that it runs in a separate process | ||||||
|                                group from Nvim. Nvim will shutdown the process |                                group from Nvim. Nvim will shutdown the process | ||||||
|                                on exit, but if Nvim fails to exit cleanly this |                                on exit, but if Nvim fails to exit cleanly this | ||||||
|                                could leave behind orphaned server processes. |                                could leave behind orphaned server processes. | ||||||
|       • {workspace_folders}?   (`lsp.WorkspaceFolder[]`) List of workspace |  | ||||||
|                                folders passed to the language server. For |  | ||||||
|                                backwards compatibility rootUri and rootPath |  | ||||||
|                                will be derived from the first workspace folder |  | ||||||
|                                in this list. See `workspaceFolders` in the LSP |  | ||||||
|                                spec. |  | ||||||
|       • {workspace_required}?  (`boolean`) (default false) Server requires a |  | ||||||
|                                workspace (no "single file" support). Note: |  | ||||||
|                                Without a workspace, cross-file features |  | ||||||
|                                (navigation, hover) may or may not work |  | ||||||
|                                depending on the language server, even if the |  | ||||||
|                                server doesn't require a workspace. |  | ||||||
|       • {capabilities}?        (`lsp.ClientCapabilities`) Map overriding the |  | ||||||
|                                default capabilities defined by |  | ||||||
|                                |vim.lsp.protocol.make_client_capabilities()|, |  | ||||||
|                                passed to the language server on |  | ||||||
|                                initialization. Hint: use |  | ||||||
|                                make_client_capabilities() and modify its |  | ||||||
|                                result. |  | ||||||
|                                • Note: To send an empty dictionary use |  | ||||||
|                                  |vim.empty_dict()|, else it will be encoded |  | ||||||
|                                  as an array. |  | ||||||
|       • {handlers}?            (`table<string,function>`) Map of language |  | ||||||
|                                server method names to |lsp-handler| |  | ||||||
|       • {settings}?            (`lsp.LSPObject`) Map with language server |  | ||||||
|                                specific settings. See the {settings} in |  | ||||||
|                                |vim.lsp.Client|. |  | ||||||
|       • {commands}?            (`table<string,fun(command: lsp.Command, ctx: table)>`) |  | ||||||
|                                Table that maps string of clientside commands |  | ||||||
|                                to user-defined functions. Commands passed to |  | ||||||
|                                `start()` take precedence over the global |  | ||||||
|                                command registry. Each key must be a unique |  | ||||||
|                                command name, and the value is a function which |  | ||||||
|                                is called if any LSP action (code action, code |  | ||||||
|                                lenses, ...) triggers the command. |  | ||||||
|       • {init_options}?        (`lsp.LSPObject`) Values to pass in the |  | ||||||
|                                initialization request as |  | ||||||
|                                `initializationOptions`. See `initialize` in |  | ||||||
|                                the LSP spec. |  | ||||||
|       • {name}?                (`string`, default: client-id) Name in log |  | ||||||
|                                messages. |  | ||||||
|       • {get_language_id}?     (`fun(bufnr: integer, filetype: string): string`) |  | ||||||
|                                Language ID as string. Defaults to the buffer |  | ||||||
|                                filetype. |  | ||||||
|       • {offset_encoding}?     (`'utf-8'|'utf-16'|'utf-32'`) Called "position |  | ||||||
|                                encoding" in LSP spec, the encoding that the |  | ||||||
|                                LSP server expects. Client does not verify this |  | ||||||
|                                is correct. |  | ||||||
|       • {on_error}?            (`fun(code: integer, err: string)`) Callback |  | ||||||
|                                invoked when the client operation throws an |  | ||||||
|                                error. `code` is a number describing the error. |  | ||||||
|                                Other arguments may be passed depending on the |  | ||||||
|                                error kind. See `vim.lsp.rpc.client_errors` for |  | ||||||
|                                possible errors. Use |  | ||||||
|                                `vim.lsp.rpc.client_errors[code]` to get |  | ||||||
|                                human-friendly name. |  | ||||||
|       • {before_init}?         (`fun(params: lsp.InitializeParams, config: vim.lsp.ClientConfig)`) |  | ||||||
|                                Callback invoked before the LSP "initialize" |  | ||||||
|                                phase, where `params` contains the parameters |  | ||||||
|                                being sent to the server and `config` is the |  | ||||||
|                                config that was passed to |vim.lsp.start()|. |  | ||||||
|                                You can use this to modify parameters before |  | ||||||
|                                they are sent. |  | ||||||
|       • {on_init}?             (`elem_or_list<fun(client: vim.lsp.Client, init_result: lsp.InitializeResult)>`) |  | ||||||
|                                Callback invoked after LSP "initialize", where |  | ||||||
|                                `result` is a table of `capabilities` and |  | ||||||
|                                anything else the server may send. For example, |  | ||||||
|                                clangd sends `init_result.offsetEncoding` if |  | ||||||
|                                `capabilities.offsetEncoding` was sent to it. |  | ||||||
|                                You can only modify the |  | ||||||
|                                `client.offset_encoding` here before any |  | ||||||
|                                notifications are sent. |  | ||||||
|       • {on_exit}?             (`elem_or_list<fun(code: integer, signal: integer, client_id: integer)>`) |  | ||||||
|                                Callback invoked on client exit. |  | ||||||
|                                • code: exit code of the process |  | ||||||
|                                • signal: number describing the signal used to |  | ||||||
|                                  terminate (if any) |  | ||||||
|                                • client_id: client handle |  | ||||||
|       • {on_attach}?           (`elem_or_list<fun(client: vim.lsp.Client, bufnr: integer)>`) |  | ||||||
|                                Callback invoked when client attaches to a |  | ||||||
|                                buffer. |  | ||||||
|       • {trace}?               (`'off'|'messages'|'verbose'`, default: "off") |  | ||||||
|                                Passed directly to the language server in the |  | ||||||
|                                initialize request. Invalid/empty values will |  | ||||||
|       • {flags}?               (`table`) A table with flags for the client. |       • {flags}?               (`table`) A table with flags for the client. | ||||||
|                                The current (experimental) flags are: |                                The current (experimental) flags are: | ||||||
|                                • {allow_incremental_sync}? (`boolean`, |                                • {allow_incremental_sync}? (`boolean`, | ||||||
| @@ -1380,9 +1302,72 @@ Lua module: vim.lsp.client                                        *lsp-client* | |||||||
|                                  request before sending kill -15. If set to |                                  request before sending kill -15. If set to | ||||||
|                                  false, nvim exits immediately after sending |                                  false, nvim exits immediately after sending | ||||||
|                                  the "shutdown" request to the server. |                                  the "shutdown" request to the server. | ||||||
|  |       • {get_language_id}?     (`fun(bufnr: integer, filetype: string): string`) | ||||||
|  |                                Language ID as string. Defaults to the buffer | ||||||
|  |                                filetype. | ||||||
|  |       • {handlers}?            (`table<string,function>`) Map of LSP method | ||||||
|  |                                names to |lsp-handler|s. | ||||||
|  |       • {init_options}?        (`lsp.LSPObject`) Values to pass in the | ||||||
|  |                                initialization request as | ||||||
|  |                                `initializationOptions`. See `initialize` in | ||||||
|  |                                the LSP spec. | ||||||
|  |       • {name}?                (`string`) (default: client-id) Name in logs | ||||||
|  |                                and user messages. | ||||||
|  |       • {offset_encoding}?     (`'utf-8'|'utf-16'|'utf-32'`) Called "position | ||||||
|  |                                encoding" in LSP spec. The encoding that the | ||||||
|  |                                LSP server expects, used for communication. Not | ||||||
|  |                                validated. Can be modified in `on_init` before | ||||||
|  |                                text is sent to the server. | ||||||
|  |       • {on_attach}?           (`elem_or_list<fun(client: vim.lsp.Client, bufnr: integer)>`) | ||||||
|  |                                Callback invoked when client attaches to a | ||||||
|  |                                buffer. | ||||||
|  |       • {on_error}?            (`fun(code: integer, err: string)`) Callback | ||||||
|  |                                invoked when the client operation throws an | ||||||
|  |                                error. `code` is a number describing the error. | ||||||
|  |                                Other arguments may be passed depending on the | ||||||
|  |                                error kind. See `vim.lsp.rpc.client_errors` for | ||||||
|  |                                possible errors. Use | ||||||
|  |                                `vim.lsp.rpc.client_errors[code]` to get | ||||||
|  |                                human-friendly name. | ||||||
|  |       • {on_exit}?             (`elem_or_list<fun(code: integer, signal: integer, client_id: integer)>`) | ||||||
|  |                                Callback invoked on client exit. | ||||||
|  |                                • code: exit code of the process | ||||||
|  |                                • signal: number describing the signal used to | ||||||
|  |                                  terminate (if any) | ||||||
|  |                                • client_id: client handle | ||||||
|  |       • {on_init}?             (`elem_or_list<fun(client: vim.lsp.Client, init_result: lsp.InitializeResult)>`) | ||||||
|  |                                Callback invoked after LSP "initialize", where | ||||||
|  |                                `result` is a table of `capabilities` and | ||||||
|  |                                anything else the server may send. For example, | ||||||
|  |                                clangd sends `init_result.offsetEncoding` if | ||||||
|  |                                `capabilities.offsetEncoding` was sent to it. | ||||||
|  |                                You can only modify the | ||||||
|  |                                `client.offset_encoding` here before any | ||||||
|  |                                notifications are sent. | ||||||
|       • {root_dir}?            (`string`) Directory where the LSP server will |       • {root_dir}?            (`string`) Directory where the LSP server will | ||||||
|                                base its workspaceFolders, rootUri, and |                                base its workspaceFolders, rootUri, and | ||||||
|                                rootPath on initialization. |                                rootPath on initialization. | ||||||
|  |       • {settings}?            (`lsp.LSPObject`) Map of language | ||||||
|  |                                server-specific settings, decided by the | ||||||
|  |                                client. Sent to the LS if requested via | ||||||
|  |                                `workspace/configuration`. Keys are | ||||||
|  |                                case-sensitive. | ||||||
|  |       • {trace}?               (`'off'|'messages'|'verbose'`, default: "off") | ||||||
|  |                                Passed directly to the language server in the | ||||||
|  |                                initialize request. Invalid/empty values will | ||||||
|  |       • {workspace_folders}?   (`lsp.WorkspaceFolder[]`) List of workspace | ||||||
|  |                                folders passed to the language server. For | ||||||
|  |                                backwards compatibility rootUri and rootPath | ||||||
|  |                                are derived from the first workspace folder in | ||||||
|  |                                this list. Can be `null` if the client supports | ||||||
|  |                                workspace folders but none are configured. See | ||||||
|  |                                `workspaceFolders` in LSP spec. | ||||||
|  |       • {workspace_required}?  (`boolean`) (default false) Server requires a | ||||||
|  |                                workspace (no "single file" support). Note: | ||||||
|  |                                Without a workspace, cross-file features | ||||||
|  |                                (navigation, hover) may or may not work | ||||||
|  |                                depending on the language server, even if the | ||||||
|  |                                server doesn't require a workspace. | ||||||
|  |  | ||||||
|  |  | ||||||
| Client:cancel_request({id})                          *Client:cancel_request()* | Client:cancel_request({id})                          *Client:cancel_request()* | ||||||
|   | |||||||
| @@ -171,7 +171,7 @@ added. But visually, this small bit of sugar gets reasonably close to a | |||||||
|  |  | ||||||
|                                                                    *lua-regex* |                                                                    *lua-regex* | ||||||
| Lua intentionally does not support regular expressions, instead it has limited | Lua intentionally does not support regular expressions, instead it has limited | ||||||
| |lua-patterns| which avoid the performance pitfalls of extended regex. Lua | |lua-pattern|s which avoid the performance pitfalls of extended regex. Lua | ||||||
| scripts can also use Vim regex via |vim.regex()|. | scripts can also use Vim regex via |vim.regex()|. | ||||||
|  |  | ||||||
| Examples: >lua | Examples: >lua | ||||||
| @@ -2022,7 +2022,7 @@ vim.gsplit({s}, {sep}, {opts})                                  *vim.gsplit()* | |||||||
|     See also: ~ |     See also: ~ | ||||||
|       • |string.gmatch()| |       • |string.gmatch()| | ||||||
|       • |vim.split()| |       • |vim.split()| | ||||||
|       • |lua-patterns| |       • |lua-pattern|s | ||||||
|       • https://www.lua.org/pil/20.2.html |       • https://www.lua.org/pil/20.2.html | ||||||
|       • http://lua-users.org/wiki/StringLibraryTutorial |       • http://lua-users.org/wiki/StringLibraryTutorial | ||||||
|  |  | ||||||
| @@ -2115,7 +2115,7 @@ vim.list_slice({list}, {start}, {finish})                   *vim.list_slice()* | |||||||
|         (`any[]`) Copy of table sliced from start to finish (inclusive) |         (`any[]`) Copy of table sliced from start to finish (inclusive) | ||||||
|  |  | ||||||
| vim.pesc({s})                                                     *vim.pesc()* | vim.pesc({s})                                                     *vim.pesc()* | ||||||
|     Escapes magic chars in |lua-patterns|. |     Escapes magic chars in |lua-pattern|s. | ||||||
|  |  | ||||||
|     Parameters: ~ |     Parameters: ~ | ||||||
|       • {s}  (`string`) String to escape |       • {s}  (`string`) String to escape | ||||||
| @@ -2370,7 +2370,7 @@ vim.trim({s})                                                     *vim.trim()* | |||||||
|         (`string`) String with whitespace removed from its beginning and end |         (`string`) String with whitespace removed from its beginning and end | ||||||
|  |  | ||||||
|     See also: ~ |     See also: ~ | ||||||
|       • |lua-patterns| |       • |lua-pattern|s | ||||||
|       • https://www.lua.org/pil/20.2.html |       • https://www.lua.org/pil/20.2.html | ||||||
|  |  | ||||||
|                                                               *vim.validate()* |                                                               *vim.validate()* | ||||||
| @@ -2670,7 +2670,7 @@ vim.filetype.add({filetypes})                             *vim.filetype.add()* | |||||||
|     Filetype mappings can be added either by extension or by filename (either |     Filetype mappings can be added either by extension or by filename (either | ||||||
|     the "tail" or the full file path). The full file path is checked first, |     the "tail" or the full file path). The full file path is checked first, | ||||||
|     followed by the file name. If a match is not found using the filename, |     followed by the file name. If a match is not found using the filename, | ||||||
|     then the filename is matched against the list of |lua-patterns| (sorted by |     then the filename is matched against the list of |lua-pattern|s (sorted by | ||||||
|     priority) until a match is found. Lastly, if pattern matching does not |     priority) until a match is found. Lastly, if pattern matching does not | ||||||
|     find a filetype, then the file extension is used. |     find a filetype, then the file extension is used. | ||||||
|  |  | ||||||
|   | |||||||
| @@ -4150,7 +4150,7 @@ string.upper({s})                                               *string.upper()* | |||||||
|         locale. |         locale. | ||||||
|  |  | ||||||
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ||||||
| 5.4.1  Patterns                                 *lua-pattern* *lua-patterns* | 5.4.1  Patterns                                                  *lua-pattern* | ||||||
|  |  | ||||||
| A character class is used to represent a set of characters. The following | A character class is used to represent a set of characters. The following | ||||||
| combinations are allowed in describing a character class: | combinations are allowed in describing a character class: | ||||||
|   | |||||||
| @@ -120,7 +120,7 @@ The following predicates are built in: | |||||||
|         match. |         match. | ||||||
|  |  | ||||||
|     `lua-match?`                              *treesitter-predicate-lua-match?* |     `lua-match?`                              *treesitter-predicate-lua-match?* | ||||||
|          Match |lua-patterns| against the text corresponding to a node, |          Match |lua-pattern|s against the text corresponding to a node, | ||||||
|          similar to `match?` |          similar to `match?` | ||||||
|  |  | ||||||
|     `any-lua-match?`                      *treesitter-predicate-any-lua-match?* |     `any-lua-match?`                      *treesitter-predicate-any-lua-match?* | ||||||
|   | |||||||
| @@ -2605,7 +2605,7 @@ end | |||||||
| --- Filetype mappings can be added either by extension or by filename (either | --- Filetype mappings can be added either by extension or by filename (either | ||||||
| --- the "tail" or the full file path). The full file path is checked first, | --- the "tail" or the full file path). The full file path is checked first, | ||||||
| --- followed by the file name. If a match is not found using the filename, then | --- followed by the file name. If a match is not found using the filename, then | ||||||
| --- the filename is matched against the list of |lua-patterns| (sorted by priority) | --- the filename is matched against the list of |lua-pattern|s (sorted by priority) | ||||||
| --- until a match is found. Lastly, if pattern matching does not find a | --- until a match is found. Lastly, if pattern matching does not find a | ||||||
| --- filetype, then the file extension is used. | --- filetype, then the file extension is used. | ||||||
| --- | --- | ||||||
|   | |||||||
| @@ -277,25 +277,24 @@ end | |||||||
| --- See `cmd` in [vim.lsp.ClientConfig]. | --- See `cmd` in [vim.lsp.ClientConfig]. | ||||||
| --- @field cmd? string[]|fun(dispatchers: vim.lsp.rpc.Dispatchers): vim.lsp.rpc.PublicClient | --- @field cmd? string[]|fun(dispatchers: vim.lsp.rpc.Dispatchers): vim.lsp.rpc.PublicClient | ||||||
| --- | --- | ||||||
| --- Filetypes the client will attach to, if activated by `vim.lsp.enable()`. | --- Filetypes the client will attach to, if activated by `vim.lsp.enable()`. If not provided, the | ||||||
| --- If not provided, then the client will attach to all filetypes. | --- client will attach to all filetypes. | ||||||
| --- @field filetypes? string[] | --- @field filetypes? string[] | ||||||
| --- | --- | ||||||
| --- Directory markers (.e.g. '.git/') where the LSP server will base its workspaceFolders, rootUri, | --- Predicate which decides if a client should be re-used. Used on all running clients. The default | ||||||
| --- and rootPath on initialization. Unused if `root_dir` is provided. | --- implementation re-uses a client if name and root_dir matches. | ||||||
| --- @field root_markers? string[] | --- @field reuse_client? fun(client: vim.lsp.Client, config: vim.lsp.ClientConfig): boolean | ||||||
| --- | --- | ||||||
| --- [lsp-root_dir()]() Directory where the LSP server will base its workspaceFolders, rootUri, and | --- [lsp-root_dir()]() Directory where the LSP server will base its workspaceFolders, rootUri, and | ||||||
| --- rootPath on initialization. The function form receives a buffer number and `on_dir` callback, | --- rootPath on initialization. The function form receives a buffer number and `on_dir` callback | ||||||
| --- which must be called to provide root_dir as a string. LSP will not be activated for the buffer | --- which it must call to provide root_dir, or LSP will not be activated for the buffer. Thus | ||||||
| --- unless `on_dir` is called; thus a `root_dir()` function can dynamically decide whether to | --- a `root_dir()` function can dynamically decide per-buffer whether to activate (or skip) LSP. See | ||||||
| --- activate (or skip) LSP per-buffer. See example at |vim.lsp.enable()|. | --- example at |vim.lsp.enable()|. | ||||||
| --- @field root_dir? string|fun(bufnr: integer, on_dir:fun(root_dir?:string)) | --- @field root_dir? string|fun(bufnr: integer, on_dir:fun(root_dir?:string)) | ||||||
| --- | --- | ||||||
| --- Predicate used to decide if a client should be re-used. Used on all | --- Directory markers (e.g. ".git/", "package.json") used to decide `root_dir`. Unused if `root_dir` | ||||||
| --- running clients. The default implementation re-uses a client if name and | --- is provided. | ||||||
| --- root_dir matches. | --- @field root_markers? string[] | ||||||
| --- @field reuse_client? fun(client: vim.lsp.Client, config: vim.lsp.ClientConfig): boolean |  | ||||||
|  |  | ||||||
| --- Update the configuration for an LSP client. | --- Update the configuration for an LSP client. | ||||||
| --- | --- | ||||||
|   | |||||||
| @@ -30,6 +30,19 @@ local validate = vim.validate | |||||||
| --- @field exit_timeout integer|false | --- @field exit_timeout integer|false | ||||||
|  |  | ||||||
| --- @class vim.lsp.ClientConfig | --- @class vim.lsp.ClientConfig | ||||||
|  | --- | ||||||
|  | --- Callback invoked before the LSP "initialize" phase, where `params` contains the parameters | ||||||
|  | --- being sent to the server and `config` is the config that was passed to |vim.lsp.start()|. | ||||||
|  | --- You can use this to modify parameters before they are sent. | ||||||
|  | --- @field before_init? fun(params: lsp.InitializeParams, config: vim.lsp.ClientConfig) | ||||||
|  | --- | ||||||
|  | --- Map overriding the default capabilities defined by |vim.lsp.protocol.make_client_capabilities()|, | ||||||
|  | --- passed to the language server on initialization. Hint: use make_client_capabilities() and modify | ||||||
|  | --- its result. | ||||||
|  | --- - Note: To send an empty dictionary use |vim.empty_dict()|, else it will be encoded as an | ||||||
|  | ---   array. | ||||||
|  | --- @field capabilities? lsp.ClientCapabilities | ||||||
|  | --- | ||||||
| --- command string[] that launches the language | --- command string[] that launches the language | ||||||
| --- server (treated as in |jobstart()|, must be absolute or on `$PATH`, shell constructs like | --- server (treated as in |jobstart()|, must be absolute or on `$PATH`, shell constructs like | ||||||
| --- "~" are not expanded), or function that creates an RPC client. Function receives | --- "~" are not expanded), or function that creates an RPC client. Function receives | ||||||
| @@ -43,125 +56,129 @@ local validate = vim.validate | |||||||
| --- (default: cwd) | --- (default: cwd) | ||||||
| --- @field cmd_cwd? string | --- @field cmd_cwd? string | ||||||
| --- | --- | ||||||
| --- Environment flags to pass to the LSP on spawn. | --- Environment variables passed to the LSP process on spawn. Non-string values are coerced to | ||||||
| --- Must be specified using a table. | --- string. | ||||||
| --- Non-string values are coerced to string. |  | ||||||
| --- Example: | --- Example: | ||||||
| --- ```lua | --- ```lua | ||||||
| --- { PORT = 8080; HOST = "0.0.0.0"; } | --- { PORT = 8080; HOST = '0.0.0.0'; } | ||||||
| --- ``` | --- ``` | ||||||
| --- @field cmd_env? table | --- @field cmd_env? table | ||||||
| --- | --- | ||||||
|  | --- Client commands. Map of command names to user-defined functions. Commands passed to `start()` | ||||||
|  | --- take precedence over the global command registry. Each key must be a unique command name, and | ||||||
|  | --- the value is a function which is called if any LSP action (code action, code lenses, …) triggers | ||||||
|  | --- the command. | ||||||
|  | --- @field commands? table<string,fun(command: lsp.Command, ctx: table)> | ||||||
|  | --- | ||||||
| --- Daemonize the server process so that it runs in a separate process group from Nvim. | --- Daemonize the server process so that it runs in a separate process group from Nvim. | ||||||
| --- Nvim will shutdown the process on exit, but if Nvim fails to exit cleanly this could leave | --- Nvim will shutdown the process on exit, but if Nvim fails to exit cleanly this could leave | ||||||
| --- behind orphaned server processes. | --- behind orphaned server processes. | ||||||
| --- (default: true) | --- (default: true) | ||||||
| --- @field detached? boolean | --- @field detached? boolean | ||||||
| --- | --- | ||||||
| --- List of workspace folders passed to the language server. | --- A table with flags for the client. The current (experimental) flags are: | ||||||
| --- For backwards compatibility rootUri and rootPath will be derived from the first workspace | --- @field flags? vim.lsp.Client.Flags | ||||||
| --- folder in this list. See `workspaceFolders` in the LSP spec. |  | ||||||
| --- @field workspace_folders? lsp.WorkspaceFolder[] |  | ||||||
| --- | --- | ||||||
| --- (default false) Server requires a workspace (no "single file" support). Note: Without | --- Language ID as string. Defaults to the buffer filetype. | ||||||
| --- a workspace, cross-file features (navigation, hover) may or may not work depending on the | --- @field get_language_id? fun(bufnr: integer, filetype: string): string | ||||||
| --- language server, even if the server doesn't require a workspace. |  | ||||||
| --- @field workspace_required? boolean |  | ||||||
| --- | --- | ||||||
| --- Map overriding the default capabilities defined by |vim.lsp.protocol.make_client_capabilities()|, | --- Map of LSP method names to |lsp-handler|s. | ||||||
| --- passed to the language server on initialization. Hint: use make_client_capabilities() and modify |  | ||||||
| --- its result. |  | ||||||
| --- - Note: To send an empty dictionary use |vim.empty_dict()|, else it will be encoded as an |  | ||||||
| ---   array. |  | ||||||
| --- @field capabilities? lsp.ClientCapabilities |  | ||||||
| --- |  | ||||||
| --- Map of language server method names to |lsp-handler| |  | ||||||
| --- @field handlers? table<string,function> | --- @field handlers? table<string,function> | ||||||
| --- | --- | ||||||
| --- Map with language server specific settings. |  | ||||||
| --- See the {settings} in |vim.lsp.Client|. |  | ||||||
| --- @field settings? lsp.LSPObject |  | ||||||
| --- |  | ||||||
| --- Table that maps string of clientside commands to user-defined functions. |  | ||||||
| --- Commands passed to `start()` take precedence over the global command registry. Each key |  | ||||||
| --- must be a unique command name, and the value is a function which is called if any LSP action |  | ||||||
| --- (code action, code lenses, ...) triggers the command. |  | ||||||
| --- @field commands? table<string,fun(command: lsp.Command, ctx: table)> |  | ||||||
| --- |  | ||||||
| --- Values to pass in the initialization request as `initializationOptions`. See `initialize` in | --- Values to pass in the initialization request as `initializationOptions`. See `initialize` in | ||||||
| --- the LSP spec. | --- the LSP spec. | ||||||
| --- @field init_options? lsp.LSPObject | --- @field init_options? lsp.LSPObject | ||||||
| --- | --- | ||||||
| --- Name in log messages. | --- (default: client-id) Name in logs and user messages. | ||||||
| --- (default: client-id) |  | ||||||
| --- @field name? string | --- @field name? string | ||||||
| --- | --- | ||||||
| --- Language ID as string. Defaults to the buffer filetype. | --- Called "position encoding" in LSP spec. The encoding that the LSP server expects, used for | ||||||
| --- @field get_language_id? fun(bufnr: integer, filetype: string): string | --- communication. Not validated. Can be modified in `on_init` before text is sent to the server. | ||||||
| --- |  | ||||||
| --- Called "position encoding" in LSP spec, the encoding that the LSP server expects. |  | ||||||
| --- Client does not verify this is correct. |  | ||||||
| --- @field offset_encoding? 'utf-8'|'utf-16'|'utf-32' | --- @field offset_encoding? 'utf-8'|'utf-16'|'utf-32' | ||||||
| --- | --- | ||||||
|  | --- Callback invoked when client attaches to a buffer. | ||||||
|  | --- @field on_attach? elem_or_list<fun(client: vim.lsp.Client, bufnr: integer)> | ||||||
|  | --- | ||||||
| --- Callback invoked when the client operation throws an error. `code` is a number describing the error. | --- Callback invoked when the client operation throws an error. `code` is a number describing the error. | ||||||
| --- Other arguments may be passed depending on the error kind.  See `vim.lsp.rpc.client_errors` | --- Other arguments may be passed depending on the error kind.  See `vim.lsp.rpc.client_errors` | ||||||
| --- for possible errors. Use `vim.lsp.rpc.client_errors[code]` to get human-friendly name. | --- for possible errors. Use `vim.lsp.rpc.client_errors[code]` to get human-friendly name. | ||||||
| --- @field on_error? fun(code: integer, err: string) | --- @field on_error? fun(code: integer, err: string) | ||||||
| --- | --- | ||||||
| --- Callback invoked before the LSP "initialize" phase, where `params` contains the parameters |  | ||||||
| --- being sent to the server and `config` is the config that was passed to |vim.lsp.start()|. |  | ||||||
| --- You can use this to modify parameters before they are sent. |  | ||||||
| --- @field before_init? fun(params: lsp.InitializeParams, config: vim.lsp.ClientConfig) |  | ||||||
| --- |  | ||||||
| --- Callback invoked after LSP "initialize", where `result` is a table of `capabilities` and |  | ||||||
| --- anything else the server may send. For example, clangd sends `init_result.offsetEncoding` if |  | ||||||
| --- `capabilities.offsetEncoding` was sent to it. You can only modify the `client.offset_encoding` |  | ||||||
| --- here before any notifications are sent. |  | ||||||
| --- @field on_init? elem_or_list<fun(client: vim.lsp.Client, init_result: lsp.InitializeResult)> |  | ||||||
| --- |  | ||||||
| --- Callback invoked on client exit. | --- Callback invoked on client exit. | ||||||
| ---   - code: exit code of the process | ---   - code: exit code of the process | ||||||
| ---   - signal: number describing the signal used to terminate (if any) | ---   - signal: number describing the signal used to terminate (if any) | ||||||
| ---   - client_id: client handle | ---   - client_id: client handle | ||||||
| --- @field on_exit? elem_or_list<fun(code: integer, signal: integer, client_id: integer)> | --- @field on_exit? elem_or_list<fun(code: integer, signal: integer, client_id: integer)> | ||||||
| --- | --- | ||||||
| --- Callback invoked when client attaches to a buffer. | --- Callback invoked after LSP "initialize", where `result` is a table of `capabilities` and | ||||||
| --- @field on_attach? elem_or_list<fun(client: vim.lsp.Client, bufnr: integer)> | --- anything else the server may send. For example, clangd sends `init_result.offsetEncoding` if | ||||||
|  | --- `capabilities.offsetEncoding` was sent to it. You can only modify the `client.offset_encoding` | ||||||
|  | --- here before any notifications are sent. | ||||||
|  | --- @field on_init? elem_or_list<fun(client: vim.lsp.Client, init_result: lsp.InitializeResult)> | ||||||
|  | --- | ||||||
|  | --- Directory where the LSP server will base its workspaceFolders, rootUri, and rootPath on initialization. | ||||||
|  | --- @field root_dir? string | ||||||
|  | --- | ||||||
|  | --- Map of language server-specific settings, decided by the client. Sent to the LS if requested via | ||||||
|  | --- `workspace/configuration`. Keys are case-sensitive. | ||||||
|  | --- @field settings? lsp.LSPObject | ||||||
| --- | --- | ||||||
| --- Passed directly to the language server in the initialize request. Invalid/empty values will | --- Passed directly to the language server in the initialize request. Invalid/empty values will | ||||||
| --- (default: "off") | --- (default: "off") | ||||||
| --- @field trace? 'off'|'messages'|'verbose' | --- @field trace? 'off'|'messages'|'verbose' | ||||||
| --- | --- | ||||||
| --- A table with flags for the client. The current (experimental) flags are: | --- List of workspace folders passed to the language server. For backwards compatibility rootUri and | ||||||
| --- @field flags? vim.lsp.Client.Flags | --- rootPath are derived from the first workspace folder in this list. Can be `null` if the client | ||||||
|  | --- supports workspace folders but none are configured. See `workspaceFolders` in LSP spec. | ||||||
|  | --- @field workspace_folders? lsp.WorkspaceFolder[] | ||||||
| --- | --- | ||||||
| --- Directory where the LSP server will base its workspaceFolders, rootUri, and rootPath on initialization. | --- (default false) Server requires a workspace (no "single file" support). Note: Without | ||||||
| --- @field root_dir? string | --- a workspace, cross-file features (navigation, hover) may or may not work depending on the | ||||||
|  | --- language server, even if the server doesn't require a workspace. | ||||||
|  | --- @field workspace_required? boolean | ||||||
|  |  | ||||||
| --- @class vim.lsp.Client.Progress: vim.Ringbuf<{token: integer|string, value: any}> | --- @class vim.lsp.Client.Progress: vim.Ringbuf<{token: integer|string, value: any}> | ||||||
| --- @field pending table<lsp.ProgressToken,lsp.LSPAny> | --- @field pending table<lsp.ProgressToken,lsp.LSPAny> | ||||||
|  |  | ||||||
| --- @class vim.lsp.Client | --- @class vim.lsp.Client | ||||||
| --- | --- | ||||||
|  | --- @field attached_buffers table<integer,true> | ||||||
|  | --- | ||||||
|  | --- Capabilities provided by the client (editor or tool), at startup. | ||||||
|  | --- @field capabilities lsp.ClientCapabilities | ||||||
|  | --- | ||||||
|  | --- Client commands. See [vim.lsp.ClientConfig]. | ||||||
|  | --- @field commands table<string,fun(command: lsp.Command, ctx: table)> | ||||||
|  | --- | ||||||
|  | --- Copy of the config passed to |vim.lsp.start()|. | ||||||
|  | --- @field config vim.lsp.ClientConfig | ||||||
|  | --- | ||||||
|  | --- Capabilities provided at runtime (after startup). | ||||||
|  | --- @field dynamic_capabilities lsp.DynamicCapabilities | ||||||
|  | --- | ||||||
|  | --- A table with flags for the client. The current (experimental) flags are: | ||||||
|  | --- @field flags vim.lsp.Client.Flags | ||||||
|  | --- | ||||||
|  | --- See [vim.lsp.ClientConfig]. | ||||||
|  | --- @field get_language_id fun(bufnr: integer, filetype: string): string | ||||||
|  | --- | ||||||
|  | --- See [vim.lsp.ClientConfig]. | ||||||
|  | --- @field handlers table<string,lsp.Handler> | ||||||
|  | --- | ||||||
| --- The id allocated to the client. | --- The id allocated to the client. | ||||||
| --- @field id integer | --- @field id integer | ||||||
| --- | --- | ||||||
| --- If a name is specified on creation, that will be used. Otherwise it is just | --- @field initialized true? | ||||||
| --- the client id. This is used for logs and messages. | --- | ||||||
|  | --- See [vim.lsp.ClientConfig]. | ||||||
| --- @field name string | --- @field name string | ||||||
| --- | --- | ||||||
| --- RPC client object, for low level interaction with the client. | --- See [vim.lsp.ClientConfig]. | ||||||
| --- See |vim.lsp.rpc.start()|. |  | ||||||
| --- @field rpc vim.lsp.rpc.PublicClient |  | ||||||
| --- |  | ||||||
| --- Called "position encoding" in LSP spec, |  | ||||||
| --- the encoding used for communicating with the server. |  | ||||||
| --- You can modify this in the `config`'s `on_init` method |  | ||||||
| --- before text is sent to the server. |  | ||||||
| --- @field offset_encoding string | --- @field offset_encoding string | ||||||
| --- | --- | ||||||
| --- The handlers used by the client as described in |lsp-handler|. | --- A ring buffer (|vim.ringbuf()|) containing progress messages | ||||||
| --- @field handlers table<string,lsp.Handler> | --- sent by the server. | ||||||
|  | --- @field progress vim.lsp.Client.Progress | ||||||
| --- | --- | ||||||
| --- The current pending requests in flight to the server. Entries are key-value | --- The current pending requests in flight to the server. Entries are key-value | ||||||
| --- pairs with the key being the request id while the value is a table with | --- pairs with the key being the request id while the value is a table with | ||||||
| @@ -171,34 +188,25 @@ local validate = vim.validate | |||||||
| --- are received from the server. | --- are received from the server. | ||||||
| --- @field requests table<integer,{ type: string, bufnr: integer, method: string}?> | --- @field requests table<integer,{ type: string, bufnr: integer, method: string}?> | ||||||
| --- | --- | ||||||
| --- copy of the table that was passed by the user | --- See [vim.lsp.ClientConfig]. | ||||||
| --- to |vim.lsp.start()|. |  | ||||||
| --- @field config vim.lsp.ClientConfig |  | ||||||
| --- |  | ||||||
| --- Response from the server sent on `initialize` describing the server's |  | ||||||
| --- capabilities. |  | ||||||
| --- @field server_capabilities lsp.ServerCapabilities? |  | ||||||
| --- |  | ||||||
| --- Response from the server sent on `initialize` describing information about |  | ||||||
| --- the server. |  | ||||||
| --- @field server_info lsp.ServerInfo? |  | ||||||
| --- |  | ||||||
| --- A ring buffer (|vim.ringbuf()|) containing progress messages |  | ||||||
| --- sent by the server. |  | ||||||
| --- @field progress vim.lsp.Client.Progress |  | ||||||
| --- |  | ||||||
| --- @field initialized true? |  | ||||||
| --- |  | ||||||
| --- 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. |  | ||||||
| --- @field workspace_folders lsp.WorkspaceFolder[]? |  | ||||||
| --- @field root_dir string? | --- @field root_dir string? | ||||||
| --- | --- | ||||||
| --- @field attached_buffers table<integer,true> | --- RPC client object, for low level interaction with the client. | ||||||
|  | --- See |vim.lsp.rpc.start()|. | ||||||
|  | --- @field rpc vim.lsp.rpc.PublicClient | ||||||
|  | --- | ||||||
|  | --- Response from the server sent on `initialize` describing the server's capabilities. | ||||||
|  | --- @field server_capabilities lsp.ServerCapabilities? | ||||||
|  | --- | ||||||
|  | --- Response from the server sent on `initialize` describing server information (e.g. version). | ||||||
|  | --- @field server_info lsp.ServerInfo? | ||||||
|  | --- | ||||||
|  | --- See [vim.lsp.ClientConfig]. | ||||||
|  | --- @field settings lsp.LSPObject | ||||||
|  | --- | ||||||
|  | --- See [vim.lsp.ClientConfig]. | ||||||
|  | --- @field workspace_folders lsp.WorkspaceFolder[]? | ||||||
| --- | --- | ||||||
| --- @field private _log_prefix string |  | ||||||
| --- | --- | ||||||
| --- Track this so that we can escalate automatically if we've already tried a | --- Track this so that we can escalate automatically if we've already tried a | ||||||
| --- graceful shutdown | --- graceful shutdown | ||||||
| @@ -208,26 +216,8 @@ local validate = vim.validate | |||||||
| --- trace = "off" | "messages" | "verbose"; | --- trace = "off" | "messages" | "verbose"; | ||||||
| --- @field private _trace 'off'|'messages'|'verbose' | --- @field private _trace 'off'|'messages'|'verbose' | ||||||
| --- | --- | ||||||
| --- Table of command name to function which is called if any LSP action |  | ||||||
| --- (code action, code lenses, ...) triggers the command. |  | ||||||
| --- Client commands take precedence over the global command registry. |  | ||||||
| --- @field commands table<string,fun(command: lsp.Command, ctx: table)> |  | ||||||
| --- |  | ||||||
| --- Map with language server specific settings. These are returned to the |  | ||||||
| --- language server if requested via `workspace/configuration`. Keys are |  | ||||||
| --- case-sensitive. |  | ||||||
| --- @field settings lsp.LSPObject |  | ||||||
| --- |  | ||||||
| --- A table with flags for the client. The current (experimental) flags are: |  | ||||||
| --- @field flags vim.lsp.Client.Flags |  | ||||||
| --- |  | ||||||
| --- @field get_language_id fun(bufnr: integer, filetype: string): string |  | ||||||
| --- |  | ||||||
| --- The capabilities provided by the client (editor or tool) |  | ||||||
| --- @field capabilities lsp.ClientCapabilities |  | ||||||
| --- @field private registrations table<string,lsp.Registration[]> | --- @field private registrations table<string,lsp.Registration[]> | ||||||
| --- @field dynamic_capabilities lsp.DynamicCapabilities | --- @field private _log_prefix string | ||||||
| --- |  | ||||||
| --- @field private _before_init_cb? vim.lsp.client.before_init_cb | --- @field private _before_init_cb? vim.lsp.client.before_init_cb | ||||||
| --- @field private _on_attach_cbs vim.lsp.client.on_attach_cb[] | --- @field private _on_attach_cbs vim.lsp.client.on_attach_cb[] | ||||||
| --- @field private _on_init_cbs vim.lsp.client.on_init_cb[] | --- @field private _on_init_cbs vim.lsp.client.on_init_cb[] | ||||||
|   | |||||||
| @@ -95,7 +95,7 @@ end | |||||||
| --- | --- | ||||||
| --- @see |string.gmatch()| | --- @see |string.gmatch()| | ||||||
| --- @see |vim.split()| | --- @see |vim.split()| | ||||||
| --- @see |lua-patterns| | --- @see |lua-pattern|s | ||||||
| --- @see https://www.lua.org/pil/20.2.html | --- @see https://www.lua.org/pil/20.2.html | ||||||
| --- @see http://lua-users.org/wiki/StringLibraryTutorial | --- @see http://lua-users.org/wiki/StringLibraryTutorial | ||||||
| --- | --- | ||||||
| @@ -784,7 +784,7 @@ end | |||||||
|  |  | ||||||
| --- Trim whitespace (Lua pattern "%s") from both sides of a string. | --- Trim whitespace (Lua pattern "%s") from both sides of a string. | ||||||
| --- | --- | ||||||
| ---@see |lua-patterns| | ---@see |lua-pattern|s | ||||||
| ---@see https://www.lua.org/pil/20.2.html | ---@see https://www.lua.org/pil/20.2.html | ||||||
| ---@param s string String to trim | ---@param s string String to trim | ||||||
| ---@return string String with whitespace removed from its beginning and end | ---@return string String with whitespace removed from its beginning and end | ||||||
| @@ -793,7 +793,7 @@ function vim.trim(s) | |||||||
|   return s:match('^%s*(.*%S)') or '' |   return s:match('^%s*(.*%S)') or '' | ||||||
| end | end | ||||||
|  |  | ||||||
| --- Escapes magic chars in |lua-patterns|. | --- Escapes magic chars in |lua-pattern|s. | ||||||
| --- | --- | ||||||
| ---@see https://github.com/rxi/lume | ---@see https://github.com/rxi/lume | ||||||
| ---@param s string String to escape | ---@param s string String to escape | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Justin M. Keyes
					Justin M. Keyes