return { { "williamboman/mason.nvim", opts = {} }, { "williamboman/mason-lspconfig.nvim", opts = { ensure_installed = { "lua_ls", "clangd","pyright", "jdtls", "cmake", "fish_lsp", "rust_analyzer", "zls"} } }, { 'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-buffer', 'hrsh7th/cmp-path', 'hrsh7th/cmp-cmdline', 'saadparwaiz1/cmp_luasnip', }, { 'L3MON4D3/LuaSnip', dependencies = { 'rafamadriz/friendly-snippets' }, }, { "neovim/nvim-lspconfig" }, { 'hrsh7th/nvim-cmp', config = function() local cmp = require('cmp') local cmp_select = { behavior = cmp.SelectBehavior.Select } cmp.setup({ snippet = { expand = function(args) require('luasnip').lsp_expand(args.body) require('luasnip.loaders.from_vscode').lazy_load() end, }, window = { }, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.complete(), [''] = cmp.mapping.select_next_item(cmp_select), [''] = cmp.mapping.select_prev_item(cmp_select), [''] = cmp.mapping.confirm({ select = true }), }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, }) }) local capabilities = require('cmp_nvim_lsp').default_capabilities() require("lspconfig").lua_ls.setup({ capabilities = capabilities }) require("lspconfig").clangd.setup({ capabilities = capabilities }) require("lspconfig").pyright.setup({ capabilities = capabilities }) require("lspconfig").cmake.setup({ capabilities = capabilities }) require("lspconfig").jdtls.setup({ capabilities = capabilities }) require("lspconfig").fish_lsp.setup({ capabilities = capabilities }) require("lspconfig").rust_analyzer.setup({ capabilities = capabilities }) end } }