dotfiles/.config/nvim/lua/packer_init.lua

167 lines
4.3 KiB
Lua

-- 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'
use { 'EdenEast/nightfox.nvim', run = ':NightfoxCompile' }
-- 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'
-- Snippet engine is REQUIRED for nvim-cmp.
use 'L3MON4D3/LuaSnip'
-- nvim-cmp - completion plugin, used for LSP and Metals
use {
'hrsh7th/nvim-cmp',
requires = {
'hrsh7th/cmp-nvim-lsp',
'hrsh7th/cmp-path',
'hrsh7th/cmp-buffer',
'saadparwaiz1/cmp_luasnip'
--'PaterJason/cmp-conjure'
}
}
-- 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
}
-- nvim-tree for when I want to view files
use {
'kyazdani42/nvim-tree.lua',
requires = {
'kyazdani42/nvim-web-devicons'
},
tag = 'nightly',
config = function()
require('nvim-tree').setup()
end
}
-- Improve startup time by replacing default filetype autocmds
use 'nathom/filetype.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
}
-- Racket support
use 'benknoble/vim-racket'
-- PlantUML syntax
use 'aklt/plantuml-syntax'
-- Conjure: Supports all Lisps that I work with.
use {
'Olical/conjure',
ft = { 'rkt', 'racket' }
}
-- Terraform
use 'hashivim/vim-terraform'
end)