fix(lsp): enforce lvim completion for lua-server (#3035)

This commit is contained in:
kylo252 2022-09-19 13:10:07 +02:00 committed by GitHub
parent 26d493419a
commit 68fdbaa51d
WARNING! Although there is a key with this ID in the database it does not verify this commit! This commit is SUSPICIOUS.
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 47 additions and 17 deletions

9
.luarc.json Normal file
View file

@ -0,0 +1,9 @@
{
"$schema": "https://raw.githubusercontent.com/sumneko/vscode-lua/master/setting/schema.json",
"Lua.diagnostics.disable": [
"redundant-parameter",
"param-type-mismatch",
"missing-parameter"
],
"diagnostics.libraryFiles": "Disable"
}

View file

@ -1,32 +1,53 @@
local dev_opts = {
local default_workspace = {
library = {
vimruntime = true, -- runtime path
types = true, -- full signature, docs and completion of vim.api, vim.treesitter, vim.lsp and others
-- plugins = true, -- installed opt or start plugins in packpath
-- you can also specify the list of plugins to make available as a workspace library
plugins = { "plenary.nvim" },
vim.fn.expand "$VIMRUNTIME",
get_lvim_base_dir(),
require("lua-dev.sumneko").types(),
},
override = nil, -- function(root_dir, options) end,
maxPreload = 1000,
preloadFileSize = 10000,
}
local lua_dev_loaded, lua_dev = pcall(require, "lua-dev")
if lua_dev_loaded then
lua_dev.setup(dev_opts)
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
end
end
local 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)
end
lspconfig.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 = {
library = {
[require("lvim.utils").join_paths(get_runtime_dir(), "lvim", "lua")] = true,
},
maxPreload = 100000,
preloadFileSize = 10000,
},
workspace = default_workspace,
},
},
}