Files
work/term/.config/nvim/lua/plugins/lsp-config.lua
T

114 lines
2.7 KiB
Lua

return {
-- Mason (LSP server installer)
{
"mason-org/mason.nvim",
config = function()
require("mason").setup()
end,
},
-- Mason-LSPconfig (bridge Mason and nvim-lspconfig)
{
"mason-org/mason-lspconfig.nvim",
config = function()
require("mason-lspconfig").setup({
ensure_installed = {
"pyright", -- Python
"ts_ls", -- TypeScript/JavaScript
"jsonls", -- JSON
"yamlls", -- YAML
"html", -- HTML
"cssls", -- CSS
"bashls", -- Bash
"lua_ls", -- Lua
--"stylua",
},
})
end,
},
-- nvim-lspconfig
{
"neovim/nvim-lspconfig",
config = function()
local function get_venv_python()
local cwd = vim.fn.getcwd()
local handles = vim.fn.glob(cwd .. "/.venv*", true, true)
for _, v in ipairs(handles) do
if vim.fn.isdirectory(v) == 1 then
return v .. "/bin/python"
end
end
return vim.fn.exepath("python3") or "python3"
end
-- Lua
vim.lsp.config("lua_ls", {
settings = {
Lua = {
runtime = { version = "LuaJIT" },
workspace = { library = vim.api.nvim_get_runtime_file("", true) },
},
},
})
-- Python
vim.lsp.config("pyright", {
settings = {
python = {
pythonPath = get_venv_python(),
analysis = {
typeCheckingMode = "basic",
},
},
},
})
-- Type- and JavaScript
vim.lsp.config("ts_ls", {
settings = {
typescript = {
inlayHints = {
includeInlayParameterNameHints = "all",
includeInlayParameterNameHintsWhenArgumentMatchesName = false,
includeInlayFunctionParameterTypeHints = true,
includeInlayVariableTypeHints = true,
includeInlayPropertyDeclarationTypeHints = true,
includeInlayFunctionLikeReturnTypeHints = true,
includeInlayEnumMemberValueHints = true,
},
},
javascript = {
inlayHints = {
includeInlayParameterNameHints = "all",
includeInlayParameterNameHintsWhenArgumentMatchesName = false,
includeInlayFunctionParameterTypeHints = true,
includeInlayVariableTypeHints = true,
includeInlayPropertyDeclarationTypeHints = true,
includeInlayFunctionLikeReturnTypeHints = true,
includeInlayEnumMemberValueHints = true,
},
},
},
})
-- Other languages
vim.lsp.config("jsonls", {})
vim.lsp.config("yamlls", {})
vim.lsp.config("html", {})
vim.lsp.config("cssls", {})
vim.lsp.config("bashls", {})
-- Enable servers
vim.lsp.enable("lua_ls")
vim.lsp.enable("pyright")
vim.lsp.enable("ts_ls")
vim.lsp.enable("jsonls")
vim.lsp.enable("yamlls")
vim.lsp.enable("html")
vim.lsp.enable("cssls")
vim.lsp.enable("bashls")
end,
},
}