diff options
Diffstat (limited to 'lua/lspconfig/util.lua')
| -rw-r--r-- | lua/lspconfig/util.lua | 19 |
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) |
