25 lines
881 B
Lua
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,
|
|
}
|