From e20d77deac40e6e65d036acd60aff474c0f09282 Mon Sep 17 00:00:00 2001 From: musjj <72612857+musjj@users.noreply.github.com> Date: Wed, 15 Feb 2023 10:23:02 +0700 Subject: fix(lspinfo): normalize fname path correctly (#2343) * fix(lspinfo): normalize `fname` path correctly * fix(lspinfo): fallback to `fnamemodify` and `resolve` if file doesn't exist * fix(lspinfo): normalize Windows slashes and handle double separators * nit(lspinfo): use aliases Co-authored-by: Raphael * fix: improve check --------- Co-authored-by: Raphael --- lua/lspconfig/ui/lspinfo.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'lua') diff --git a/lua/lspconfig/ui/lspinfo.lua b/lua/lspconfig/ui/lspinfo.lua index c47b30cb..ce80b70a 100644 --- a/lua/lspconfig/ui/lspinfo.lua +++ b/lua/lspconfig/ui/lspinfo.lua @@ -112,9 +112,14 @@ local function make_client_info(client, fname) local workspace_folders = fn.has 'nvim-0.9' == 1 and client.workspace_folders or client.workspaceFolders local uv = vim.loop local is_windows = uv.os_uname().version:match 'Windows' - fname = vim.fn.fnamemodify(vim.fn.resolve(fname), ':p') + fname = uv.fs_realpath(fname) or fn.fnamemodify(fn.resolve(fname), ':p') + if is_windows then + fname:gsub('%/', '%\\') + end local sep = is_windows and '\\' or '/' - local fname_parts = vim.split(fname, sep, { trimempty = true }) + local fname_parts = vim.tbl_filter(function(v) + return #v > 0 + end, vim.split(fname, sep)) if workspace_folders then for _, schema in pairs(workspace_folders) do local matched = true -- cgit v1.2.3-70-g09d2