local install_path = vim.fn.stdpath('data') .. '/site/pack/packer/start/packer.nvim' local packer_bootstrap if vim.fn.empty(vim.fn.glob(install_path)) > 0 then packer_bootstrap = vim.fn.system({ 'git', 'clone', 'https://github.com/wbthomason/packer.nvim', install_path }) vim.cmd [[packadd packer.nvim]] end require('packer').startup({ function(use) use { 'https://github.com/wbthomason/packer.nvim' } -- settings use { 'https://github.com/owozsh/amora' } use { 'https://github.com/editorconfig/editorconfig-vim' } use { 'https://github.com/antoinemadec/FixCursorHold.nvim' } use { 'https://github.com/ii14/autosplit.nvim' } -- filetypes use { 'https://github.com/nvim-treesitter/nvim-treesitter', run = [[TSUpdateSync]] } use { 'https://github.com/nvim-orgmode/orgmode', tag = '*', requires = 'https://github.com/nvim-treesitter/nvim-treesitter' } use { 'https://github.com/JoosepAlviste/nvim-ts-context-commentstring', requires = 'https://github.com/nvim-treesitter/nvim-treesitter' } use { 'https://github.com/gentoo/gentoo-syntax' } use { 'https://github.com/folke/todo-comments.nvim', requires = { 'https://github.com/nvim-lua/plenary.nvim' } } use { 'https://github.com/powerman/vim-plugin-AnsiEsc' } -- completion use { 'https://github.com/hrsh7th/nvim-cmp', requires = { 'https://github.com/hrsh7th/cmp-nvim-lsp', 'https://github.com/hrsh7th/cmp-buffer', 'https://github.com/hrsh7th/cmp-path', 'https://github.com/hrsh7th/cmp-cmdline', { 'https://github.com/saadparwaiz1/cmp_luasnip', requires = 'https://github.com/L3MON4D3/LuaSnip' }, 'https://github.com/hrsh7th/cmp-nvim-lua', 'https://github.com/uga-rosa/cmp-dictionary', } } -- lsp use { 'https://github.com/neovim/nvim-lspconfig', tag = '*', requires = 'https://github.com/hrsh7th/cmp-nvim-lsp' } use { 'https://github.com/lukas-reineke/lsp-format.nvim', tag = '*' } use { 'https://github.com/ray-x/lsp_signature.nvim' } use { 'https://github.com/p00f/clangd_extensions.nvim' } -- tools local nerdfont_installed = require('my.functions').nerdfont_installed() use { 'https://github.com/folke/which-key.nvim' } use { 'https://github.com/nvim-telescope/telescope.nvim', tag = '*', requires = { 'https://github.com/nvim-lua/plenary.nvim', 'https://github.com/nvim-treesitter/nvim-treesitter', { 'https://github.com/kyazdani42/nvim-web-devicons', cond = nerdfont_installed } }, } use { 'https://github.com/nvim-telescope/telescope-fzf-native.nvim', run = [[cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && \ cmake --build build --config Release && \ cmake --install build --prefix build]] } use { 'https://github.com/kyazdani42/nvim-tree.lua', tag = '*', requires = { { 'https://github.com/kyazdani42/nvim-web-devicons', cond = nerdfont_installed } } } use { 'https://github.com/nvim-lualine/lualine.nvim', requires = { { 'https://github.com/kyazdani42/nvim-web-devicons', cond = nerdfont_installed }, 'https://github.com/nvim-lua/lsp-status.nvim' } } use { 'https://codeberg.org/tastytea/bug-reference.nvim' } use { 'https://github.com/phaazon/mind.nvim', tag = '*' } -- coding use { 'https://github.com/numToStr/Comment.nvim', tag = '*' } use { 'https://github.com/TimUntersberger/neogit', requires = { 'https://github.com/nvim-lua/plenary.nvim', 'https://github.com/folke/which-key.nvim', 'https://github.com/sindrets/diffview.nvim' }, } use { 'https://github.com/windwp/nvim-autopairs' } use { 'https://github.com/L3MON4D3/LuaSnip' } use { 'https://github.com/tpope/vim-fugitive', tag = '*' } use { 'https://github.com/lewis6991/gitsigns.nvim', tag = '*' } -- use { 'https://github.com/ahmedkhalf/project.nvim' } use { -- 'https://github.com/tastytea/project.nvim', branch = 'fallback_current_dir' } use { 'https://github.com/mfussenegger/nvim-dap', tag = '*' } use { 'https://github.com/rcarriga/nvim-dap-ui', tag = '*', requires = 'https://github.com/mfussenegger/nvim-dap' } use { 'https://github.com/nvim-telescope/telescope-dap.nvim', requires = 'https://github.com/mfussenegger/nvim-dap' } use { 'https://github.com/theHamsta/nvim-dap-virtual-text', requires = 'https://github.com/mfussenegger/nvim-dap' } -- net use { -- embed nvim in browsers 'https://github.com/glacambre/firenvim', tag = '*', run = [[call firenvim#install(0)]] } -- ensure plugins are installed and compiled if packer_bootstrap then require('packer').sync() elseif not io.open(vim.fn.stdpath('config') .. '/plugin') then require('packer').install() end end, config = { git = { depth = 999999 }, display = { open_fn = require('packer.util').float } } }) -- source file, install and compile plugins when this file is written vim.api.nvim_create_augroup('config_plugins', { clear = true }) vim.api.nvim_create_autocmd({ 'BufWritePost' }, { group = 'config_plugins', pattern = { vim.fn.stdpath('config') .. '/lua/my/plugins.lua' }, command = [[source | PackerInstall]] }) vim.api.nvim_create_autocmd({ 'User' }, { group = 'config_plugins', pattern = 'PackerComplete', command = [[PackerCompile]] }) vim.api.nvim_create_autocmd({ 'User' }, { group = 'config_plugins', pattern = 'PackerCompileDone', command = [[echo 'plugins compiled']] })