From 3f2c1c41e6bec2615ff0a8a02fa0c7c077609a1a Mon Sep 17 00:00:00 2001 From: ian Date: Wed, 25 Mar 2026 13:58:35 +0800 Subject: [PATCH 1/4] fix(util.root): resolve bufpath for terminal windows Extract path from terminal window name such as `term:/~/.local/share/nvim/lazy/LazyVim/2062833:/usr/bin/zsh`. The path `~/.local/share/nvim/lazy/LazyVim/2062833` can locate the correct directory for the terminal windows. --- lua/lazyvim/util/root.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lua/lazyvim/util/root.lua b/lua/lazyvim/util/root.lua index 9ce96141..2afd5a86 100644 --- a/lua/lazyvim/util/root.lua +++ b/lua/lazyvim/util/root.lua @@ -67,7 +67,9 @@ function M.detectors.pattern(buf, patterns) end function M.bufpath(buf) - return M.realpath(vim.api.nvim_buf_get_name(assert(buf))) + local path = LazyVim.norm(vim.api.nvim_buf_get_name(assert(buf))) + -- Use pattern to extract path for terminal windows + return M.realpath(path and path:match("^term:/([^:]+)") or path) end function M.cwd() From f054a0240c1d8b9bf5b8cd5ef5925409d1d063de Mon Sep 17 00:00:00 2001 From: ian Date: Wed, 25 Mar 2026 14:33:28 +0800 Subject: [PATCH 2/4] Enhance bufpath for terminal paths and Windows support Refactor bufpath function to handle terminal window paths and fix duplicated driver letters on Windows. --- lua/lazyvim/util/root.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lua/lazyvim/util/root.lua b/lua/lazyvim/util/root.lua index 2afd5a86..09d2411d 100644 --- a/lua/lazyvim/util/root.lua +++ b/lua/lazyvim/util/root.lua @@ -67,9 +67,13 @@ function M.detectors.pattern(buf, patterns) end function M.bufpath(buf) - local path = LazyVim.norm(vim.api.nvim_buf_get_name(assert(buf))) - -- Use pattern to extract path for terminal windows - return M.realpath(path and path:match("^term:/([^:]+)") or path) + local name = LazyVim.norm(vim.api.nvim_buf_get_name(assert(buf))) + local path = name and name:match("^term:/(.+/%d+):") or name + -- fix duplicated driver letters for Windows + if vim.fn.has("win32") == 1 and path and path:find(":/.*:/") then + path = path:gsub("^.-%:/", "", 1) + end + return LazyVim.root.realpath(path) end function M.cwd() From a78c5286e6c68cfbdcee7a4c44d67a3615be056c Mon Sep 17 00:00:00 2001 From: ian Date: Wed, 25 Mar 2026 14:34:42 +0800 Subject: [PATCH 3/4] Replace LazyVim.root.realpath with M.realpath --- lua/lazyvim/util/root.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/util/root.lua b/lua/lazyvim/util/root.lua index 09d2411d..d2e08e03 100644 --- a/lua/lazyvim/util/root.lua +++ b/lua/lazyvim/util/root.lua @@ -73,7 +73,7 @@ function M.bufpath(buf) if vim.fn.has("win32") == 1 and path and path:find(":/.*:/") then path = path:gsub("^.-%:/", "", 1) end - return LazyVim.root.realpath(path) + return M.realpath(path) end function M.cwd() From 648ff3849b9a0433436c08c72aaec397686f4706 Mon Sep 17 00:00:00 2001 From: ian Date: Thu, 26 Mar 2026 08:42:15 +0800 Subject: [PATCH 4/4] Update lua/lazyvim/util/root.lua Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- lua/lazyvim/util/root.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/lazyvim/util/root.lua b/lua/lazyvim/util/root.lua index d2e08e03..56ab1b1c 100644 --- a/lua/lazyvim/util/root.lua +++ b/lua/lazyvim/util/root.lua @@ -69,7 +69,7 @@ end function M.bufpath(buf) local name = LazyVim.norm(vim.api.nvim_buf_get_name(assert(buf))) local path = name and name:match("^term:/(.+/%d+):") or name - -- fix duplicated driver letters for Windows + -- fix duplicated drive letters for Windows if vim.fn.has("win32") == 1 and path and path:find(":/.*:/") then path = path:gsub("^.-%:/", "", 1) end