local fn = vim.fn -- boostrap packer local install_path = fn.stdpath('data') .. '/site/pack/packer/opt/packer.nvim' local packer_bootstrap if fn.empty(fn.glob(install_path)) > 0 then packer_bootstrap = fn.system({ 'git', 'clone', 'https://github.com/wbthomason/packer.nvim', install_path }) end -- run PackerSync everytime plugins.lua is updated vim.cmd([[ augroup packer_user_config autocmd! autocmd BufWritePost plugins.lua source | PackerSync augroup end ]]) vim.cmd([[packadd packer.nvim]]) -- initialize plugins return require('packer').startup(function(use) -- let packer manage itself use({ 'wbthomason/packer.nvim', opt = true }) -- theme use("ishan9299/nvim-solarized-lua") -- commenting use { 'numToStr/Comment.nvim', config = function() require('Comment').setup({}) end } -- session handling use('tpope/vim-obsession') use('dhruvasagar/vim-prosession') -- tabline use { 'kdheepak/tabline.nvim', config = function() require 'tabline'.setup { enable = true, options = { show_bufnr = true, show_filename_only = true } } end, requires = { { 'hoob3rt/lualine.nvim' }, { 'kyazdani42/nvim-web-devicons', opt = true } } } -- status line use { 'nvim-lualine/lualine.nvim', requires = { 'kyazdani42/nvim-web-devicons', opt = true }, config = function() require('lualine').setup({ options = { globalstatus = true }, sections = { lualine_c = { { "filename", path = 1 }, "require('lsp-status').status()" } }, extensions = { "toggleterm" } }) end } -- blankline use({ "lukas-reineke/indent-blankline.nvim", config = function() require("indent_blankline").setup { char = "┊", buftype_exclude = { "terminal", "help", "nofile" }, filetype_exclude = { 'help', 'packer' }, show_trailing_blankline_indent = false } end }) -- git use('tpope/vim-fugitive') use({ 'lewis6991/gitsigns.nvim', requires = { 'nvim-lua/plenary.nvim' }, config = function() require('gitsigns').setup() end }) use("junegunn/gv.vim") -- autocompletion use({ "L3MON4D3/LuaSnip", requires = { "rafamadriz/friendly-snippets" }, config = function() require("luasnip.loaders.from_vscode").lazy_load() end }) use({ "hrsh7th/nvim-cmp", requires = { "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-buffer", "hrsh7th/cmp-path", "hrsh7th/cmp-cmdline", "hrsh7th/cmp-git", "hrsh7th/cmp-nvim-lua", "saadparwaiz1/cmp_luasnip", "hrsh7th/cmp-nvim-lsp-signature-help", "davidsierradz/cmp-conventionalcommits", "hrsh7th/cmp-nvim-lua", "hrsh7th/cmp-calc" }, config = function() require('plugins.nvim-cmp') end, }) -- language server use { 'junnplus/nvim-lsp-setup', requires = { 'neovim/nvim-lspconfig', 'williamboman/nvim-lsp-installer', -- additional rust tools "simrat39/rust-tools.nvim", -- highlight current symbol "RRethy/vim-illuminate", -- lua plugin development "folke/lua-dev.nvim", -- lsp status "nvim-lua/lsp-status.nvim", }, config = function() require('plugins.nvim-lsp-setup') end, } -- null-ls use { "jose-elias-alvarez/null-ls.nvim", requres = { { "nvim-lua/plenary.nvim" }, }, config = function() require("null-ls").setup({ sources = { require("null-ls").builtins.formatting.prettier, }, on_attach = function(client) local utils = require("nvim-lsp-setup.utils") utils.format_on_save(client) end, }) end, } -- treesitter use({ 'nvim-treesitter/nvim-treesitter', config = function() require('plugins.treesitter') end, run = ':TSUpdate' }) -- Telescope use({ "nvim-telescope/telescope.nvim", requires = { { "nvim-lua/plenary.nvim" }, { "nvim-telescope/telescope-fzf-native.nvim", run = "make" }, { "nvim-telescope/telescope-ui-select.nvim" }, }, config = function() require("plugins.telescope") end }) -- automatic pairs use({ "Raimondi/delimitMate" }) -- markdown preview use({ "iamcco/markdown-preview.nvim", run = ":call mkdp#util#install()" }) -- terminal use({ "akinsho/nvim-toggleterm.lua", config = function() require("toggleterm").setup({ size = 32, open_mapping = [[]] }) end }) -- buffer closing use({ "sar/bbye.nvim" }) -- ansible filetype use({ "pearofducks/ansible-vim" }) -- nvim-notify use({ "rcarriga/nvim-notify", config = function() require("notify").setup({ stages = "fade", }) vim.notify = require("notify") end }) if packer_bootstrap then require('packer').sync() end end)