---@param names string[]
---@return string[]
local function get_plugin_paths(names)
    local plugins = require("lazy.core.config").plugins
    local paths = {}
    for _, name in ipairs(names) do
        if plugins[name] then
            table.insert(paths, plugins[name].dir .. "/lua")
        else
            vim.notify("Invalid plugin name" .. name)
        end
    end
    return paths
end

---@param plugins string[]
---@return string[]
local function library(plugins)
    local paths = get_plugin_paths(plugins)
    table.insert(paths, vim.fn.stdpath("config") .. "/lua")
    table.insert(paths, vim.env.VIMRUNTIME .. "/lua")
    table.insert(paths, "${3rd}/luv/library")
    table.insert(paths, "${3rd}/busted/library")
    table.insert(paths, "${3rd}/luassert/library")
    return paths
end

local M = {
    settings = {
        Lua = {
            --diagnostics = {},
            format = {
                -- Use stylua
                enable = false,
            },
            runtime = {
                version = "LuaJIT",
                pathStrict = true,
                path = { "?.lua", "?/init.lua" },
            },
            semantic = {
                enable = false,
            },
            workspace = {
                checkThirdParty = "Disable",
                library = library({ "lazy.nvim" }),
            },
        },
    },
}

return M