Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- return {
- "neovim/nvim-lspconfig",
- event = { "BufReadPre", "BufNewFile" },
- dependencies = {
- "hrsh7th/cmp-nvim-lsp",
- "mason-lspconfig.nvim",
- { "antosha417/nvim-lsp-file-operations", config = true },
- { "folke/neodev.nvim", opts = {} },
- },
- config = function()
- -- import lspconfig plugin
- local lspconfig = require("lspconfig")
- -- import mason_lspconfig plugin
- local mason_lspconfig = require("mason-lspconfig")
- -- import cmp-nvim-lsp plugin
- local cmp_nvim_lsp = require("cmp_nvim_lsp")
- local keymap = vim.keymap -- for conciseness
- vim.api.nvim_create_autocmd("LspAttach", {
- group = vim.api.nvim_create_augroup("UserLspConfig", {}),
- callback = function(ev)
- -- Buffer local mappings.
- -- See `:help vim.lsp.*` for documentation on any of the below functions
- local opts = { buffer = ev.buf, silent = true }
- -- set keybinds
- -- we do not use debuggers :3
- 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
- opts.desc = "Smart rename"
- keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts) -- smart rename
- opts.desc = "Show buffer diagnostics"
- keymap.set("n", "<leader>D", "<cmd>Telescope diagnostics bufnr=0<CR>", opts) -- show diagnostics for file
- opts.desc = "Show line diagnostics"
- keymap.set("n", "<leader>d", vim.diagnostic.open_float, opts) -- show diagnostics for line
- 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
- opts.desc = "Restart LSP"
- keymap.set("n", "<leader>rs", ":LspRestart<CR>", opts) -- mapping to restart lsp if necessary
- end,
- })
- -- used to enable autocompletion (assign to every lsp server config)
- local capabilities = cmp_nvim_lsp.default_capabilities()
- -- Change the Diagnostic symbols in the sign column (gutter)
- -- (not in youtube nvim video)
- local signs = {
- Error = " ",
- Warn = " ",
- Hint = " ",
- Info = " ",
- }
- -- Convert severity names to diagnostic severities
- local sign_text = {}
- for type, icon in pairs(signs) do
- local severity = vim.diagnostic.severity[string.upper(type)]
- sign_text[severity] = icon
- end
- vim.diagnostic.config({
- signs = { text = sign_text },
- })
- mason_lspconfig.setup({
- handlers = {
- -- default handler for installed servers
- function(server_name)
- lspconfig[server_name].setup({
- capabilities = capabilities,
- })
- end,
- ["emmet_ls"] = function()
- -- configure emmet language server
- lspconfig["emmet_ls"].setup({
- capabilities = capabilities,
- filetypes = { "html", "typescriptreact", "javascriptreact", "css", "sass", "scss", "less", "svelte" },
- })
- end,
- ["lua_ls"] = function()
- -- configure lua server (with special settings)
- lspconfig["lua_ls"].setup({
- capabilities = capabilities,
- settings = {
- Lua = {
- -- make the language server recognize "vim" global
- diagnostics = {
- globals = { "vim" },
- },
- completion = {
- callSnippet = "Replace",
- },
- },
- },
- })
- end,
- ["texlab"] = function()
- lspconfig["texlab"].setup({
- capabilities = capabilities,
- filetypes = { "tex", "latex" },
- })
- end,
- ["pyright"] = function()
- lspconfig["pyright"].setup({
- capabilities = capabilities,
- filetypes = { "python" },
- })
- end,
- ["html"] = function()
- lspconfig["html"].setup({
- capabilities = capabilities,
- filetypes = { "html" },
- })
- end,
- ["cssls"] = function()
- lspconfig["cssls"].setup({
- capabilities = capabilities,
- filetypes = { "css" },
- })
- end,
- ["tailwindcss"] = function()
- lspconfig["tailwindcss"].setup({
- capabilities = capabilities,
- filetypes = { "html", "css", "javascript", "typescript", "javascriptreact", "typescriptreact" },
- })
- end,
- ["marksman"] = function()
- lspconfig["marksman"].setup({
- capabilities = capabilities,
- filetypes = { "markdown" },
- })
- end,
- ["taplo"] = function()
- lspconfig["taplo"].setup({
- capabilities = capabilities,
- filetypes = { "toml" },
- })
- end,
- ["yamlls"] = function()
- lspconfig["yamlls"].setup({
- capabilities = capabilities,
- filetypes = { "yaml" },
- settings = {
- yaml = {
- schemas = {
- kubernetes = "/*.yaml", -- Example schema for Kubernetes files
- },
- validate = true,
- completion = true,
- hover = true,
- },
- },
- })
- end,
- ["bashls"] = function()
- lspconfig["bashls"].setup({
- capabilities = capabilities,
- filetypes = { "sh" },
- })
- end,
- },
- })
- end,
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement