aboutsummaryrefslogtreecommitdiffstats
path: root/lua/lspconfig/util.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/lspconfig/util.lua')
-rw-r--r--lua/lspconfig/util.lua19
1 files changed, 11 insertions, 8 deletions
diff --git a/lua/lspconfig/util.lua b/lua/lspconfig/util.lua
index 364bf9a8..176365d1 100644
--- a/lua/lspconfig/util.lua
+++ b/lua/lspconfig/util.lua
@@ -250,19 +250,22 @@ end
function M.root_pattern(...)
local patterns = vim.tbl_flatten { ... }
- local function matcher(path)
+ return function(startpath)
+ startpath = M.strip_archive_subpath(startpath)
for _, pattern in ipairs(patterns) do
- for _, p in ipairs(vim.fn.glob(M.path.join(M.path.escape_wildcards(path), pattern), true, true)) do
- if M.path.exists(p) then
- return path
+ local match = M.search_ancestors(startpath, function(path)
+ for _, p in ipairs(vim.fn.glob(M.path.join(M.path.escape_wildcards(path), pattern), true, true)) do
+ if M.path.exists(p) then
+ return path
+ end
end
+ end)
+
+ if match ~= nil then
+ return match
end
end
end
- return function(startpath)
- startpath = M.strip_archive_subpath(startpath)
- return M.search_ancestors(startpath, matcher)
- end
end
function M.find_git_ancestor(startpath)