return { { "neovim/nvim-lspconfig", dependencies = { "williamboman/mason.nvim", "williamboman/mason-lspconfig.nvim", "saghen/blink.cmp", "nvim-telescope/telescope-ui-select.nvim", "nvimtools/none-ls.nvim", 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons', "jay-babu/mason-null-ls.nvim", }, config = function() -- setup -- local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities = vim.tbl_deep_extend('force', capabilities, require('blink.cmp').get_lsp_capabilities({}, false)) -- mason -- require("mason").setup({ PATH = "append", ui = { border = "rounded", icons = { package_installed = "✔", package_pending = "➜", package_uninstalled = "✘" } } }) -- mason lspconfig -- require("mason-lspconfig").setup({ ensure_installed = { "lua_ls", "clangd", "rust_analyzer", }, handlers = { -- The first entry (without a key) will be the default handler -- and will be called for each installed server that doesn't have -- a dedicated handler. function(server_name) -- default handler (optional) require("lspconfig")[server_name].setup { capabilities = capabilities } end, clangd = function() require("lspconfig").clangd.setup { capabilities = capabilities, on_attach = function(client) client.server_capabilities.documentFormattingProvider = false client.server_capabilities.documentRangeFormattingProvider = false end, } end, } }) -- telescope ui for null-ls require("telescope").setup { extensions = { ["ui-select"] = { } } } require("telescope").load_extension("ui-select") -- null-ls (none-ls) local null_ls = require('null-ls') require("null-ls").setup({ sources = { null_ls.builtins.diagnostics.trail_space.with { disabled_filetypes = { "lua" } }, null_ls.builtins.diagnostics.sqlfluff.with({ extra_args = { "--dialect", "sqlite" }, }), null_ls.builtins.formatting.sqlfluff.with({ extra_args = { "--dialect", "sqlite" }, }), null_ls.builtins.formatting.clang_format.with({ extra_args = { "-style={BasedOnStyle: llvm, IndentWidth: 2, BreakBeforeBraces: Linux, ColumnLimit: 0}" } }) }, }) require("mason-null-ls").setup({ ensure_installed = { "clang_format", "shellharden", "shfmt" } }) -- config -- vim.diagnostic.config({ update_in_insert = true, signs = { text = { [vim.diagnostic.severity.ERROR] = "✘ ", [vim.diagnostic.severity.WARN] = " ", [vim.diagnostic.severity.HINT] = " ", [vim.diagnostic.severity.INFO] = " " } }, float = { focusable = false, style = "minimal", border = "rounded", source = "always", header = "", prefix = "", }, virtual_text = { prefix = '●', -- Could be '●', '■', 'x', '▎', or anything else }, }) end, } }