local M = {} function M.setup() local ensure_packer = function() 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 fn.system({ 'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path }) vim.cmd [[packadd packer.nvim]] return true end return false end local packer_bootstrap = ensure_packer() local startup = function(use) use 'wbthomason/packer.nvim' use { 'lewis6991/impatient.nvim', config = function() require('impatient') end, } use { 'neovim/nvim-lspconfig', config = function() require('configs.lsp').setup() end, requires = { 'b0o/schemastore.nvim' } } use { 'hrsh7th/nvim-cmp', requires = { 'neovim/nvim-lspconfig' }, config = require('configs.nvim-cmp').setup } use { 'hrsh7th/cmp-nvim-lsp', requires = { 'hrsh7th/nvim-cmp' } } use { 'hrsh7th/cmp-buffer', requires = { 'hrsh7th/nvim-cmp' } } use { 'hrsh7th/cmp-path', requires = { 'hrsh7th/nvim-cmp' } } use { 'hrsh7th/cmp-nvim-lua', requires = { 'hrsh7th/nvim-cmp' } } use { 'hrsh7th/vim-vsnip', config = function() vim.api.nvim_exec([[ imap vsnip#jumpable(1) ? '(vsnip-jump-next)' : '' smap vsnip#jumpable(1) ? '(vsnip-jump-next)' : '' imap vsnip#jumpable(-1) ? '(vsnip-jump-prev)' : '' smap vsnip#jumpable(-1) ? '(vsnip-jump-prev)' : '' ]], false) end } use { 'rafamadriz/friendly-snippets' } use 'hrsh7th/cmp-nvim-lsp-signature-help' use { 'hrsh7th/cmp-vsnip', requires = { 'hrsh7th/nvim-cmp', 'hrsh7th/vim-vsnip' } } use { 'onsails/lspkind.nvim' } use 'ray-x/lsp_signature.nvim' use { 'RishabhRD/nvim-lsputils', requires = { 'RishabhRD/popfix' } } -- use { 'stevearc/dressing.nvim', config = function() -- require('dressing').setup({ -- input = { -- relative = 'editor', -- }, -- }) -- end } use { 'jose-elias-alvarez/null-ls.nvim', requires = { 'nvim-lua/plenary.nvim' }, config = require('configs.null-ls').setup } use { 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate', config = require('configs.treesitter').setup, } use 'nvim-treesitter/playground' use({ 'yioneko/nvim-yati', requires = 'nvim-treesitter/nvim-treesitter', tag = 'legacy' }) use { 'nvim-telescope/telescope.nvim', requires = { 'nvim-lua/popup.nvim', 'nvim-lua/plenary.nvim' }, config = require('configs.telescope').setup, } use { 'nvim-telescope/telescope-ui-select.nvim' } use { '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 { 'gruvbox-community/gruvbox' } use { 'chrisbra/Colorizer', cmd = 'ColorToggle', keys = { 'n', 'c ColorToggle' } } use { 'numToStr/FTerm.nvim', config = require('configs.fterm').setup } use { 'lewis6991/gitsigns.nvim', requires = { 'nvim-lua/plenary.nvim' }, config = function() require 'gitsigns'.setup({}) end } use { 'hoob3rt/lualine.nvim', requires = { 'kyazdani42/nvim-web-devicons' }, config = require('configs.lualine').setup } use { 'AndrewRadev/linediff.vim', cmd = 'LineDiffAdd' } use 'lukas-reineke/indent-blankline.nvim' use { 'b3nj5m1n/kommentary', config = function() local kommentary = require('kommentary.config') kommentary.configure_language('php', { prefer_single_line_comments = true, }) kommentary.configure_language('lua', { prefer_single_line_comments = true, }) end } use 'editorconfig/editorconfig-vim' use { 'kyazdani42/nvim-tree.lua', config = require('configs.nvimtree'), disable = true, } use { 'nvim-neo-tree/neo-tree.nvim', branch = 'v2.x', requires = { 'nvim-lua/plenary.nvim', 'kyazdani42/nvim-web-devicons', -- not strictly required, but recommended 'MunifTanjim/nui.nvim', }, config = require('configs.neotree').setup, } use { 'vlada-dudr/vdebug', opt = true, } use { 'dyng/ctrlsf.vim', cmd = 'CtrlSF' } use { 'folke/neodev.nvim' } use { 'AndrewRadev/tagalong.vim' } use { 'andymass/vim-matchup' } use { 'fpob/nette.vim', ft = 'nette' } use { 'kchmck/vim-coffee-script' } use { 'folke/trouble.nvim', requires = 'kyazdani42/nvim-web-devicons', cmd = 'TroubleToggle', keys = { 'n', 't TroubleToggle' }, config = function() require('trouble').setup({ mode = 'document_diagnostics' }) end } use { 'ziglang/zig.vim', ft = 'zig' } if packer_bootstrap then require('packer').sync() end end require('packer').startup({ startup, config = { max_jobs = 5, transitive_disable = false, display = { open_fn = function() return require('packer.util').float { border = 'single' } end, }, } }) end return M