return { { 'williamboman/mason.nvim', cmd = 'Mason', opts = { settings = { ui = { border = 'rounded', icons = { package_installed = '◍', package_pending = '◍', package_uninstalled = '◍', }, }, -- log_level = vim.log.levels.INFO, max_concurrent_installers = 4, }, }, }, { "jay-babu/mason-nvim-dap.nvim", opts = { ensure_installed = { 'javatest', 'javadbg', 'codelldb' }, handlers = { function(config) -- all sources with no handler get passed here -- Keep original functionality require('mason-nvim-dap').default_setup(config) end, -- python = function(config) -- config.adapters = { -- type = "executable", -- command = "/usr/bin/python3", -- args = { -- "-m", -- "debugpy.adapter", -- }, -- } -- require('mason-nvim-dap').default_setup(config) -- don't forget this! -- end, }, } }, { 'williamboman/mason-lspconfig.nvim', dependencies = { 'jay-babu/mason-nvim-dap.nvim', 'rcarriga/nvim-dap-ui' }, config = function() local cmp_nvim_lsp = require 'cmp_nvim_lsp' local capabilities = cmp_nvim_lsp.default_capabilities() local lspconfig = require 'lspconfig' capabilities.textDocument.completion.completionItem = { documentationFormat = { "markdown", "plaintext" }, snippetSupport = true, preselectSupport = true, insertReplaceSupport = true, labelDetailsSupport = true, deprecatedSupport = true, commitCharactersSupport = true, tagSupport = { valueSet = { 1 } }, resolveSupport = { properties = { "documentation", "detail", "additionalTextEdits", }, }, } local function on_attach(client, bufnr) --[[ vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') ]] if client.name == 'jdtls' or client.name == 'jdt.ls' then -- client.server_capabilities.documentFormattingProvider = false vim.lsp.codelens.refresh() if JAVA_DAP_ACTIVE then require('jdtls').setup_dap { hotcodereplace = 'auto' } require('jdtls.setup').add_commands() require('jdtls.dap').setup_dap_main_class_configs() end end -- -- util.info(client.name .. " " .. (enable and "yes" or "no"), "format") client.server_capabilities.documentFormattingProvider = true -- client.server_capabilities.documentFormattingProvider = true client.server_capabilities.semanticTokensProvider = nil end require('mason-lspconfig').setup_handlers { function(server_name) -- default handler (optional) lspconfig[server_name].setup { on_attach = on_attach, capabilities = capabilities, } end, ['clangd'] = function() local clangd_flags = { '-j=5', '--all-scopes-completion', '--suggest-missing-includes', '--background-index', '--pch-storage=disk', '--cross-file-rename', '--log=info', '--completion-style=detailed', '--enable-config', -- clangd 11+ supports reading from .clangd configuration file '--clang-tidy', -- "--clang-tidy-checks=-*,llvm-*,clang-analyzer-*,modernize-*,-modernize-use-trailing-return-type", -- "--fallback-style=Google", -- "--header-insertion=never", -- "--query-driver=" } lspconfig.clangd.setup { on_attach = on_attach, capabilities = capabilities, arg = { unpack(clangd_flags) } } end, ['html'] = function() lspconfig.html.setup { on_attach = on_attach, capabilities = capabilities, filetypes = { "html", "jsp" }, } end, ['lua_ls'] = function() lspconfig.lua_ls.setup { on_attach = on_attach, capabilities = capabilities, flags = { debounce_text_changes = 150, }, settings = { Lua = { diagnostics = { globals = { 'vim' }, }, -- workspace = { -- library = { -- [vim.fn.expand '$VIMRUNTIME/lua'] = true, -- [vim.fn.stdpath 'config' .. '/lua'] = true, -- }, -- }, telemetry = { enable = false, }, }, }, } end, ['jdtls'] = function() end, ['rust_analyzer'] = function() require('rust-tools').setup { server = { on_attach = on_attach, standalone = false, }, } end, } end } }