local packer = nil local function init() if packer == nil then packer = require 'packer' packer.init { disable_commands = true } end local use = packer.use packer.reset() -- Packer use '~/projects/personal/packer.nvim' use 'lewis6991/impatient.nvim' -- Async building & commands use { 'tpope/vim-dispatch', cmd = { 'Dispatch', 'Make', 'Focus', 'Start' } } -- Registers -- use 'junegunn/vim-peekaboo' use { '~/projects/personal/snap', rocks = 'fzy' } use 'mhinz/vim-sayonara' -- Marks use { 'kshenoy/vim-signature', config = [[require('config.signature')]], disable = true } use { 'tversteeg/registers.nvim', keys = { { 'n', '"' }, { 'i', '' } } } -- Movement use { 'chaoren/vim-wordmotion', 'justinmk/vim-sneak' } -- Quickfix use { 'Olical/vim-enmasse', cmd = 'EnMasse' } use 'kevinhwang91/nvim-bqf' -- Indentation tracking use 'lukas-reineke/indent-blankline.nvim' -- Commenting use 'tomtom/tcomment_vim' -- Wrapping/delimiters use { 'machakann/vim-sandwich', { 'andymass/vim-matchup', setup = [[require('config.matchup')]], event = 'User ActuallyEditing' }, } -- Search use 'romainl/vim-cool' -- Prettification use 'junegunn/vim-easy-align' use 'mhartington/formatter.nvim' -- Text objects use 'wellle/targets.vim' -- Search use { { 'nvim-telescope/telescope.nvim', requires = { 'nvim-lua/popup.nvim', 'nvim-lua/plenary.nvim', 'telescope-frecency.nvim', 'telescope-fzf-native.nvim', }, wants = { 'popup.nvim', 'plenary.nvim', 'telescope-frecency.nvim', 'telescope-fzf-native.nvim', }, setup = [[require('config.telescope_setup')]], config = [[require('config.telescope')]], cmd = 'Telescope', module = 'telescope', }, { 'nvim-telescope/telescope-frecency.nvim', after = 'telescope.nvim', requires = 'tami5/sql.nvim', }, { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make', }, } -- Project Management/Sessions use { 'dhruvasagar/vim-prosession', after = 'vim-obsession', requires = { { 'tpope/vim-obsession', cmd = 'Prosession' } }, config = [[require('config.prosession')]], } -- Undo tree use { 'mbbill/undotree', cmd = 'UndotreeToggle', config = [[vim.g.undotree_SetFocusWhenToggle = 1]], } -- Git use { { 'tpope/vim-fugitive', cmd = { 'Git', 'Gstatus', 'Gblame', 'Gpush', 'Gpull' }, disable = true }, { 'lewis6991/gitsigns.nvim', requires = { 'nvim-lua/plenary.nvim' }, config = [[require('config.gitsigns')]], }, { 'TimUntersberger/neogit', cmd = 'Neogit', config = [[require('config.neogit')]] }, } -- Pretty symbols use 'kyazdani42/nvim-web-devicons' -- REPLs use { 'hkupty/iron.nvim', setup = [[vim.g.iron_map_defaults = 0]], config = [[require('config.iron')]], cmd = { 'IronRepl', 'IronSend', 'IronReplHere' }, } -- Completion and linting use { 'onsails/lspkind-nvim', 'neovim/nvim-lspconfig', '~/projects/personal/lsp-status.nvim', 'folke/trouble.nvim', 'ray-x/lsp_signature.nvim', 'kosayoda/nvim-lightbulb', } -- Highlights use { 'nvim-treesitter/nvim-treesitter', requires = { 'nvim-treesitter/nvim-treesitter-refactor', 'nvim-treesitter/nvim-treesitter-textobjects', }, run = ':TSUpdate', } -- Documentation use { 'danymat/neogen', requires = 'nvim-treesitter', config = [[require('config.neogen')]], keys = { 'd', 'df', 'dc' }, } -- Lisps use 'gpanders/nvim-parinfer' -- Linting use 'mfussenegger/nvim-lint' -- Completion use { 'hrsh7th/nvim-cmp', requires = { 'L3MON4D3/LuaSnip', { 'hrsh7th/cmp-buffer', after = 'nvim-cmp' }, 'hrsh7th/cmp-nvim-lsp', { 'hrsh7th/cmp-path', after = 'nvim-cmp' }, { 'hrsh7th/cmp-nvim-lua', after = 'nvim-cmp' }, { 'saadparwaiz1/cmp_luasnip', after = 'nvim-cmp' }, }, config = [[require('config.cmp')]], event = 'InsertEnter *', } -- Endwise -- use 'tpope/vim-endwise' -- Debugger use { { 'mfussenegger/nvim-dap', setup = [[require('config.dap_setup')]], config = [[require('config.dap')]], requires = 'jbyuki/one-small-step-for-vimkind', wants = 'one-small-step-for-vimkind', module = 'dap', }, { 'rcarriga/nvim-dap-ui', requires = 'nvim-dap', after = 'nvim-dap', config = function() require('dapui').setup() end, }, } use { 'puremourning/vimspector', setup = [[vim.g.vimspector_enable_mappings = 'HUMAN']], disable = true, } -- Path navigation use 'justinmk/vim-dirvish' -- LaTeX use 'lervag/vimtex' -- Meson use 'igankevich/mesonic' -- PDDL use 'PontusPersson/pddl.vim' -- Zig use 'ziglang/zig.vim' -- Julia use { 'JuliaEditorSupport/julia-vim', setup = [[vim.g.latex_to_unicode_tab = 'off']], opt = true } -- Profiling use { 'dstein64/vim-startuptime', cmd = 'StartupTime', config = [[vim.g.startuptime_tries = 10]] } -- Refactoring use { 'ThePrimeagen/refactoring.nvim', opt = true } -- Plugin development use 'folke/lua-dev.nvim' -- Highlight colors use { 'norcalli/nvim-colorizer.lua', ft = { 'css', 'javascript', 'vim', 'html' }, config = [[require('colorizer').setup {'css', 'javascript', 'vim', 'html'}]], } -- Color scheme use '~/projects/personal/vim-nazgul' use 'hardselius/warlock' use 'arzg/vim-substrata' use 'sainnhe/gruvbox-material' -- Notes use { '~/projects/personal/pdf-scribe.nvim', config = [[require('config.pdf_scribe')]], disable = true, } use { { 'kristijanhusak/orgmode.nvim', opt = true }, { 'akinsho/org-bullets.nvim', opt = true } } -- Buffer management use { 'akinsho/nvim-bufferline.lua', requires = 'kyazdani42/nvim-web-devicons', config = [[require('config.bufferline')]], event = 'User ActuallyEditing', } use { 'lukas-reineke/headlines.nvim', config = function() require('headlines').setup() end, } end local plugins = setmetatable({}, { __index = function(_, key) init() return packer[key] end, }) return plugins