| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | local default_workspace = {  library = {    vim.fn.expand "$VIMRUNTIME",    get_lvim_base_dir(),    require("lua-dev.sumneko").types(),  },  maxPreload = 1000,  preloadFileSize = 10000,}local add_packages_to_workspace = function(packages, config)  -- config.settings.Lua = config.settings.Lua or { workspace = default_workspace }  local runtimedirs = vim.api.nvim__get_runtime({ "lua" }, true, { is_lua = true })  local workspace = config.settings.Lua.workspace  for _, v in pairs(runtimedirs) do    for _, pack in ipairs(packages) do      if v:match(pack) and not vim.tbl_contains(workspace.library, v) then        table.insert(workspace.library, v)      end    end  endendlocal lspconfig = require "lspconfig"local make_on_new_config = function(on_new_config, _)  return lspconfig.util.add_hook_before(on_new_config, function(new_config, _)    local server_name = new_config.name    if server_name ~= "sumneko_lua" then      return    end    local plugins = { "plenary.nvim", "telescope.nvim", "nvim-treesitter", "LuaSnip" }    add_packages_to_workspace(plugins, new_config)  end)endlspconfig.util.default_config = vim.tbl_extend("force", lspconfig.util.default_config, {  on_new_config = make_on_new_config(lspconfig.util.default_config.on_new_config),})local opts = {  settings = {    Lua = {      telemetry = { enable = false },      diagnostics = {        globals = { "vim", "lvim", "packer_plugins" },      },      workspace = default_workspace,    },  },}return opts
 |