diff --git a/lua/rua/config/vtsls.lua b/lua/rua/config/vtsls.lua index f3a6e4b..6f3e9f3 100644 --- a/lua/rua/config/vtsls.lua +++ b/lua/rua/config/vtsls.lua @@ -11,12 +11,13 @@ local function organize_imports() end local mason_registry = require("mason-registry") -local has_volar, volar = pcall(mason_registry.get_package, "vue-language-server") +local has_volar, _ = pcall(mason_registry.get_package, "vue-language-server") -- npm i -g @vue/typescript-plugin local vue_language_server_path if has_volar then - vue_language_server_path = volar:get_install_path() .. "/node_modules/@vue/language-server" + -- vue_language_server_path = volar:get_install_path() .. "/node_modules/@vue/language-server" + vue_language_server_path = vim.fn.expand("$MASON/packages/vue-language-server/node_modules/@vue/language-server") end local M = { diff --git a/lua/rua/plugins/lsp/lspconfig.lua b/lua/rua/plugins/lsp/lspconfig.lua index 364c207..1ca50d1 100644 --- a/lua/rua/plugins/lsp/lspconfig.lua +++ b/lua/rua/plugins/lsp/lspconfig.lua @@ -5,14 +5,14 @@ return { { "hrsh7th/cmp-nvim-lsp" }, -- { "antosha417/nvim-lsp-file-operations", config = true }, -- { "folke/neodev.nvim", opts = {} }, - "williamboman/mason-lspconfig.nvim", + "mason-org/mason-lspconfig.nvim", }, event = "VeryLazy", opts = { document_highlight = { enabled = false } }, config = function() local lspconfig = require("lspconfig") local mason_lspconfig = require("mason-lspconfig") - local cmp_nvim_lsp = require("cmp_nvim_lsp") + -- local cmp_nvim_lsp = require("cmp_nvim_lsp") local map = vim.keymap.set -- for conciseness vim.api.nvim_create_autocmd("LspAttach", { @@ -21,19 +21,31 @@ return { local opts = { buffer = ev.buf, silent = true } opts.desc = "Show LSP references" - map("n", "gr", "Telescope lsp_references", opts) -- show definition, references + map("n", "gr", function() + require("telescope.builtin").lsp_references() + end, opts) -- show definition, references opts.desc = "Go to declaration" map("n", "gD", vim.lsp.buf.declaration, opts) -- go to declaration opts.desc = "Show LSP definitions" - map("n", "gd", "Telescope lsp_definitions", opts) -- show lsp definitions + -- map("n", "gd", "Telescope lsp_definitions", opts) -- show lsp definitions + -- map("n", "gd", "lua vim.lsp.buf.definition()", opts) -- show lsp definitions + map("n", "gd", function() + require("telescope.builtin").lsp_definitions() + end, opts) -- show lsp definitions opts.desc = "Show LSP implementations" - map("n", "gi", "Telescope lsp_implementations", opts) -- show lsp implementations + -- map("n", "gi", "Telescope lsp_implementations", opts) -- show lsp implementations + map("n", "gi", function() + require("telescope.builtin").lsp_implementations() + end, opts) -- show lsp implementations opts.desc = "Show LSP type definitions" - map("n", "gt", "Telescope lsp_type_definitions", opts) -- show lsp type definitions + -- map("n", "gt", "Telescope lsp_type_definitions", opts) -- show lsp type definitions + map("n", "gt", function() + require("telescope.builtin").lsp_type_definitions() + end, opts) -- show lsp type definitions opts.desc = "See available code actions" map({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection @@ -42,7 +54,10 @@ return { map("n", "rn", vim.lsp.buf.rename, opts) -- smart rename opts.desc = "Show buffer diagnostics" - map("n", "D", "Telescope diagnostics bufnr=0", opts) -- show diagnostics for file + -- map("n", "D", "Telescope diagnostics bufnr=0", opts) -- show diagnostics for file + map("n", "D", function() + require("telescope.builtin").diagnostics() + end, opts) -- show diagnostics for file -- opts.desc = "Show line diagnostics" -- map("n", "d", vim.diagnostic.open_float, opts) -- show diagnostics for line @@ -62,7 +77,7 @@ return { end, }) - local capabilities = cmp_nvim_lsp.default_capabilities() + -- local capabilities = cmp_nvim_lsp.default_capabilities() local signs = { Error = " ", Warn = " ", Hint = "󰠠 ", Info = " " } for type, icon in pairs(signs) do @@ -70,117 +85,250 @@ return { vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) end - mason_lspconfig.setup_handlers({ - -- default handler for installed servers - function(server_name) - lspconfig[server_name].setup({ - capabilities = capabilities, - }) - end, - ["biome"] = function() - lspconfig["biome"].setup({ - capabilities = capabilities, - settings = { - cmd = { "biome", "lsp-proxy" }, - filetypes = { - "astro", - "css", - "graphql", - "javascript", - "javascriptreact", - "json", - "jsonc", - "svelte", - "typescript", - "typescript.tsx", - "typescriptreact", - "vue", - "markdown", - }, - single_file_support = true, - }, - }) - end, - ["dockerls"] = function() - lspconfig["dockerls"].setup({ - settings = { - docker = { - languageserver = { - formatter = { - ignoreMultilineInstructions = true, - }, - }, + mason_lspconfig.setup({ + automatic_enable = { + exclude = { + "biome", + "dockerls", + "tailwindcss", + "rust_analyzer", + "taplo", + "denols", + "vtsls", + "jsonls", + "lua_ls", + }, + }, + }) + vim.lsp.enable("biome") + vim.lsp.config("biome", { + settings = { + cmd = { "biome", "lsp-proxy" }, + filetypes = { + "astro", + "css", + "graphql", + "javascript", + "javascriptreact", + "json", + "jsonc", + "svelte", + "typescript", + "typescript.tsx", + "typescriptreact", + "vue", + "markdown", + }, + single_file_support = true, + }, + }) + vim.lsp.enable("dockerls") + vim.lsp.config("dockerls", { + settings = { + docker = { + languageserver = { + formatter = { + ignoreMultilineInstructions = true, }, }, - }) - end, - ["tailwindcss"] = function() - lspconfig["tailwindcss"].setup(require("rua.config.tailwindcss")) - end, - ["rust_analyzer"] = function() - -- lspconfig["rust_analyzer"].setup(require("rua.config.rust-analyzer")) - end, - ["taplo"] = function() - lspconfig["taplo"].setup({ - keys = { - { - "gh", - function() - if vim.fn.expand("%:t") == "Cargo.toml" and require("crates").popup_available() then - require("crates").show_popup() - else - vim.lsp.buf.hover() - end - end, - desc = "Show Crate Documentation", - }, + }, + }, + }) + vim.lsp.enable("tailwindcss") + vim.lsp.config("tailwindcss", { + settings = require("rua.config.tailwindcss"), + }) + -- vim.lsp.config("rust_analyzer", {}) + vim.lsp.enable("taplo") + vim.lsp.config("taplo", { + settings = { + keys = { + { + "gh", + function() + if vim.fn.expand("%:t") == "Cargo.toml" and require("crates").popup_available() then + require("crates").show_popup() + else + vim.lsp.buf.hover() + end + end, + desc = "Show Crate Documentation", }, - }) - end, - ["denols"] = function() - lspconfig["denols"].setup({ - -- on_attach = on_attach, - capabilities = capabilities, - root_dir = lspconfig.util.root_pattern("deno.json", "deno.jsonc"), - }) - end, - ["vtsls"] = function() - lspconfig["vtsls"].setup(require("rua.config.vtsls")) - map("n", "co", " OrganizeImports ", { desc = "Organize imports" }) - end, - ["jsonls"] = function() - lspconfig["jsonls"].setup({ - -- lazy-load schemastore when needed - on_new_config = function(new_config) - new_config.settings.json.schemas = new_config.settings.json.schemas or {} - vim.list_extend(new_config.settings.json.schemas, require("schemastore").json.schemas()) - end, - settings = { - json = { - format = { - enable = true, - }, - validate = { enable = true }, - }, + }, + }, + }) + vim.lsp.enable("denols") + vim.lsp.config("denols", { + settings = { + root_dir = lspconfig.util.root_pattern("deno.json", "deno.jsonc"), + }, + }) + local vtsls_settings = require("rua.config.vtsls") + vim.lsp.enable("vtsls") + vim.lsp.config("vtsls", vtsls_settings) + vim.lsp.enable("jsonls") + vim.lsp.config("jsonls", { + settings = { + json = { + format = { + enable = true, }, - }) - end, - ["lua_ls"] = function() - lspconfig["lua_ls"].setup({ - capabilities = capabilities, - settings = { - Lua = { - diagnostics = { - globals = { "vim" }, - }, - completion = { - callSnippet = "Replace", - }, - }, - }, - }) + validate = { enable = true }, + }, + }, + on_new_config = function(new_config) + new_config.settings.json.schemas = new_config.settings.json.schemas or {} + vim.list_extend(new_config.settings.json.schemas, require("schemastore").json.schemas()) end, }) + vim.lsp.enable("lua_ls") + vim.lsp.config("lua_ls", { + settings = { + Lua = { + diagnostics = { + globals = { "vim" }, + }, + completion = { + callSnippet = "Replace", + }, + }, + Luau = { + diagnostics = { + globals = { "vim" }, + }, + completion = { + callSnippet = "Replace", + }, + }, + }, + }) + + -- Nvim 0.11+ (see vim.lsp.config) + -- vim.lsp.config('rust_analyzer', { + -- -- Server-specific settings. See `:help lsp-quickstart` + -- settings = { + -- ['rust-analyzer'] = {}, + -- }, + -- }) + -- Nvim 0.10 (legacy, not supported) + -- local lspconfig = require('lspconfig') + -- lspconfig.rust_analyzer.setup { + -- -- Server-specific settings. See `:help lspconfig-setup` + -- settings = { + -- ['rust-analyzer'] = {}, + -- }, + -- } + -- mason_lspconfig.setup_handlers({ + -- -- default handler for installed servers + -- function(server_name) + -- lspconfig[server_name].setup({ + -- capabilities = capabilities, + -- }) + -- end, + -- ["biome"] = function() + -- lspconfig["biome"].setup({ + -- capabilities = capabilities, + -- settings = { + -- cmd = { "biome", "lsp-proxy" }, + -- filetypes = { + -- "astro", + -- "css", + -- "graphql", + -- "javascript", + -- "javascriptreact", + -- "json", + -- "jsonc", + -- "svelte", + -- "typescript", + -- "typescript.tsx", + -- "typescriptreact", + -- "vue", + -- "markdown", + -- }, + -- single_file_support = true, + -- }, + -- }) + -- end, + -- ["dockerls"] = function() + -- lspconfig["dockerls"].setup({ + -- settings = { + -- docker = { + -- languageserver = { + -- formatter = { + -- ignoreMultilineInstructions = true, + -- }, + -- }, + -- }, + -- }, + -- }) + -- end, + -- ["tailwindcss"] = function() + -- lspconfig["tailwindcss"].setup(require("rua.config.tailwindcss")) + -- end, + -- ["rust_analyzer"] = function() + -- -- lspconfig["rust_analyzer"].setup(require("rua.config.rust-analyzer")) + -- end, + -- ["taplo"] = function() + -- lspconfig["taplo"].setup({ + -- keys = { + -- { + -- "gh", + -- function() + -- if vim.fn.expand("%:t") == "Cargo.toml" and require("crates").popup_available() then + -- require("crates").show_popup() + -- else + -- vim.lsp.buf.hover() + -- end + -- end, + -- desc = "Show Crate Documentation", + -- }, + -- }, + -- }) + -- end, + -- ["denols"] = function() + -- lspconfig["denols"].setup({ + -- -- on_attach = on_attach, + -- capabilities = capabilities, + -- root_dir = lspconfig.util.root_pattern("deno.json", "deno.jsonc"), + -- }) + -- end, + -- ["vtsls"] = function() + -- lspconfig["vtsls"].setup(require("rua.config.vtsls")) + -- map("n", "co", " OrganizeImports ", { desc = "Organize imports" }) + -- end, + -- ["jsonls"] = function() + -- lspconfig["jsonls"].setup({ + -- -- lazy-load schemastore when needed + -- on_new_config = function(new_config) + -- new_config.settings.json.schemas = new_config.settings.json.schemas or {} + -- vim.list_extend(new_config.settings.json.schemas, require("schemastore").json.schemas()) + -- end, + -- settings = { + -- json = { + -- format = { + -- enable = true, + -- }, + -- validate = { enable = true }, + -- }, + -- }, + -- }) + -- end, + -- ["lua_ls"] = function() + -- lspconfig["lua_ls"].setup({ + -- capabilities = capabilities, + -- settings = { + -- Lua = { + -- diagnostics = { + -- globals = { "vim" }, + -- }, + -- completion = { + -- callSnippet = "Replace", + -- }, + -- }, + -- }, + -- }) + -- end, + -- }) end, }, } diff --git a/lua/rua/plugins/lsp/mason.lua b/lua/rua/plugins/lsp/mason.lua index b8c5896..e8d8c50 100644 --- a/lua/rua/plugins/lsp/mason.lua +++ b/lua/rua/plugins/lsp/mason.lua @@ -1,6 +1,6 @@ return { { - "williamboman/mason.nvim", + "mason-org/mason.nvim", -- event = "VeryLazy", cmd = { "Mason",