return { { "windwp/nvim-autopairs", lazy = true, event = "InsertEnter", opts = { -- Treesitter config check_ts = true, ts_config = { lua = { "string" }, -- do not add pair in this node }, -- General config map_cr = true, }, }, { "neovim/nvim-lspconfig", dependencies = { "williamboman/mason-lspconfig.nvim", "hrsh7th/cmp-nvim-lsp", -- Interface for nvim-cmp }, init = function() require("mason-lspconfig").setup_handlers { function(server_name) require("lspconfig")[server_name].setup { capabilities = capabilites, } end } end }, { "williamboman/mason-lspconfig.nvim", -- LSP Installer dependencies = { "williamboman/mason.nvim" }, opts = { automatic_installation = true, ensure_installed = { -- May need cargo (>1.80), unzip and npm "asm_lsp", "bashls", "clangd", "neocmake", "pyright", }, }, }, { "hrsh7th/nvim-cmp", event = "InsertEnter", dependencies = { -- Snippet engine "L3MON4D3/LuaSnip", "saadparwaiz1/cmp_luasnip", -- Plugins "hrsh7th/cmp-buffer", -- indexer "hrsh7th/cmp-path", -- Autocomplete for filesystem paths "hrsh7th/cmp-cmdline", -- Autocomplete for vims commandline "hrsh7th/cmp-nvim-lua", -- Autocomplete for vim options }, config = function() local cmp = require("cmp") cmp.setup({ snippet = { expand = function(args) require("luasnip").lsp_expand(args.body) end }, sources = { { name = "nvim_lsp" }, { name = "luasnip" }, { name = "buffer" }, { name = "path" }, }, enabled = function() local context = require("cmp.config.context") -- disable in autocomplete in comments return not (context.in_treesitter_capture("comment") or context.in_syntax_group("Comment")) end }) cmp.setup.cmdline({ '/', '?' }, { mapping = cmp.mapping.preset.cmdline(), sources = { { name = 'buffer' } } } ) cmp.setup.cmdline(':', { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources( {{ name = 'path' }}, {{ name = 'cmdline' }} ), matching = { disallow_symbol_nonprefix_matching = false } }) end } }