diff options
Diffstat (limited to 'plugin/40-lsp.lua')
| -rw-r--r-- | plugin/40-lsp.lua | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/plugin/40-lsp.lua b/plugin/40-lsp.lua new file mode 100644 index 0000000..af95c47 --- /dev/null +++ b/plugin/40-lsp.lua @@ -0,0 +1,61 @@ +local opts = { + ensure_installed = { + "bash-language-server", + "termux-language-server", + "lua-language-server", + "clangd", + "clang-format", + "taplo", + "jq", + "json-lsp", + "svelte-language-server", + "emmet-language-server", + "html-lsp", + "css-lsp", + "typescript-language-server", + "pyright", + "glsl_analyzer", + "kotlin-lsp", + "jdtls", + "csharp-language-server", + "unocss-language-server", + }, + PATH = "skip", + ui = { + icons = { + package_pending = " ", + package_installed = " ", + package_uninstalled = " ", + }, + keymaps = { + toggle_server_expand = "<CR>", + install_server = "i", + update_server = "u", + check_server_version = "c", + update_all_servers = "U", + check_outdated_servers = "C", + uninstall_server = "X", + cancel_installation = "<C-c>", + }, + }, + max_concurrent_installers = 10, +} + +vim.api.nvim_create_user_command("MasonInstallAll", function () + if opts.ensure_installed and #opts.ensure_installed > 0 then + vim.cmd("MasonInstall " .. table.concat(opts.ensure_installed, " ")) + end +end, { + desc = "Install all required mason packages", +}) + +vim.pack.add({ + "https://github.com/neovim/nvim-lspconfig", + "https://github.com/mason-org/mason.nvim", +}) + +require("mason").setup(opts) + +if not (vim.uv or vim.loop).fs_stat(vim.g.mason_path) then + vim.cmd("MasonInstallAll") +end |
