updated lspconfig for some deprecated stuff

This commit is contained in:
2025-04-20 22:40:16 +02:00
parent 64d7be1514
commit 19f3694dab

View File

@@ -1,136 +1,157 @@
return { return {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
event = { "BufReadPre", "BufNewFile" }, event = { "BufReadPre", "BufNewFile" },
dependencies = { dependencies = {
"hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-nvim-lsp",
{ "antosha417/nvim-lsp-file-operations", config = true }, { "antosha417/nvim-lsp-file-operations", config = true },
{ "folke/neodev.nvim", opts = {} }, { "folke/neodev.nvim", opts = {} },
}, },
config = function() config = function()
-- import lspconfig plugin -- import lspconfig plugin
local lspconfig = require("lspconfig") local lspconfig = require("lspconfig")
-- import mason_lspconfig plugin -- import mason_lspconfig plugin
local mason_lspconfig = require("mason-lspconfig") local mason_lspconfig = require("mason-lspconfig")
-- import cmp-nvim-lsp plugin -- import cmp-nvim-lsp plugin
local cmp_nvim_lsp = require("cmp_nvim_lsp") local cmp_nvim_lsp = require("cmp_nvim_lsp")
local keymap = vim.keymap -- for conciseness local keymap = vim.keymap -- for conciseness
vim.api.nvim_create_autocmd("LspAttach", { vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("UserLspConfig", {}), group = vim.api.nvim_create_augroup("UserLspConfig", {}),
callback = function(ev) callback = function(ev)
-- Buffer local mappings. -- Buffer local mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions -- See `:help vim.lsp.*` for documentation on any of the below functions
local opts = { buffer = ev.buf, silent = true } local opts = { buffer = ev.buf, silent = true }
-- set keybinds -- set keybinds
opts.desc = "Show LSP references" opts.desc = "Show LSP references"
keymap.set("n", "gR", "<cmd>Telescope lsp_references<CR>", opts) -- show definition, references keymap.set("n", "gR", "<cmd>Telescope lsp_references<CR>", opts) -- show definition, references
opts.desc = "Go to declaration" opts.desc = "Go to declaration"
keymap.set("n", "gD", vim.lsp.buf.declaration, opts) -- go to declaration keymap.set("n", "gD", vim.lsp.buf.declaration, opts) -- go to declaration
opts.desc = "Show LSP definitions" opts.desc = "Show LSP definitions"
keymap.set("n", "gd", "<cmd>Telescope lsp_definitions<CR>", opts) -- show lsp definitions keymap.set("n", "gd", "<cmd>Telescope lsp_definitions<CR>", opts) -- show lsp definitions
opts.desc = "Show LSP implementations" opts.desc = "Show LSP implementations"
keymap.set("n", "gi", "<cmd>Telescope lsp_implementations<CR>", opts) -- show lsp implementations keymap.set("n", "gi", "<cmd>Telescope lsp_implementations<CR>", opts) -- show lsp implementations
opts.desc = "Show LSP type definitions" opts.desc = "Show LSP type definitions"
keymap.set("n", "gt", "<cmd>Telescope lsp_type_definitions<CR>", opts) -- show lsp type definitions keymap.set("n", "gt", "<cmd>Telescope lsp_type_definitions<CR>", opts) -- show lsp type definitions
opts.desc = "See available code actions" opts.desc = "See available code actions"
keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection
opts.desc = "Smart rename" opts.desc = "Smart rename"
keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts) -- smart rename keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts) -- smart rename
opts.desc = "Show buffer diagnostics" opts.desc = "Show buffer diagnostics"
keymap.set("n", "<leader>D", "<cmd>Telescope diagnostics bufnr=0<CR>", opts) -- show diagnostics for file keymap.set("n", "<leader>D", "<cmd>Telescope diagnostics bufnr=0<CR>", opts) -- show diagnostics for file
opts.desc = "Show line diagnostics" opts.desc = "Show line diagnostics"
keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts) -- show diagnostics for line keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts) -- show diagnostics for line
opts.desc = "Go to previous diagnostic" opts.desc = "Go to previous diagnostic"
keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) -- jump to previous diagnostic in buffer keymap.set("n", "[d", function()
vim.diagnostic.jump({ count = -1, float = true })
end, opts) -- jump to previous diagnostic in buffer
opts.desc = "Go to next diagnostic" opts.desc = "Go to next diagnostic"
keymap.set("n", "]d", vim.diagnostic.goto_next, opts) -- jump to next diagnostic in buffer keymap.set("n", "]d", function()
vim.diagnostic.jump({ count = 1, float = true })
end, opts) -- jump to next diagnostic in buffer
opts.desc = "Show documentation for what is under cursor" opts.desc = "Show documentation for what is under cursor"
keymap.set("n", "K", vim.lsp.buf.hover, opts) -- show documentation for what is under cursor keymap.set("n", "K", vim.lsp.buf.hover, opts) -- show documentation for what is under cursor
opts.desc = "Restart LSP" opts.desc = "Restart LSP"
keymap.set("n", "<leader>rs", ":LspRestart<CR>", opts) -- mapping to restart lsp if necessary keymap.set("n", "<leader>rs", ":LspRestart<CR>", opts) -- mapping to restart lsp if necessary
end, end,
}) })
-- used to enable autocompletion (assign to every lsp server config) -- used to enable autocompletion (assign to every lsp server config)
local capabilities = cmp_nvim_lsp.default_capabilities() local capabilities = cmp_nvim_lsp.default_capabilities()
-- Change the Diagnostic symbols in the sign column (gutter) -- Change the Diagnostic symbols in the sign column (gutter)
-- (not in youtube nvim video) -- (not in youtube nvim video)
local signs = { Error = "", Warn = "", Hint = "󰠠 ", Info = "" } local x = vim.diagnostic.severity
for type, icon in pairs(signs) do vim.diagnostic.config({
local hl = "DiagnosticSign" .. type virtual_text = { prefix = "" },
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) signs = { text = { [x.ERROR] = "", [x.WARN] = "", [x.INFO] = "󰋼", [x.HINT] = "󰌵" } },
end underline = true,
float = { border = "single" },
})
mason_lspconfig.setup_handlers({ -- local signs = { Error = " ", Warn = " ", Hint = "󰠠 ", Info = " " }
-- default handler for installed servers -- for type, icon in pairs(signs) do
function(server_name) -- local hl = "DiagnosticSign" .. type
lspconfig[server_name].setup({ -- vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
capabilities = capabilities, -- end
})
end, mason_lspconfig.setup_handlers({
["svelte"] = function() -- default handler for installed servers
-- configure svelte server function(server_name)
lspconfig["svelte"].setup({ lspconfig[server_name].setup({
capabilities = capabilities, capabilities = capabilities,
on_attach = function(client, bufnr) })
vim.api.nvim_create_autocmd("BufWritePost", { end,
pattern = { "*.js", "*.ts" }, ["svelte"] = function()
callback = function(ctx) -- configure svelte server
-- Here use ctx.match instead of ctx.file lspconfig["svelte"].setup({
client.notify("$/onDidChangeTsOrJsFile", { uri = ctx.match }) capabilities = capabilities,
end, on_attach = function(client, bufnr)
}) vim.api.nvim_create_autocmd("BufWritePost", {
end, pattern = { "*.js", "*.ts" },
}) callback = function(ctx)
end, -- Here use ctx.match instead of ctx.file
["graphql"] = function() client.notify("$/onDidChangeTsOrJsFile", { uri = ctx.match })
-- configure graphql language server end,
lspconfig["graphql"].setup({ })
capabilities = capabilities, end,
filetypes = { "graphql", "gql", "svelte", "typescriptreact", "javascriptreact" }, })
}) end,
end, ["graphql"] = function()
["emmet_ls"] = function() -- configure graphql language server
-- configure emmet language server lspconfig["graphql"].setup({
lspconfig["emmet_ls"].setup({ capabilities = capabilities,
capabilities = capabilities, filetypes = { "graphql", "gql", "svelte", "typescriptreact", "javascriptreact" },
filetypes = { "html", "typescriptreact", "javascriptreact", "css", "sass", "scss", "less", "svelte" }, })
}) end,
end, ["emmet_ls"] = function()
["lua_ls"] = function() -- configure emmet language server
-- configure lua server (with special settings) lspconfig["emmet_ls"].setup({
lspconfig["lua_ls"].setup({ capabilities = capabilities,
capabilities = capabilities, filetypes = {
settings = { "html",
Lua = { "typescriptreact",
-- make the language server recognize "vim" global "javascriptreact",
diagnostics = { "css",
globals = { "vim" }, "sass",
}, "scss",
completion = { "less",
callSnippet = "Replace", "svelte",
}, },
}, })
}, end,
}) ["lua_ls"] = function()
end, -- configure lua server (with special settings)
}) lspconfig["lua_ls"].setup({
end, capabilities = capabilities,
settings = {
Lua = {
-- make the language server recognize "vim" global
diagnostics = {
globals = { "vim" },
},
completion = {
callSnippet = "Replace",
},
},
},
})
end,
})
end,
} }