Dot_Files/.config/nvim/lua/plugins/plugins.lua

672 lines
18 KiB
Lua
Raw Normal View History

2022-01-12 21:36:47 -06:00
local fn = vim.fn
2022-01-15 22:07:21 -06:00
-- Packer strap, install packer automatically and configure plugins
-- See the end of this file for how the variable `packer_strap` gets used
2022-05-06 16:52:44 -05:00
local install_path = fn.stdpath('data') .. '/site/pack/packer/start/packer.nvim'
2022-01-12 21:36:47 -06:00
if fn.empty(fn.glob(install_path)) > 0 then
2022-05-06 16:52:44 -05:00
PACKER_STRAP = fn.system({
'git',
'clone',
'--depth',
'1',
'https://github.com/wbthomason/packer.nvim',
install_path,
})
-- Update the runtime so packer can be used
vim.o.runtimepath = vim.fn.stdpath('data') .. '/site/pack/*/start/*,' .. vim.o.runtimepath
2022-01-12 21:36:47 -06:00
end
2022-05-06 16:52:44 -05:00
local packer = require('packer')
2022-03-18 05:25:16 -05:00
packer.init({
2022-05-06 16:52:44 -05:00
max_jobs = 50,
2022-03-18 05:25:16 -05:00
})
return packer.startup({
2022-05-06 16:52:44 -05:00
function(use)
-- Performance boost on startup
-- keep at top of plugins
use({ 'lewis6991/impatient.nvim' })
-- Packer Itself
use({ 'wbthomason/packer.nvim' })
-- Commonly used library
use({
'nvim-lua/plenary.nvim',
})
-- Nvim Notify
use({
'rcarriga/nvim-notify',
config = function()
require('plugins.configs.nvim-notify')
end,
})
-- Color schemes
use({ 'folke/tokyonight.nvim' })
use({
'EdenEast/nightfox.nvim',
config = function()
require('nightfox').setup({
options = {
transparent = true,
dim_inactive = true,
},
})
end,
})
-- Icons for folders, files, etc.
use({
'kyazdani42/nvim-web-devicons',
event = 'BufEnter',
})
-- Tab Line at top of editor
use({
'akinsho/nvim-bufferline.lua',
after = 'nvim-web-devicons',
requires = { 'nvim-web-devicons' },
config = function()
require('plugins.configs.bufferline')
end,
})
-- Statusline.
use({
'nvim-lualine/lualine.nvim',
after = {
'nvim-bufferline.lua',
'tokyonight.nvim',
},
config = function()
require('plugins.configs.statusline')
end,
})
-- Indentation Guides
use({
'lukas-reineke/indent-blankline.nvim',
event = 'BufEnter',
config = function()
require('plugins.configs.indent-blankline')
end,
})
-- Treesitter
use({
'nvim-treesitter/nvim-treesitter',
run = ':TSUpdate',
config = function()
require('plugins.configs.treesitter')
end,
})
-- Better treesitter indentations
-- NOTE: Remove this once treesitter gets up to par
-- NOTE: this is just a placeholder until it is.
use({
'yioneko/nvim-yati',
requires = 'nvim-treesitter/nvim-treesitter',
})
-- Highlight given color codes
use({
'norcalli/nvim-colorizer.lua',
event = 'BufEnter',
config = function()
require('plugins.configs.nvim-colorizer')
end,
})
-- Dashboard when no file is given to nvim
use({
'glepnir/dashboard-nvim',
setup = function()
require('plugins.configs.dashboard-nvim')
end,
})
-- Telescope Extensions
use({
'nvim-telescope/telescope-fzf-native.nvim',
run = 'make',
})
use({
'nvim-telescope/telescope-media-files.nvim',
'nvim-telescope/telescope-file-browser.nvim',
'artart222/telescope_find_directories',
})
-- Telescope
use({
'nvim-telescope/telescope.nvim',
config = function()
require('plugins.configs.telescope-nvim')
end,
})
-- File Tree
use({
'nvim-neo-tree/neo-tree.nvim',
branch = 'v2.x',
requires = {
'kyazdani42/nvim-web-devicons',
'nvim-lua/plenary.nvim',
'MunifTanjim/nui.nvim',
},
config = function()
require('plugins.configs.neotree')
end,
})
-- LSP, LSP Installer
use({
'neovim/nvim-lspconfig',
config = function()
require('plugins.configs.lspconfig')
end,
2022-05-06 20:44:22 -05:00
requires = {
'folke/lua-dev.nvim',
},
2022-05-06 16:52:44 -05:00
})
use({
'williamboman/nvim-lsp-installer',
after = 'nvim-lspconfig',
config = function()
require('plugins.configs.lsp')
end,
})
-- Lsp Vertical Lines
use({
'https://git.sr.ht/~whynothugo/lsp_lines.nvim',
after = 'nvim-lspconfig',
config = function()
require('lsp_lines').register_lsp_virtual_lines()
end,
})
-- Display LSP Progress
use({
'j-hui/fidget.nvim',
config = function()
require('plugins.configs.fidget-spinner')
end,
-- after = "nvim-lspconfig"
})
-- Display Lsp Signature
use({
'ray-x/lsp_signature.nvim',
config = function()
require('lsp_signature').setup({
hint_prefix = '',
hint_enable = true,
floating_window = false,
toggle_key = '<M-x>',
})
end,
})
-- Code Action Menu, prettier ui for LSP code actions
require('packer').use({
'weilbith/nvim-code-action-menu',
cmd = 'CodeActionMenu',
})
-- Lsp From Null LS
use({
'jose-elias-alvarez/null-ls.nvim',
config = function()
require('plugins.configs.null_ls')
end,
})
-- Better LSP Handling for Rust
use({
'simrat39/rust-tools.nvim',
config = function()
require('rust-tools').setup({})
end,
})
-- Autopairs
use({
'windwp/nvim-autopairs',
config = function()
require('nvim-autopairs').setup()
end,
})
-- use({
-- "ms-jpq/coq_nvim",
-- config = function()
-- require("plugins.configs.coq")
-- end,
-- requires = {
-- "ms-jpq/coq.artifacts",
-- "ms-jpq/coq.thirdparty",
-- },
-- })
-- Snippets
use({
'L3MON4D3/LuaSnip',
'https://github.com/saadparwaiz1/cmp_luasnip',
event = 'VimEnter',
})
use({
'rafamadriz/friendly-snippets',
config = function()
require('luasnip.loaders.from_vscode').load()
end,
requires = {
'L3MON4D3/LuaSnip',
'https://github.com/saadparwaiz1/cmp_luasnip',
},
after = 'LuaSnip',
event = 'VimEnter',
})
-- Code completion
use({
'hrsh7th/nvim-cmp',
requires = {
'hrsh7th/cmp-nvim-lsp',
'hrsh7th/cmp-path',
'hrsh7th/cmp-cmdline',
'hrsh7th/cmp-emoji',
'hrsh7th/vim-vsnip',
'hrsh7th/cmp-nvim-lsp-document-symbol',
'hrsh7th/cmp-calc',
'davidsierradz/cmp-conventionalcommits',
'tamago324/cmp-zsh',
'dmitmel/cmp-cmdline-history',
'David-Kunz/cmp-npm',
'lukas-reineke/cmp-rg',
},
config = function()
require('plugins.configs._cmp')
end,
})
use({ 'romgrk/fzy-lua-native', run = 'make' })
use({
'tzachar/cmp-fuzzy-buffer',
requires = { 'hrsh7th/nvim-cmp', 'tzachar/fuzzy.nvim' },
})
use({ 'tzachar/cmp-fuzzy-path', requires = { 'hrsh7th/nvim-cmp', 'tzachar/fuzzy.nvim' } })
use({
'saecki/crates.nvim',
event = { 'BufRead Cargo.toml' },
requires = { { 'nvim-lua/plenary.nvim' } },
config = function()
require('crates').setup()
end,
})
-- Show code outline
use({
'simrat39/symbols-outline.nvim',
cmd = { 'SymbolsOutline', 'SymbolsOutlineOpen', 'SymbolsOutlineClose' },
config = function()
-- TODO: Clean this up and use the `nvim.api.nvim_set_hl` api
vim.cmd(
2022-05-07 18:41:06 -05:00
[[hi FocusedSymbol term=italic,bold cterm=italic ctermbg=yellow ctermfg=darkblue gui=bold,italic guibg=none guifg=#59D0FF]]
2022-05-06 16:52:44 -05:00
)
end,
})
-- DAP, debugger
use({
'mfussenegger/nvim-dap',
config = function()
require('dap.ext.vscode').load_launchjs()
require('plugins.configs._dap')
end,
})
-- Python debugger, dapinstall does not play nice with debugpy
use({
'mfussenegger/nvim-dap-python',
after = 'nvim-dap',
config = function()
require('plugins.configs.python-dap')
end,
})
-- Virtual Text for DAP
use({
'theHamsta/nvim-dap-virtual-text',
after = 'nvim-dap',
config = function()
require('nvim-dap-virtual-text').setup({})
end,
})
-- Fancy ui for dap
use({
'rcarriga/nvim-dap-ui',
after = 'nvim-dap',
config = function()
require('plugins.configs.dap-ui')
end,
})
-- Easy align, better than piping out to !column -t
use({
'junegunn/vim-easy-align',
cmd = { 'EasyAlign' },
})
-- Code formatting
use({
'sbdchd/neoformat',
cmd = 'Neoformat',
config = function()
require('plugins.configs.neoformat')
end,
})
use({
'anuvyklack/pretty-fold.nvim',
requires = 'anuvyklack/nvim-keymap-amend',
config = function()
require('pretty-fold').setup({
fill_char = ' ',
})
require('pretty-fold.preview').setup()
end,
})
-- Stabalize closing buffers
use({
'luukvbaal/stabilize.nvim',
config = function()
require('plugins.configs._stabilize')
end,
})
-- Git signs
use({
'lewis6991/gitsigns.nvim',
event = 'BufRead',
config = function()
require('gitsigns').setup({})
end,
})
-- Highlight certain comments, TODO, BUG, etc.
use({
'folke/todo-comments.nvim',
event = 'BufEnter',
config = function()
require('todo-comments').setup({})
end,
})
-- Show possible key bindings during typing
use({
'folke/which-key.nvim',
config = function()
require('which-key').setup({
-- Compatability fix between which-key & modes
plugins = {
presets = {
operators = false,
},
},
})
end,
})
-- Create full path if not existing on write
use({
'jghauser/mkdir.nvim',
cmd = 'new',
config = function()
require('mkdir')
end,
})
-- Text commenting
use({
'terrortylor/nvim-comment',
cmd = 'CommentToggle',
config = function()
require('nvim_comment').setup()
end,
})
-- Move selections with alt+movement key
use({
'matze/vim-move',
})
-- Register support in telescope with persistent save
use({
'AckslD/nvim-neoclip.lua',
requires = {
{ 'tami5/sqlite.lua', module = 'sqlite' },
{ 'nvim-telescope/telescope.nvim' },
},
config = function()
require('plugins.configs._neoclip')
end,
})
-- Markdown Previewer
use({
'iamcco/markdown-preview.nvim',
run = 'cd app && npm install',
setup = function()
vim.g.mkdp_filetypes = { 'markdown' }
end,
ft = { 'markdown' },
})
-- Allows manipulation of surrounding characters
use({
'tpope/vim-surround',
})
-- Better Git integration on the command line
use({
'tpope/vim-fugitive',
})
-- Ansible Syntax Highlighting
use({
'pearofducks/ansible-vim',
})
-- Better search display
use({
'kevinhwang91/nvim-hlslens',
module = 'hlslens',
keys = '/',
})
-- Lsp Diags on scrollbar
use({
'petertriho/nvim-scrollbar',
requires = {
'kevinhwang91/nvim-hlslens',
'folke/tokyonight.nvim',
},
after = 'nvim-hlslens',
config = function()
require('plugins.configs.diag-scrollbar')
end,
})
-- Better in-line Lsp Diags
-- use({
-- "https://git.sr.ht/~whynothugo/lsp_lines.nvim",
-- config = function()
-- require("lsp_lines").register_lsp_virtual_lines()
-- end,
-- })
-- Discord Rich Presence
use({
'andweeb/presence.nvim',
config = function()
require('presence'):setup({})
end,
})
-- Note Taking
use({
'nvim-neorg/neorg',
config = function()
require('plugins.configs._neorg')
end,
requires = {
'nvim-lua/plenary.nvim',
'nvim-neorg/neorg-telescope',
},
after = 'nvim-treesitter',
})
-- Log Syntax Highlighting
use({
'MTDL9/vim-log-highlighting',
})
-- Lots of small modules pulled into
-- one git repository
use({
'echasnovski/mini.nvim',
config = function()
-- Underline matching words to word undor cursor
require('mini.cursorword').setup({})
end,
})
-- Smoother Scrolling
use({
'karb94/neoscroll.nvim',
config = function()
require('neoscroll').setup({
easing_function = 'circular',
})
end,
})
-- Highlight cursorlines based on mode
use({
'mvllow/modes.nvim',
config = function()
local modes = require('modes')
modes.setup({
colors = {
visual = '#F959FF',
},
ignore_filetypes = {
'neo-tree',
'neo-tree-popup',
'TelescopePrompt',
},
})
end,
})
-- Generate function/class/etc annotations
use({
'danymat/neogen',
requires = 'nvim-treesitter/nvim-treesitter',
config = function()
require('neogen').setup({
snippet_engine = 'luasnip',
})
end,
})
-- Center code, make it visually prettier
use({
'folke/zen-mode.nvim',
config = function()
require('zen-mode').setup({})
end,
cmd = 'ZenMode',
})
-- Multiple cursor/multiple visual selection support
use({
'mg979/vim-visual-multi',
})
-- Editorconfig support
use({
'gpanders/editorconfig.nvim',
})
-- Run snippets in-line
use({
'michaelb/sniprun',
run = 'bash ./install.sh',
})
-- Maintain last cursor position in files
use({
'ethanholz/nvim-lastplace',
config = function()
require('nvim-lastplace').setup({
lastplace_ignore_buftype = { 'quickfix', 'nofile', 'help' },
lastplace_ignore_filetype = { 'gitcommit', 'gitrebase', 'svn', 'hgcommit', 'fugitive' },
lastplace_open_folds = true,
})
end,
})
use({
'/Users/pricehiller/Git/Nvim/Learn-Testing/uppercase.nvim',
config = function()
require('uppercase').setup()
end,
})
-- Leave at end!!!
-- Install and deploy packer plugins
-- automatically
if PACKER_STRAP then
vim.notify('Syncing packer from bootstrap')
function _G.NotifyRestartNeeded()
local notify_available, _ = require('notify')
local message = 'Neovim Restart Required to Finish Installation!'
if notify_available then
vim.notify(message, vim.lsp.log_levels.WARN, {
title = 'Packer Strap',
keep = function()
return true
end,
})
else
vim.notify(message)
end
end
vim.api.nvim_exec(
[[
autocmd User PackerCompileDone lua NotifyRestartNeeded()
]],
false
)
require('packer').sync()
end
end,
config = {
display = {
open_fn = function()
return require('packer.util').float({ border = 'double' })
end,
},
compile_path = vim.fn.stdpath('config') .. '/lua/packer_compiled.lua',
},
2022-01-10 09:55:15 -06:00
})