diff --git a/init.lua b/init.lua index 2856088..a09bb1c 100644 --- a/init.lua +++ b/init.lua @@ -18,7 +18,7 @@ require("user.impatient") require("user.illuminate") require("user.indentline") require("user.alpha") -require("user.lsp") +require("user.mason") require("user.dap") require("user.vimwiki") require("user.whichkey") diff --git a/lua/user/dap.lua b/lua/user/dap.lua index 0e6dc67..e587a1c 100644 --- a/lua/user/dap.lua +++ b/lua/user/dap.lua @@ -1,60 +1,69 @@ +local status_mason_dap_ok, mason_dap = pcall(require, "mason-nvim-dap") +if not status_mason_dap_ok then + return +end + local dap_status_ok, dap = pcall(require, "dap") if not dap_status_ok then return end -local dap_ui_status_ok, dapui = pcall(require, "dapui") -if not dap_ui_status_ok then - return -end +-- local dap_ui_status_ok, dapui = pcall(require, "dapui") +-- if not dap_ui_status_ok then +-- return +-- end local dap_install_status_ok, dap_install = pcall(require, "dap-install") if not dap_install_status_ok then return end +mason_dap.setup({ + automatic_installation = true, + automatic_setup = true, +}) dap_install.setup({}) dap_install.config("python", {}) -- add other configs here -dapui.setup({ - layouts = { - { - elements = { - "scopes", - "breakpoints", - "stacs", - "watches", - }, - size = 40, - position = "left", - }, - { - elements = { - "repl", - "console", - }, - size = 10, - position = "bottom", - }, - }, - - -- sidebar = { - -- elements = { - -- { - -- id = "scopes", - -- size = 0.25, -- Can be float or integer > 1 - -- }, - -- { id = "breakpoints", size = 0.25 }, - -- }, - -- size = 40, - -- position = "right", -- Can be "left", "right", "top", "bottom" - -- }, - -- tray = { - -- elements = {}, - -- }, -}) +-- dapui.setup({ +-- layouts = { +-- { +-- elements = { +-- "scopes", +-- "breakpoints", +-- "stacs", +-- "watches", +-- }, +-- size = 40, +-- position = "left", +-- }, +-- { +-- elements = { +-- "repl", +-- "console", +-- }, +-- size = 10, +-- position = "bottom", +-- }, +-- }, +-- +-- -- sidebar = { +-- -- elements = { +-- -- { +-- -- id = "scopes", +-- -- size = 0.25, -- Can be float or integer > 1 +-- -- }, +-- -- { id = "breakpoints", size = 0.25 }, +-- -- }, +-- -- size = 40, +-- -- position = "right", -- Can be "left", "right", "top", "bottom" +-- -- }, +-- -- tray = { +-- -- elements = {}, +-- -- }, +-- }) vim.fn.sign_define("DapBreakpoint", { text = "", texthl = "DiagnosticSignError", linehl = "", numhl = "" }) diff --git a/lua/user/lsp/init.lua b/lua/user/lsp/init.lua deleted file mode 100644 index 94a571e..0000000 --- a/lua/user/lsp/init.lua +++ /dev/null @@ -1,8 +0,0 @@ -local status_ok, _ = pcall(require, "lspconfig") -if not status_ok then - return -end - -require("user.lsp.lsp-installer") -require("user.lsp.handlers").setup() -require("user.lsp.null-ls") diff --git a/lua/user/lsp/handlers.lua b/lua/user/mason/handlers.lua similarity index 100% rename from lua/user/lsp/handlers.lua rename to lua/user/mason/handlers.lua diff --git a/lua/user/mason/init.lua b/lua/user/mason/init.lua new file mode 100644 index 0000000..fbbe351 --- /dev/null +++ b/lua/user/mason/init.lua @@ -0,0 +1,8 @@ +local status_ok, _ = pcall(require, "mason-lspconfig") +if not status_ok then + return +end + +require("user.mason.mason-installer") +require("user.mason.handlers").setup() +require("user.mason.null-ls") diff --git a/lua/user/lsp/lsp-installer.lua b/lua/user/mason/mason-installer.lua similarity index 70% rename from lua/user/lsp/lsp-installer.lua rename to lua/user/mason/mason-installer.lua index ee91a43..8c8329a 100644 --- a/lua/user/lsp/lsp-installer.lua +++ b/lua/user/mason/mason-installer.lua @@ -1,8 +1,32 @@ -local status_ok, lsp_installer = pcall(require, "nvim-lsp-installer") +local status_ok, mason = pcall(require, "mason") if not status_ok then return end +local status_mason_lspconfig_ok, mason_lspconfig = pcall(require, "mason-lspconfig") +if not status_mason_lspconfig_ok then + return +end + +local status_lspconfig_ok, lspconfig = pcall(require, "lspconfig") +if not status_lspconfig_ok then + return +end + +local status_update_all_ok, mason_update_all = pcall(require, "mason-update-all") +if not status_update_all_ok then + return +end + +local status_tool_ok, mason_tool = pcall(require, "mason-tool-installer") +if not status_tool_ok then + return +end + +mason.setup() +mason_lspconfig.setup() +mason_update_all.setup() + local servers = { "bashls", "cssls", @@ -20,38 +44,55 @@ local servers = { "yamlls", } -lsp_installer.setup() - -local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig") -if not lspconfig_status_ok then - return -end +mason_tool.setup({ + ensure_installed = { + "bash-language-server", + "clangd", + "css-lsp", + "diagnostic-languageserver", + "emmet-ls", + "html-lsp", + "json-lsp", + "lua-language-server", + "marksman", + "pyright", + "rust-analyzer", + "taplo", + "texlab", + -- "typescript-language-server", + "vim-language-server", + "yaml-language-server", + }, + auto_update = true, + run_on_start = true, + start_delay = 0, +}) local opts = {} for _, server in pairs(servers) do opts = { - on_attach = require("user.lsp.handlers").on_attach, - capabilities = require("user.lsp.handlers").capabilities, + on_attach = require("user.mason.handlers").on_attach, + capabilities = require("user.mason.handlers").capabilities, } if server == "sumneko_lua" then - local sumneko_opts = require("user.lsp.settings.sumneko_lua") + local sumneko_opts = require("user.mason.settings.sumneko_lua") opts = vim.tbl_deep_extend("force", sumneko_opts, opts) end if server == "pyright" then - local pyright_opts = require("user.lsp.settings.pyright") + local pyright_opts = require("user.mason.settings.pyright") opts = vim.tbl_deep_extend("force", pyright_opts, opts) end -- if server == "clangd" then - -- local clangd_opts = require("user.lsp.settings.clangd") + -- local clangd_opts = require("user.mason.settings.clangd") -- opts = vim.tbl_deep_extend("force", clangd_opts) -- end -- -- if server == "html" then - -- local html_opts = require("user.lsp.settings.html") + -- local html_opts = require("user.mason.settings.html") -- opts = vim.tbl_deep_extend("force", html_opts) -- end @@ -87,8 +128,8 @@ for _, server in pairs(servers) do end, }, server = { - on_attach = require("user.lsp.handlers").on_attach, - capabilities = require("user.lsp.handlers").capabilities, + on_attach = require("user.mason.handlers").on_attach, + capabilities = require("user.mason.handlers").capabilities, settings = { ["rust-analyzer"] = { lens = { @@ -144,24 +185,24 @@ for _, server in pairs(servers) do priority = 100, }, ast = { - -- These are unicode, should be available in any font - role_icons = { - type = "🄣", - declaration = "🄓", - expression = "🄔", - statement = ";", - specifier = "🄢", - ["template argument"] = "🆃", - }, - kind_icons = { - Compound = "🄲", - Recovery = "🅁", - TranslationUnit = "🅄", - PackExpansion = "🄿", - TemplateTypeParm = "🅃", - TemplateTemplateParm = "🅃", - TemplateParamObject = "🅃", - }, + -- -- These are unicode, should be available in any font + -- role_icons = { + -- type = "🄣", + -- declaration = "🄓", + -- expression = "🄔", + -- statement = ";", + -- specifier = "🄢", + -- ["template argument"] = "🆃", + -- }, + -- kind_icons = { + -- Compound = "🄲", + -- Recovery = "🅁", + -- TranslationUnit = "🅄", + -- PackExpansion = "🄿", + -- TemplateTypeParm = "🅃", + -- TemplateTemplateParm = "🅃", + -- TemplateParamObject = "🅃", + -- }, -- These require codicons (https://github.com/microsoft/vscode-codicons) role_icons = { type = "", diff --git a/lua/user/lsp/null-ls.lua b/lua/user/mason/null-ls.lua similarity index 62% rename from lua/user/lsp/null-ls.lua rename to lua/user/mason/null-ls.lua index 7647ece..89be0dc 100644 --- a/lua/user/lsp/null-ls.lua +++ b/lua/user/mason/null-ls.lua @@ -3,6 +3,11 @@ if not null_ls_status_ok then return end +local mason_null_ls_status_ok, mason_null_ls = pcall(require, "mason-null-ls") +if not mason_null_ls_status_ok then + return +end + -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting local formatting = null_ls.builtins.formatting -- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics @@ -18,14 +23,33 @@ null_ls.setup({ }), formatting.autopep8, formatting.stylua, - formatting.rustfmt, formatting.beautysh, - formatting.djhtml, + formatting.djlint, formatting.tidy, - formatting.stylelint, + diagnostics.cpplint, diagnostics.luacheck, - -- diagnostics.flake8, diagnostics.pylint, + -- diagnostics.mypy, diagnostics.zsh, }, }) + +mason_null_ls.setup({ + ensure_installed = { + "autopep8", + "beautysh", + "djlint", + "shfmt", + "yamlfmt", + "codespell", + "cpplint", + "luacheck", + "misspell", + "pylint", + "mypy", + "html_lint", + "gitlint", + }, + automatic_installation = true, + automatic_setup = true, +}) diff --git a/lua/user/lsp/settings/pyright.lua b/lua/user/mason/settings/pyright.lua similarity index 69% rename from lua/user/lsp/settings/pyright.lua rename to lua/user/mason/settings/pyright.lua index 570ef9d..91cf74c 100644 --- a/lua/user/lsp/settings/pyright.lua +++ b/lua/user/mason/settings/pyright.lua @@ -2,7 +2,7 @@ return { settings = { python = { analysis = { - typeCheckingMode = "off", + typeCheckingMode = "true", }, }, }, diff --git a/lua/user/lsp/settings/sumneko_lua.lua b/lua/user/mason/settings/sumneko_lua.lua similarity index 100% rename from lua/user/lsp/settings/sumneko_lua.lua rename to lua/user/mason/settings/sumneko_lua.lua diff --git a/lua/user/plugins.lua b/lua/user/plugins.lua index b36c44f..8d07b74 100644 --- a/lua/user/plugins.lua +++ b/lua/user/plugins.lua @@ -77,16 +77,20 @@ return packer.startup(function(use) use("hrsh7th/cmp-path") -- path completions use("saadparwaiz1/cmp_luasnip") -- snippet completions use("hrsh7th/cmp-nvim-lsp") - use("hrsh7th/cmp-nvim-lua") -- snippets use("L3MON4D3/LuaSnip") --snippet engine use("rafamadriz/friendly-snippets") -- a bunch of snippets to use -- LSP + -- use("williamboman/nvim-lsp-installer") -- simple to use language server installer + use("williamboman/mason.nvim") + use("williamboman/mason-lspconfig.nvim") use("neovim/nvim-lspconfig") -- enable LSP - use("williamboman/nvim-lsp-installer") -- simple to use language server installer + use("WhoIsSethDaniel/mason-tool-installer.nvim") use("jose-elias-alvarez/null-ls.nvim") -- for formatters and linters + use("jayp0521/mason-null-ls.nvim") + use("RubixDev/mason-update-all") use("RRethy/vim-illuminate") use({ "Saecki/crates.nvim", tag = "v0.3.0" }) use("simrat39/rust-tools.nvim") @@ -108,6 +112,7 @@ return packer.startup(function(use) -- DAP use("mfussenegger/nvim-dap") use("rcarriga/nvim-dap-ui") + use("jayp0521/mason-nvim-dap.nvim") use("ravenxrz/DAPInstall.nvim") -- Automatically set up your configuration after cloning packer.nvim diff --git a/lua/user/whichkey.lua b/lua/user/whichkey.lua index 460e980..33f372b 100644 --- a/lua/user/whichkey.lua +++ b/lua/user/whichkey.lua @@ -175,11 +175,11 @@ local mappings = { i = { "LspInfo", "Info" }, I = { "LspInstallInfo", "Installer Info" }, j = { - "lua vim.lsp.diagnostic.goto_next()", + "lua vim.diagnostic.goto_next()", "Next Diagnostic", }, k = { - "lua vim.lsp.diagnostic.goto_prev()", + "lua vim.diagnostic.goto_prev()", "Prev Diagnostic", }, l = { "lua vim.lsp.codelens.run()", "CodeLens Action" },