dotfiles/.config/nvim/lua/blake/plugins.lua

460 lines
16 KiB
Lua
Raw Normal View History

2021-09-03 01:18:44 -07:00
-- Load plugins
-- Bootstrap packer if needed {{
2021-09-03 01:18:44 -07:00
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
2021-09-05 13:47:46 -07:00
fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
vim.cmd 'packadd packer.nvim'
2021-09-03 01:18:44 -07:00
end
-- }}
2021-09-03 01:18:44 -07:00
local use = require('packer').use
return require('packer').startup({function()
-- TODO: Find a better way to organize this
-- impatient (needs to go early)
2022-07-26 02:24:10 -07:00
use { -- lewis6991: impatient: Make nvim load faster by caching them - needs to load early
'lewis6991/impatient.nvim',
config = function()
require('impatient')
end,
}
2021-09-03 01:18:44 -07:00
-- Packer
2022-07-26 02:24:10 -07:00
use { -- packer: plugin manager
'wbthomason/packer.nvim',
config = function()
-- Map :PS to :PackerSync
vim.cmd 'command! PS PackerSync'
end
2021-09-03 01:18:44 -07:00
}
-- Colors (decorations)
2022-07-26 02:24:10 -07:00
use { -- treesitter: syntax highlighting and more
2021-09-03 01:18:44 -07:00
'nvim-treesitter/nvim-treesitter', run = ':TSUpdate',
config = function()
require('blake.lsp').treesitter()
2021-09-03 01:18:44 -07:00
end,
}
2022-07-26 02:24:10 -07:00
use { -- onedark.nvim: onedark theme
2021-09-03 01:18:44 -07:00
'navarasu/onedark.nvim',
config = function()
-- vim.g.onedark_transparent_background = true
vim.cmd [[
2022-02-06 22:13:22 -08:00
"au ColorScheme onedark hi TabLine gui=none guibg='#282C34' guifg='#5C6370' " all tabs color
au ColorScheme onedark hi TabLineSel guibg='#282C34' guifg='#B5BBC7' " Highlighted tab color
2022-02-06 22:13:22 -08:00
"au ColorScheme onedark hi TabLineFill guibg='#282C34' " tabline portion without tabs (right-hand side)
]]
end
}
2022-07-26 02:24:10 -07:00
use { -- tokyonight.nvim: tokyonight theme
2022-06-04 22:12:08 -07:00
'folke/tokyonight.nvim',
config = function()
-- vim.g.onedark_transparent_background = true
vim.cmd [[
2022-06-17 01:36:55 -07:00
au ColorScheme tokyonight hi TabLine gui=none guibg='#1D202F' guifg='#565F89' " all tabs color
au ColorScheme tokyonight hi TabLineSel guibg='#24283B' guifg='#C0CAF5' " Highlighted tab color
2022-06-17 01:36:55 -07:00
au ColorScheme tokyonight hi TabLineFill guibg='#1D202F' " tabline portion without tabs (right-hand side)
]]
2022-06-17 01:36:55 -07:00
-- Has to be put here so it runs synchronously
vim.cmd 'colorscheme tokyonight'
end,
2022-06-04 22:12:08 -07:00
}
2022-07-26 02:24:10 -07:00
use { -- newspring: Good light theme for writing
'NLKNguyen/papercolor-theme',
}
2022-07-26 02:24:10 -07:00
use { -- statusline: lualine
'nvim-lualine/lualine.nvim',
requires = {'kyazdani42/nvim-web-devicons', opt = true},
config = function()
require('blake.other').lualine()
end,
}
2022-07-26 02:24:10 -07:00
use { -- nvim-tabline: batter looking tabline
2022-06-17 01:36:55 -07:00
'alvarosevilla95/luatab.nvim',
requires = 'kyazdani42/nvim-web-devicons',
config = function()
2022-06-17 01:36:55 -07:00
require('luatab').setup()
2021-09-03 01:18:44 -07:00
end
}
2022-07-26 02:24:10 -07:00
use { -- nvim-colorizer: css color tag highlighter (ex- #FFB13B)
'norcalli/nvim-colorizer.lua',
config = function()
vim.cmd 'command! COL ColorizerToggle'
end,
}
2021-09-03 01:18:44 -07:00
-- IDE features
---- LSP
2022-07-26 02:24:10 -07:00
use { -- lspinstall: language server installer, (lspconfig is here too)
2021-12-07 15:23:04 -08:00
'williamboman/nvim-lsp-installer',
2022-07-26 02:21:23 -07:00
{ -- lspconfig: default language server configurations
'neovim/nvim-lspconfig',
config = function()
require('blake.lsp').lspinstall()
require('blake.lsp').lspconfig()
end
}
2021-09-03 01:18:44 -07:00
}
2022-07-26 02:24:10 -07:00
use { -- ts-context-commentstring: set commentstring based on context from treesitter (two langs in one file)
'JoosepAlviste/nvim-ts-context-commentstring',
requires = 'nvim-treesitter/nvim-treesitter',
config = function()
require'nvim-treesitter.configs'.setup {
context_commentstring = {
enable = true,
enable_autocmd = false,
2022-01-08 05:18:04 -08:00
},
}
end,
}
2022-07-26 02:24:10 -07:00
use { -- cmp: completion menu
'hrsh7th/nvim-cmp',
config = function()
require('blake.lsp').cmp()
end,
requires = { -- (mostly) nvim-cmp sources (not required by cmp, but reqired by my configuration)
'onsails/lspkind-nvim', -- icons for entries of the completion menu
'hrsh7th/cmp-path',
'hrsh7th/cmp-nvim-lua',
'hrsh7th/cmp-nvim-lsp',
2022-04-25 14:00:19 -07:00
'saadparwaiz1/cmp_luasnip',
2021-11-25 05:16:30 -08:00
'ray-x/cmp-treesitter',
'hrsh7th/cmp-calc',
'f3fora/cmp-spell',
'hrsh7th/cmp-buffer',
2021-11-25 05:16:30 -08:00
'hrsh7th/cmp-cmdline',
'hrsh7th/cmp-emoji',
2021-12-07 15:23:04 -08:00
},
2021-09-05 13:47:46 -07:00
}
2022-07-26 02:24:10 -07:00
use { -- luasnip: snippits plugin
2022-04-25 14:00:19 -07:00
'L3MON4D3/LuaSnip',
2022-07-26 02:21:23 -07:00
config = function()
require("luasnip.loaders.from_vscode").lazy_load()
end
2022-04-25 14:00:19 -07:00
}
2022-07-26 02:24:10 -07:00
use { -- friendly-snippets: lots of good snippits
2022-07-26 02:21:23 -07:00
'rafamadriz/friendly-snippets'
}
2022-07-26 02:24:10 -07:00
use { -- lsp_signature: function parameter previews
'ray-x/lsp_signature.nvim',
after = 'nvim-lspconfig',
2021-09-03 01:18:44 -07:00
config = function()
require('blake.lsp').signature()
2021-09-03 01:18:44 -07:00
end,
}
2022-07-26 02:24:10 -07:00
use { -- symbols-outline: treesitter-based document outline (SO)
'simrat39/symbols-outline.nvim',
config = function()
vim.cmd 'command! SO SymbolsOutline'
2022-05-02 03:48:00 -07:00
vim.cmd 'nnoremap <Leader>so <cmd>SymbolsOutline<CR>'
end,
}
2022-07-26 02:24:10 -07:00
-- use { -- ALE: Support for lots of linters, etc
-- 'dense-analysis/ale',
-- ft = {'sh', 'zsh', 'zshrc', 'bashrc', 'bash'},
-- config = function()
-- vim.g.ale_disable_lsp = 1
-- end
-- }
---- DAP (Debug Adapter Protocol)
2022-07-26 02:24:10 -07:00
use { -- nvim-dap: DAP support
'mfussenegger/nvim-dap',
config = function()
require('blake.dap').nvim_dap()
end
}
2022-07-26 02:24:10 -07:00
-- use { -- dap-buddy: DAP adapter installer
-- 'Pocco81/dap-buddy.nvim',
-- config = function()
-- require('blake.dap').dap_buddy()
-- end
-- }
2022-07-26 02:24:10 -07:00
use { -- virtual-text: Print Variable names while debugging
'theHamsta/nvim-dap-virtual-text',
config = function()
2021-11-20 17:09:28 -08:00
require("nvim-dap-virtual-text").setup()
end
}
2022-07-26 02:24:10 -07:00
use { -- nvim-dap-ui: a UI for nvim-dap
'rcarriga/nvim-dap-ui',
config = function()
require('blake.dap').dap_ui()
end,
}
---- Other IDE features
2022-07-26 02:24:10 -07:00
use { -- telescope: fuzzy finder for finding fuzzy things
2022-04-15 14:32:46 -07:00
'nvim-telescope/telescope.nvim',
requires = { {'nvim-lua/plenary.nvim'} },
config = function()
require('blake.other').telescope()
end
}
2022-07-26 02:24:10 -07:00
use { -- gitsigns: git integration
2021-09-03 01:18:44 -07:00
'lewis6991/gitsigns.nvim',
requires = {
'nvim-lua/plenary.nvim'
},
2021-09-15 21:42:31 -07:00
config = function()
require('blake.other').gitsigns()
2021-09-15 21:42:31 -07:00
end,
2021-09-03 01:18:44 -07:00
}
2022-07-26 02:24:10 -07:00
-- use { -- nvim-tree: file manager
-- 'kyazdani42/nvim-tree.lua',
-- requires = 'kyazdani42/nvim-web-devicons',
-- config = function()
-- require('blake.other').nvimtree()
-- end
-- }
2022-07-26 02:24:10 -07:00
use { -- toggleterm: terminal
'akinsho/toggleterm.nvim',
tag = 'v1.*',
2021-09-03 01:18:44 -07:00
config = function()
require('blake.other').toggleterm()
2021-09-03 01:18:44 -07:00
end
}
2022-07-26 02:24:10 -07:00
use { -- neoscroll: Smooth Scrolling
'karb94/neoscroll.nvim',
config = function()
require('blake.other').neoscroll()
end,
2021-09-05 13:47:46 -07:00
}
2022-07-26 02:24:10 -07:00
use { -- auto-session: automatic session management
2021-09-07 17:59:31 -07:00
'rmagatti/auto-session',
config = function()
require('blake.other').autosession()
2021-09-07 17:59:31 -07:00
end
}
2022-07-26 02:24:10 -07:00
use { -- glow: Markdown preview
2021-09-15 21:39:21 -07:00
'ellisonleao/glow.nvim',
ft = { 'md', 'markdown', }
}
2022-07-26 02:24:10 -07:00
use { -- zen mode: (ZenMode or ZM)
"folke/zen-mode.nvim",
config = function()
2022-01-20 03:16:39 -08:00
require('blake.other').zenmode()
vim.cmd 'nnoremap <F10> <cmd>ZenMode<CR>'
2022-04-27 17:34:38 -07:00
vim.cmd 'inoremap <F10> <cmd>ZenMode<CR>'
end,
}
2022-07-26 02:24:10 -07:00
-- use { -- twilight.nvim: dim text outside paragraph or function
2022-01-30 20:05:19 -08:00
-- 'folke/twilight.nvim',
-- config = function()
-- vim.cmd 'command! TW Twilight'
-- require("twilight").setup()
-- end,
-- }
2022-07-26 02:24:10 -07:00
use { -- matchup: Use the percent (%) key for more things
'andymass/vim-matchup',
}
2022-07-26 02:24:10 -07:00
-- use { -- lightspeed: Jump around in files quickly
-- 'ggandor/lightspeed.nvim',
-- }
2022-07-26 02:24:10 -07:00
use { -- indentline: Line indent indicators
'lukas-reineke/indent-blankline.nvim',
config = function()
require('blake.other').indent_blankline()
end
}
2022-07-26 02:24:10 -07:00
-- use { -- targets.vim: fix ci' and other things to work right
-- 'wellle/targets.vim',
-- }
2021-09-03 01:18:44 -07:00
-- Conveniences
2022-07-26 02:24:10 -07:00
use { -- sort motion: (gs)
'christoomey/vim-sort-motion',
config = function()
vim.cmd [[
"let g:sort_motion_flags = 'i'
let g:sort_motion_visual_block_command = 'Vissort'
]]
end,
requires = 'navicore/vissort.vim', -- config requires
}
2022-07-26 02:24:10 -07:00
use { -- ghost: Web browser integration
2021-11-19 18:18:58 -08:00
'raghur/vim-ghost',
opt = true,
cmd = {'GhostStart', 'GhostInstall', 'GhostStop', 'GhostSync', 'GhostToggleSync',},
2021-11-19 18:18:58 -08:00
}
2022-07-26 02:24:10 -07:00
use { -- undotree: visual undo tree
2021-09-03 01:18:44 -07:00
'mbbill/undotree',
config = function()
vim.api.nvim_set_keymap('n', '<Leader>u', '<cmd>UndotreeToggle<CR>', { noremap = true, silent = true, })
end
2021-09-03 01:18:44 -07:00
}
2022-07-26 02:24:10 -07:00
-- use { -- shade.nvim: dim inactive window
-- 'sunjon/shade.nvim',
-- config = function()
-- require'shade'.setup({
-- overlay_opacity = 50,
-- opacity_step = 1,
-- keys = {
-- brightness_up = '<C-Up>',
-- brightness_down = '<C-Down>',
-- toggle = '<Leader>s',
-- }
-- })
-- end
-- }
2022-07-26 02:24:10 -07:00
use { -- nvim-autopairs: automatic quote pairing
2021-11-16 23:26:02 -08:00
'windwp/nvim-autopairs',
config = function()
-- If you want insert `(` after select function or method item
local cmp_autopairs = require('nvim-autopairs.completion.cmp')
local cmp = require('cmp')
cmp.event:on(
'confirm_done',
cmp_autopairs.on_confirm_done()
)
require('nvim-autopairs').setup({
check_ts = true,
map_c_h = true,
map_c_w = true,
})
end,
requires = 'hrsh7th/nvim-cmp', -- config requires
2021-11-16 23:26:02 -08:00
}
2022-07-26 02:24:10 -07:00
use { -- ts-autotag: automatically close html tags
'windwp/nvim-ts-autotag',
config = function()
require('nvim-ts-autotag').setup()
end
}
2022-07-26 02:24:10 -07:00
use { -- endwise: auto add 'end' keyword when typing loops in various languages
'RRethy/nvim-treesitter-endwise',
config = function()
require('nvim-treesitter.configs').setup {
endwise = {
enable = true,
},
}
end
}
use { -- cheat.sh integration
'dbeniamine/cheat.sh-vim',
2022-02-06 23:08:44 -08:00
}
2022-07-26 02:24:10 -07:00
use { -- nvim-align: Align text
2022-07-26 02:21:23 -07:00
'RRethy/nvim-align',
}
2022-07-26 02:24:10 -07:00
use { -- comment.nvim: toggle comments - gb and gc
2022-01-08 05:18:04 -08:00
'numToStr/Comment.nvim',
config = function()
require('Comment').setup {
pre_hook = function(ctx)
-- Only calculate commentstring for tsx filetypes
if vim.bo.filetype == 'typescriptreact' then
local U = require('Comment.utils')
-- Detemine whether to use linewise or blockwise commentstring
local type = ctx.ctype == U.ctype.line and '__default' or '__multiline'
-- Determine the location where to calculate commentstring from
local location = nil
if ctx.ctype == U.ctype.block then
location = require('ts_context_commentstring.utils').get_cursor_location()
elseif ctx.cmotion == U.cmotion.v or ctx.cmotion == U.cmotion.V then
location = require('ts_context_commentstring.utils').get_visual_start_location()
end
return require('ts_context_commentstring.internal').calculate_commentstring({
key = type,
location = location,
})
end
end,
}
end
}
2022-07-26 02:24:10 -07:00
use { -- vim-illuminate: highlight other occurrences of the word under cursor
2022-07-26 02:21:23 -07:00
'RRethy/vim-illuminate',
}
2022-07-26 02:24:10 -07:00
use { -- filetype.nvim: detect filetype a lot faster than stock neovim
2022-07-26 02:21:23 -07:00
'nathom/filetype.nvim',
}
2022-07-26 02:24:10 -07:00
use { -- vim-rooter: cd to the root of a project when opening a file or folder
2022-07-26 02:21:23 -07:00
'notjedi/nvim-rooter.lua',
}
2022-07-26 02:24:10 -07:00
use { -- splitjoin: switch between single line and multiline versions of code - gJ and gS
2022-07-26 02:21:23 -07:00
'AndrewRadev/splitjoin.vim',
}
2022-07-26 02:24:10 -07:00
use { -- rhysd: clever-split: split calculation based on pane dimensions - CS or CleverSplit
2022-07-26 02:21:23 -07:00
'rhysd/clever-split.vim',
config = function()
-- Map :CS to :CleverSplit
vim.cmd 'command! CS CleverSplit'
end
}
2022-07-26 02:24:10 -07:00
use { -- rhysd: textobj-anyblock: allow ab or ib instead of i( or a[ or any of the many other block selectors
2022-07-26 02:21:23 -07:00
'rhysd/vim-textobj-anyblock',
requires = 'kana/vim-textobj-user',
}
2022-07-26 02:24:10 -07:00
-- use { -- rhysd: accelerated jk: make j and k move faster by pressing them a lot movement
2022-07-26 02:21:23 -07:00
-- 'rhysd/accelerated-jk',
-- }
2022-07-26 02:24:10 -07:00
use { -- rhysd: committia: better commit editing window
'rhysd/committia.vim',
}
2022-07-26 02:24:10 -07:00
use { -- rhysd: conflict-marker: mark git conflicts - [x, ]x, co, ct, cb, cB, cn
'rhysd/conflict-marker.vim',
}
2022-07-26 02:24:10 -07:00
use { -- lewis6991: spellsitter: Spell checking in treesitter files
2022-06-04 22:27:17 -07:00
'lewis6991/spellsitter.nvim',
config = function()
require('spellsitter').setup()
end,
}
2022-07-26 02:24:10 -07:00
use { -- lewis6991: spaceless: Strip trailing whitespace as you are editing
'lewis6991/spaceless.nvim',
config = function()
require'spaceless'.setup()
end,
}
2022-07-26 02:24:10 -07:00
use { -- lewis6991: foldsigns: signcolumn signs on folded lines
'lewis6991/foldsigns.nvim',
config = function()
require('foldsigns').setup()
end,
}
2022-07-26 02:24:10 -07:00
use { -- lewis6991: cleanfold: folds have never looked better
'lewis6991/cleanfold.nvim',
config = function()
require('cleanfold').setup()
end,
}
2022-07-26 02:24:10 -07:00
-- use { -- lewis6991: sattelite: small scroll bar
-- 'lewis6991/satellite.nvim',
-- config = function()
-- require('satellite').setup()
-- vim.cmd [[
-- nnoremap <C-l> <cmd>nohlsearch\|diffupdate\|SatelliteRefresh<CR>
-- inoremap <C-l> <cmd>nohlsearch\|diffupdate\|SatelliteRefresh<CR>
-- ]]
-- end,
-- }
2022-07-26 02:24:10 -07:00
use { -- tpope: surround: surround text with quotes, parens, tags, and more - ys
2022-07-26 02:21:23 -07:00
'tpope/vim-surround',
2021-09-03 01:18:44 -07:00
}
2022-07-26 02:24:10 -07:00
use { -- tpope: fugitive: git integration
2022-07-26 02:21:23 -07:00
'tpope/vim-fugitive',
2021-09-03 01:18:44 -07:00
}
2022-07-26 02:24:10 -07:00
use { -- tpope: repeat: Repeatability for various tpope plugins
2021-09-03 01:18:44 -07:00
'tpope/vim-repeat',
}
2022-07-26 02:24:10 -07:00
use { -- tpope: sleuth: automatically get info about files and apply it to vim (tabs vs spaces, etc)
2022-01-02 17:40:03 -08:00
'tpope/vim-sleuth',
}
2021-10-20 10:57:24 -07:00
-- Bootstrap packer if needed {
if (packer_bootstrap) then
2021-10-20 10:57:24 -07:00
require('packer').sync()
end -- }
end,
config = {
display = { open_fn = require('packer.util').float },
-- Move to lua dir so impatient.nvim can cache it
compile_path = vim.fn.stdpath('config')..'/lua/packer_compiled.lua',
}})
2021-09-03 01:18:44 -07:00
2022-07-26 02:24:10 -07:00
-- vim command to align all plugin descriptions: select all plugins in visual line, :'<,'>Align \(.\+use { -- .\+: \+\)\@<=[^ ][^:]\+$
-- vim:fdm=marker:fmr={,}:fdl=1:expandtab:tabstop=3:sw=3