lua/custom/lsp/** configs This commit removes the need for nvim-lspconfig which is replaced by the vim.lsp API. The lsp/ folder is a copy of nvim-lspconfig's lsp/ folder as it makes it easy to modify LSP configurations on the fly. Conform: biome has been replaced with oxfmt
94 lines
2.7 KiB
Lua
94 lines
2.7 KiB
Lua
---@brief
|
|
---
|
|
--- https://github.com/luals/lua-language-server
|
|
---
|
|
--- Lua language server.
|
|
---
|
|
--- `lua-language-server` can be installed by following the instructions [here](https://luals.github.io/#neovim-install).
|
|
---
|
|
--- The default `cmd` assumes that the `lua-language-server` binary can be found in `$PATH`.
|
|
---
|
|
--- If you primarily use `lua-language-server` for Neovim, and want to provide completions,
|
|
--- analysis, and location handling for plugins on runtime path, you can use the following
|
|
--- settings.
|
|
---
|
|
--- ```lua
|
|
vim.lsp.config("lua_ls", {
|
|
on_init = function(client)
|
|
if client.workspace_folders then
|
|
local path = client.workspace_folders[1].name
|
|
if
|
|
path ~= vim.fn.stdpath("config")
|
|
and (vim.uv.fs_stat(path .. "/.luarc.json") or vim.uv.fs_stat(path .. "/.luarc.jsonc"))
|
|
then
|
|
return
|
|
end
|
|
end
|
|
|
|
client.config.settings.Lua = vim.tbl_deep_extend("force", client.config.settings.Lua, {
|
|
runtime = {
|
|
-- Tell the language server which version of Lua you're using (most
|
|
-- likely LuaJIT in the case of Neovim)
|
|
version = "LuaJIT",
|
|
-- Tell the language server how to find Lua modules same way as Neovim
|
|
-- (see `:h lua-module-load`)
|
|
path = {
|
|
"lua/?.lua",
|
|
"lua/?/init.lua",
|
|
},
|
|
},
|
|
-- Make the server aware of Neovim runtime files
|
|
workspace = {
|
|
checkThirdParty = false,
|
|
library = {
|
|
vim.env.VIMRUNTIME,
|
|
-- Depending on the usage, you might want to add additional paths
|
|
-- here.
|
|
-- '${3rd}/luv/library',
|
|
-- '${3rd}/busted/library',
|
|
},
|
|
-- Or pull in all of 'runtimepath'.
|
|
-- NOTE: this is a lot slower and will cause issues when working on
|
|
-- your own configuration.
|
|
-- See https://github.com/neovim/nvim-lspconfig/issues/3189
|
|
-- library = vim.api.nvim_get_runtime_file('', true),
|
|
},
|
|
})
|
|
end,
|
|
settings = {
|
|
Lua = {},
|
|
},
|
|
})
|
|
--- ```
|
|
---
|
|
--- See `lua-language-server`'s [documentation](https://luals.github.io/wiki/settings/) for an explanation of the above fields:
|
|
--- * [Lua.runtime.path](https://luals.github.io/wiki/settings/#runtimepath)
|
|
--- * [Lua.workspace.library](https://luals.github.io/wiki/settings/#workspacelibrary)
|
|
---
|
|
|
|
local root_markers1 = {
|
|
".emmyrc.json",
|
|
".luarc.json",
|
|
".luarc.jsonc",
|
|
}
|
|
local root_markers2 = {
|
|
".luacheckrc",
|
|
".stylua.toml",
|
|
"stylua.toml",
|
|
"selene.toml",
|
|
"selene.yml",
|
|
}
|
|
|
|
---@type vim.lsp.Config
|
|
return {
|
|
cmd = { "lua-language-server" },
|
|
filetypes = { "lua" },
|
|
root_markers = vim.fn.has("nvim-0.11.3") == 1 and { root_markers1, root_markers2, { ".git" } }
|
|
or vim.list_extend(vim.list_extend(root_markers1, root_markers2), { ".git" }),
|
|
settings = {
|
|
Lua = {
|
|
codeLens = { enable = true },
|
|
hint = { enable = true, semicolon = "Disable" },
|
|
},
|
|
},
|
|
}
|