nix-config/modules/nvim/config/lsp/astro.lua
2025-06-12 10:31:11 +02:00

25 lines
881 B
Lua

local function get_typescript_server_path(root_dir)
local project_roots = vim.fs.find("node_modules", { path = root_dir, upward = true, limit = math.huge })
for _, project_root in ipairs(project_roots) do
local typescript_path = project_root .. "/typescript"
local stat = vim.loop.fs_stat(typescript_path)
if stat and stat.type == "directory" then
return typescript_path .. "/lib"
end
end
return ""
end
return {
cmd = { "astro-ls", "--stdio" },
filetypes = { "astro" },
root_markers = { "package.json", "tsconfig.json", "jsconfig.json", ".git" },
init_options = {
typescript = {},
},
before_init = function(_, config)
if config.init_options and config.init_options.typescript and not config.init_options.typescript.tsdk then
config.init_options.typescript.tsdk = get_typescript_server_path(config.root_dir)
end
end,
}