-- Automatically install packer 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 }) vim.o.runtimepath = vim.fn.stdpath('data') .. '/site/pack/*/start/*,' .. vim.o.runtimepath end -- Use a protected call so we don't error out on first use local status_ok, packer = pcall(require, 'packer') if not status_ok then return end return require('packer').startup(function(use) -- Plugin/package manager. use 'wbthomason/packer.nvim' -- Required for a number of Lua plugins. use 'nvim-lua/plenary.nvim' -- Color schemes use 'sainnhe/gruvbox-material' use 'rebelot/kanagawa.nvim' use 'marko-cerovac/material.nvim' -- Telescope: fuzzy finder use { 'nvim-telescope/telescope.nvim', requires = { { 'nvim-lua/plenary.nvim' } } } -- Native Telescope implementation based on FZF for performance. 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' } -- A pretty list for showing diagnostics, references, telescope results, -- quickfix and location lists to help you solve all the trouble your code -- is causing. use { 'folke/trouble.nvim', requires = 'kyazdani42/nvim-web-devicons', config = function() require('trouble').setup() end } -- Treesitter: Neovim bindings for the Tree-sitter parser generator tool and -- incremental parsing library. use { 'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' } -- Neovim-native LSP Implementation use 'neovim/nvim-lspconfig' -- nvim-cmp - completion plugin, used for LSP and Metals use { 'hrsh7th/nvim-cmp', requires = { 'hrsh7th/cmp-nvim-lsp', -- add once LSP is supported 'hrsh7th/cmp-path', 'hrsh7th/cmp-buffer' } } -- Metals, for Scala development. use { 'scalameta/nvim-metals', requires = { 'nvim-lua/plenary.nvim' }, --ft = { 'scala', 'sbt' } -- this is busted for some reason. } -- Lualine (configures the bottom bars) use { 'nvim-lualine/lualine.nvim', requires = 'kyazdani42/nvim-web-devicons' } -- bufferline - shows a bar at the top with open buffers -- using packer.nvim use { 'akinsho/bufferline.nvim', requires = 'kyazdani42/nvim-web-devicons', config = function() require('bufferline').setup() end } -- Floating terminal use 'voldikss/vim-floaterm' -- Show signs for Git use { 'lewis6991/gitsigns.nvim', config = function() require('gitsigns').setup() end } -- Show unobtrusive indentation guides use { 'lukas-reineke/indent-blankline.nvim', config = function() require('indent_blankline').setup() end } -- File manager for Neovim (backed by nnn) use { 'luukvbaal/nnn.nvim', config = function() require('nnn').setup() end } -- Improve startup time by replacing default filetype autocmds use 'nathom/filetype.nvim' -- Improve the core vim.ui use 'stevearc/dressing.nvim' -- Special highlighting and tracking for certain notable words use { 'folke/todo-comments.nvim', requires = 'nvim-lua/plenary.nvim', config = function() require('todo-comments').setup() end } end)