diff --git a/lua/plugins/lsp/lsp-zero.lua b/lua/plugins/lsp/lsp-zero.lua deleted file mode 100644 index de65d0b..0000000 --- a/lua/plugins/lsp/lsp-zero.lua +++ /dev/null @@ -1,10 +0,0 @@ --- Install lsp-zero, to ease LSP support configuration --- https://lsp-zero.netlify.app --- https://github.com/VonHeikemen/lsp-zero.nvim/ - -return { - "VonHeikemen/lsp-zero.nvim", - branch = "v4.x", - lazy = true, - config = false, -} diff --git a/lua/plugins/lsp/lspconfig.lua b/lua/plugins/lsp/lspconfig.lua index b1a2d37..83e5457 100644 --- a/lua/plugins/lsp/lspconfig.lua +++ b/lua/plugins/lsp/lspconfig.lua @@ -6,155 +6,21 @@ return { dependencies = { -- Send LSP results to autocompletion nvim-cmp "hrsh7th/cmp-nvim-lsp", - -- Adds code actions, such as smart file renaming, etc - { "antosha417/nvim-lsp-file-operations", config = true }, -- 💫 Extensible UI for Neovim notifications and LSP progress messages { 'j-hui/fidget.nvim', tag = "legacy", opts = {} }, }, config = function() - -- Import lsp-zero - local lsp_zero = require("lsp-zero") - -- Activate some functionalities when a LSP is activated to the current - -- file - local lsp_attach = function(_, bufnr) - local opts = { buffer = bufnr, silent = true } - - -- Keymaps - - opts.desc = "[LSP] Show LSP references" - vim.keymap.set( - "n", - "gR", - "Telescope lsp_references", - opts - ) - - opts.desc = "[LSP] Go to declaration" - vim.keymap.set( - "n", - "gD", - vim.lsp.buf.declaration, - opts - ) - - opts.desc = "[LSP] Show LSP definitions" - vim.keymap.set( - "n", - "gd", - "Telescope lsp_definitions", - opts - ) - - opts.desc = "[LSP] Show LSP implementations" - vim.keymap.set( - "n", - "gi", - "Telescope lsp_implementations", - opts - ) - - opts.desc = "[LSP] Show LSP type definitions" - vim.keymap.set( - "n", - "gt", - "Telescope lsp_type_definitions", - opts - ) - - opts.desc = "[LSP] Show LSP signature help" - vim.keymap.set( - "n", - "gs", - vim.lsp.buf.signature_help, - opts - ) - - opts.desc = "[LSP] See available code actions" - vim.keymap.set( - { "n", "v" }, - "ca", - vim.lsp.buf.code_action, - opts - ) - - opts.desc = "[LSP] Smart rename" - vim.keymap.set( - "n", - "rn", - vim.lsp.buf.rename, - opts - ) - - opts.desc = "[LSP] Show buffer diagnostics" - vim.keymap.set( - "n", - "D", - "Telescope diagnostics bufnr=0", - opts - ) - - opts.desc = "[LSP] Show line diagnostics" - vim.keymap.set( - "n", - "d", - vim.diagnostic.open_float, - opts - ) - - opts.desc = "[LSP] Go to previous diagnostic" - vim.keymap.set("n", "[d", function() - vim.diagnostic.jump({ count = -1, float = true }) - end, opts) -- jump to previous diagnostic in buffer - - opts.desc = "[LSP] Go to next diagnostic" - vim.keymap.set("n", "]d", function() - vim.diagnostic.jump({ count = 1, float = true }) - end, opts) -- jump to next diagnostic in buffer - - opts.desc = "[LSP] Show documentation for what is under cursor" - vim.keymap.set( - "n", - "K", - vim.lsp.buf.hover, - opts - ) - - opts.desc = "[LSP] Format buffer" - vim.keymap.set( - { "n", "x" }, - "F", - "lua vim.lsp.buf.format({async = true})", - opts - ) - - opts.desc = "[LSP] Restart LSP" - vim.keymap.set( - "n", - "rs", - ":LspRestart", - opts - ) - end - - lsp_zero.extend_lspconfig({ - -- Display diagnostic signs in the sign column - sign_text = true, - -- Attach the keymap function - lsp_attach = lsp_attach, - -- Extend the default completion capabilities by LSP suggestions - capabilities = require("cmp_nvim_lsp").default_capabilities(), + vim.diagnostic.config({ + signs = { + text = { + [vim.diagnostic.severity.ERROR] = " ", + [vim.diagnostic.severity.WARN] = " ", + [vim.diagnostic.severity.HINT] = "󰠠 ", + [vim.diagnostic.severity.INFO] = " ", + } + } }) - -- Use lsp_zero to configure interface - lsp_zero.ui({ - float_border = "rounded", - sign_text = { - error = " ", - warn = " ", - hint = "󰠠 ", - info = " ", - }, - }) end, } diff --git a/lua/plugins/lsp/mason.lua b/lua/plugins/lsp/mason.lua index 09536d9..c4efb4e 100644 --- a/lua/plugins/lsp/mason.lua +++ b/lua/plugins/lsp/mason.lua @@ -1,129 +1,67 @@ --- Install and configure mason.nvim which will install automatically the needed --- LSP +-- New LSP configuration (since neovim 0.11+) return { - "mason-org/mason.nvim", + 'mason-org/mason-lspconfig.nvim', dependencies = { - "mason-org/mason-lspconfig.nvim", - "WhoIsSethDaniel/mason-tool-installer.nvim", + 'mason-org/mason.nvim', + 'neovim/nvim-lspconfig', + 'WhoIsSethDaniel/mason-tool-installer.nvim', }, config = function() - -- Import mason - local mason = require("mason") - -- Import mason-lspconfig - local mason_lspconfig = require("mason-lspconfig") - - -- Import lspconfig - -- local lspconfig = require("lspconfig") - local lspconfig = vim.lsp.config - - -- local util = require("lspconfig.util") - local util = vim.lsp.util - - -- Import mason-tool-installer - local mason_tool_installer = require("mason-tool-installer") - - -- Activate mason and set icones - mason.setup({ + require("mason").setup({ ui = { icons = { package_installed = "✓", package_pending = "➜", package_uninstalled = "✗", - }, - }, + } + } }) - mason_tool_installer.setup({ + require("mason-tool-installer").setup({ ensure_installed = { "prettier", + "ruff", "stylua", "tree-sitter-cli", } }) - mason_lspconfig.setup({ - -- LSP to be installed by default - -- Available LSP: https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md - -- LSP can be installed with :Mason - -- But installing LSP through the following list is better + require("mason-lspconfig").setup({ ensure_installed = { "cssls", "html", "jsonls", "lua_ls", "marksman", + "ty", "ruff", "yamlls", }, - handlers = { - -- Function called for each LSP from the ensure_installed list loaded - function(server_name) - -- Activate all LSP from the ensure_installed list with its default - -- configuration - lspconfig[server_name].setup({}) - end, - - -- Then, configure each LSP as needed - -- See https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md - -- - -- To deactivate a LSP: - -- lsp_name = require("lsp-zero").noop, - - -- The LSP name before`= function()` has to be the same than after - -- `lspconfig.` - -- The first one is the mason_lspconfig key, the seconde one is the - -- lspconfig key. They are identical to the ensure_installed entries. - - ruff = function() - lspconfig.ruff.setup({ - setting = { - }, - }) - end, - - lua_ls = function() - lspconfig.lua_ls.setup({ - settings = { - Lua = { - diagnostics = { - -- Force LSP to recognize global variable `vim`. - globals = { "vim" }, - disable = { "missing-fields" }, - } - } - } - }) - end, - - jsonls = function() - lspconfig.jsonls.setup({ - settings = { - json = { - schemas = require("schemastore").json.schemas(), - validate = { enable = true }, - } - } - }) - end, - - marksman = function() - lspconfig.marksman.setup({ - setting = { - filetypes = { - "markdown", - "quarto", - }, - root_dir = util.root_pattern( - '.git', - '.marksman.toml', - '_quarto.yml' - ), - } - }) - end - }, }) - end, + + vim.lsp.config.marksman = { + filetypes = { "markdown", "quarto" }, + root_dir = vim.fs.root(0, { + ".git", + ".marksman.toml", + "._quarto.yml" + }) + } + + vim.lsp.config.jsonls = { + settings = { + json = { + schemas = require('schemastore').json.schemas(), + validate = { enable = true }, + } + } + } + + vim.lsp.config('*', { + capabilities = require('cmp_nvim_lsp').default_capabilities(), + }) + + end } diff --git a/lua/plugins/nvim-cmp.lua b/lua/plugins/nvim-cmp.lua index 75fd02d..57dcb90 100644 --- a/lua/plugins/nvim-cmp.lua +++ b/lua/plugins/nvim-cmp.lua @@ -110,6 +110,8 @@ return { }, }, { name = "path" }, + { name = "ty" }, + { name = "ruff" }, { name = "emoji" }, }), @@ -128,10 +130,14 @@ return { nvim_lua = "[Lua]", lazydev = "[Lazydev]", path = "[Path]", + ty = "[Ty]", + ruff = "[Ruff]", emoji = "[Emoji]", }, }), }, + + }) end,