vim.opt.number = true vim.opt.relativenumber = true vim.opt.expandtab = true vim.opt.tabstop = 8 vim.opt.softtabstop = 0 vim.opt.shiftwidth = 4 vim.opt.smarttab = true vim.opt.autoindent = true vim.opt.mouse = "a" vim.cmd("colorscheme habamax") local plugins = { { source = "neovim/nvim-lspconfig", }, { source = "hrsh7th/nvim-cmp", depends = { "hrsh7th/cmp-nvim-lsp" } } } local servers = { clangd = {} } -- Install plugin manager local mini_path = vim.fn.stdpath("data") .. "/site/pack/deps/start/mini.nvim" if not vim.loop.fs_stat(mini_path) then vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/echasnovski/mini.nvim", mini_path }) vim.cmd("packadd mini.nvim | helptags ALL") end require("mini.deps").setup({ path = { package = path_package } }) -- Install plugins for plugin in pairs(plugins) do MiniDeps.add(plugins[plugin]) end -- Setup completion local cmp = require("cmp") cmp.setup({ snippet = { expand = function(args) vim.snippet.expand(args.body) end, }, mapping = cmp.mapping.preset.insert({ [""] = cmp.mapping.complete(), [""] = cmp.mapping.confirm({ select = true }) }), sources = cmp.config.sources({ { name = "nvim_lsp" }, }) }, { { name = "buffer" }, }); -- Setup servers and their configs local capabilities = require("cmp_nvim_lsp").default_capabilities() local lspconfig = require("lspconfig") for server in pairs(servers) do local config = servers[server] config.capabilities = config.capabilities or capabilities lspconfig[server].setup(config) end -- Binds to jump between snippets vim.keymap.set({ "i", "s" }, "", function() if vim.snippet.active({ direction = 1 }) then return "lua vim.snippet.jump(1)" else return "" end end, { expr = true }) vim.keymap.set({ "i", "s" }, "", function() if vim.snippet.active({ direction = -1 }) then return "lua vim.snippet.jump(-1)" else return "" end end, { expr = true })