aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Fußenegger <mfussenegger@users.noreply.github.com>2024-05-25 21:22:41 +0200
committerGitHub <noreply@github.com>2024-05-25 21:22:41 +0200
commitf03b1622ad1b8e2df16504631f05e7577e217854 (patch)
treeb0adf8a80c474b861598a96ad2ace17638e3c62f
parent520c2657bb6832dc527bff94f313a1cc458238a4 (diff)
downloadrneovim-f03b1622ad1b8e2df16504631f05e7577e217854.tar.gz
rneovim-f03b1622ad1b8e2df16504631f05e7577e217854.tar.bz2
rneovim-f03b1622ad1b8e2df16504631f05e7577e217854.zip
fix(lsp): handle nil root_dir in health check (#29007)
The root directory could show up as something like: Root directory: ~/path/to/cwd/v:null Despite being `nil`
-rw-r--r--runtime/doc/lsp.txt2
-rw-r--r--runtime/lua/vim/lsp/client.lua3
-rw-r--r--runtime/lua/vim/lsp/health.lua5
3 files changed, 6 insertions, 4 deletions
diff --git a/runtime/doc/lsp.txt b/runtime/doc/lsp.txt
index 50fffca497..a66b577b11 100644
--- a/runtime/doc/lsp.txt
+++ b/runtime/doc/lsp.txt
@@ -996,7 +996,7 @@ Lua module: vim.lsp.client *lsp-client*
if the client supports workspace folders. It
can be `null` if the client supports workspace
folders but none are configured.
- • {root_dir} (`string`)
+ • {root_dir} (`string?`)
• {attached_buffers} (`table<integer,true>`)
• {commands} (`table<string,fun(command: lsp.Command, ctx: table)>`)
Table of command name to function which is
diff --git a/runtime/lua/vim/lsp/client.lua b/runtime/lua/vim/lsp/client.lua
index 4beb7fefda..58ea7d02b3 100644
--- a/runtime/lua/vim/lsp/client.lua
+++ b/runtime/lua/vim/lsp/client.lua
@@ -182,7 +182,7 @@ local validate = vim.validate
--- 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>
---
@@ -470,7 +470,6 @@ function Client.create(config)
_on_exit_cbs = ensure_list(config.on_exit),
_on_attach_cbs = ensure_list(config.on_attach),
_on_error_cb = config.on_error,
- _root_dir = config.root_dir,
_trace = get_trace(config.trace),
--- Contains $/progress report messages.
diff --git a/runtime/lua/vim/lsp/health.lua b/runtime/lua/vim/lsp/health.lua
index b5dc710cc6..ffe595ab37 100644
--- a/runtime/lua/vim/lsp/health.lua
+++ b/runtime/lua/vim/lsp/health.lua
@@ -41,7 +41,10 @@ local function check_active_clients()
end
report_info(table.concat({
string.format('%s (id: %d)', client.name, client.id),
- string.format(' Root directory: %s', vim.fn.fnamemodify(client.root_dir, ':~')),
+ string.format(
+ ' Root directory: %s',
+ client.root_dir and vim.fn.fnamemodify(client.root_dir, ':~') or nil
+ ),
string.format(' Command: %s', cmd),
string.format(' Settings: %s', vim.inspect(client.settings, { newline = '\n ' })),
string.format(