145 lines
3.8 KiB
Lua
145 lines
3.8 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'
|
|
|
|
-- 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)
|