vim.cmd([[ augroup packer_user_config autocmd! autocmd BufWritePost my_plugins.lua source | PackerCompile augroup end ]]) local fn = vim.fn local install_path = fn.stdpath('data') .. '/site/pack/packer/start/packer.nvim' if fn.empty(fn.glob(install_path)) > 0 then packer_bootstrap = fn.system({ 'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path, }) end vim.api.nvim_command('packadd packer.nvim') local function get_setup(name) return string.format('require("setup/%s")', name) end local packerUtil = require('packer.util') require('packer').init({ snapshot_path = packerUtil.join_paths(vim.fn.stdpath('config'), 'snapshots'), display = { open_fn = require('packer.util').float, }, }) return require('packer').startup(function() -- Packer can manage itself as an optional plugin use({ 'wbthomason/packer.nvim' }) use({ 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate', config = get_setup('treesitter'), }) use({ 'nvim-telescope/telescope.nvim', requires = { { 'nvim-lua/popup.nvim' }, { 'nvim-lua/plenary.nvim' }, { 'kyazdani42/nvim-web-devicons' }, { 'nvim-telescope/telescope-fzf-native.nvim', run = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release -G Ninja && cmake --build build --config Release && cmake --install build --prefix build' }, }, config = get_setup('telescope'), }) use({ 'sainnhe/gruvbox-material', disable = true, config = get_setup('my_gruvbox-material') }) use({ 'luisiacc/gruvbox-baby', disable = true, config = get_setup('my_gruvbox-baby') }) use({ 'ellisonleao/gruvbox.nvim', disable = true, config = get_setup('gruvbox'), }) use({ 'eddyekofo94/gruvbox-flat.nvim', disable = false, config = get_setup('my_gruvbox_flat') }) use({ 'lukas-reineke/indent-blankline.nvim', requires = { 'nvim-treesitter/nvim-treesitter', }, config = get_setup('indent_blankline'), }) use({ 'nvim-lua/plenary.nvim' }) use({ 'lewis6991/gitsigns.nvim', config = get_setup('gitsigns'), }) use({ 'kyazdani42/nvim-tree.lua', requires = 'kyazdani42/nvim-web-devicons', config = get_setup('nvim-tree'), disable = true, }) use({ 'numToStr/Comment.nvim', config = get_setup('comment'), }) use({ 'hrsh7th/nvim-cmp', requires = { { 'hrsh7th/cmp-buffer', after = 'nvim-cmp' }, { 'hrsh7th/cmp-nvim-lsp', after = 'nvim-cmp' }, { 'L3MON4D3/LuaSnip', after = 'nvim-cmp' }, { 'saadparwaiz1/cmp_luasnip', after = 'nvim-cmp' }, { 'hrsh7th/cmp-nvim-lua', after = 'nvim-cmp' }, { 'octaltree/cmp-look', after = 'nvim-cmp' }, { 'hrsh7th/cmp-path', after = 'nvim-cmp' }, { 'hrsh7th/cmp-calc', after = 'nvim-cmp' }, { 'f3fora/cmp-spell', after = 'nvim-cmp' }, { 'hrsh7th/cmp-emoji', after = 'nvim-cmp' }, { 'hrsh7th/cmp-cmdline', after = 'nvim-cmp' }, { 'dmitmel/cmp-cmdline-history', after = 'nvim-cmp' }, { 'ray-x/cmp-treesitter', after = 'nvim-cmp' }, { 'hrsh7th/cmp-nvim-lsp-signature-help', after = 'nvim-cmp' }, { 'p00f/clangd_extensions.nvim' }, }, config = get_setup('my_cmp'), module = { "nvim-cmp", "cmp" }, event = "InsertEnter *", }) use({ 'L3MON4D3/LuaSnip', config = get_setup('luasnip'), module = { "luasnip", "LuaSnip" } }) use({ 'rafamadriz/friendly-snippets' }) use({ 'onsails/lspkind-nvim' }) use({ 'hoob3rt/lualine.nvim', requires = { 'kyazdani42/nvim-web-devicons', opt = true }, config = get_setup('lualine'), }) use({ 'ahmedkhalf/project.nvim', config = get_setup('project'), }) use({ 'p00f/nvim-ts-rainbow', requires = 'nvim-treesitter/nvim-treesitter', }) use({ 'windwp/nvim-autopairs', config = get_setup('nvim-autopairs'), }) use({ 'ray-x/lsp_signature.nvim' }) use({ 'neovim/nvim-lspconfig', requires = { 'williamboman/mason.nvim', 'williamboman/mason-lspconfig.nvim', 'p00f/clangd_extensions.nvim', }, config = get_setup('my_lspconfig'), module_pattern = { "lspconfig.*" }, event = { "InsertEnter", "CursorMoved" }, }) use({ 'jose-elias-alvarez/null-ls.nvim', requires = { 'nvim-lua/plenary.nvim' }, }) use({ 'danymat/neogen', requires = 'nvim-treesitter/nvim-treesitter', config = get_setup('neogen'), opt = true, module = 'neogen' }) use({ 'stevearc/dressing.nvim' }) use({ 'nvim-neo-tree/neo-tree.nvim', requires = { 'nvim-lua/plenary.nvim', 'kyazdani42/nvim-web-devicons', { 'MunifTanjim/nui.nvim', module = 'nui' }, }, config = get_setup('neo-tree'), opt = true, keys = { { 'n', '\\' } } }) use({ 'akinsho/toggleterm.nvim', config = get_setup('toggleterm'), }) use({ 'mrjones2014/legendary.nvim', config = get_setup('my_legendary') }) use({ 'gbprod/yanky.nvim', config = get_setup('yanky'), keys = { { 'n', '' }, { 'n', '' } }, requires = { 'nvim-telescope/telescope.nvim' } }) use { 'ldelossa/litee.nvim', disable = true, requires = { 'ldelossa/litee-calltree.nvim', 'ldelossa/litee-symboltree.nvim', 'ldelossa/gh.nvim' }, config = get_setup('my_litee') } use { 'stevearc/aerial.nvim', requires = { 'nvim-telescope/telescope.nvim' }, config = get_setup('aerial'), opt = true, module = 'aerial', keys = { { 'n', 's' } } } use { 'ggandor/leap.nvim', requires = { 'tpope/vim-repeat' }, config = get_setup('my_leap') } use { 'mfussenegger/nvim-dap', requires = { 'mfussenegger/nvim-dap-python', { 'theHamsta/nvim-dap-virtual-text', module = 'nvim-dap-virtual-text' }, { 'nvim-telescope/telescope-dap.nvim', module = 'telescope._extensions.dap', requires = 'telescope.nvim', }, { 'rcarriga/nvim-dap-ui', module = 'dapui' }, { 'rcarriga/cmp-dap', module = 'cmp_dap' }, }, keys = { { 'n', '' }, { 'n', '' }, { 'n', '' }, { 'n', '' }, { 'n', '' }, { 'n', '' }, { 'n', '' }, { 'n', '' } }, -- module = 'dap', config = function() require('setup/my_dap') end, opt = true, } use { 'sindrets/diffview.nvim', requires = 'nvim-lua/plenary.nvim', config = get_setup('my_diffview'), opt = true, cmd = 'DiffviewOpen', module = { 'diffview', 'diffview.actions' } } use { 'stevearc/overseer.nvim', config = get_setup('my_overseer'), opt = true, keys = { { 'n', '' } }, module = 'overseer' } if packer_bootstrap then require('packer').sync() end end)