344 lines
12 KiB
Lua
344 lines
12 KiB
Lua
-- Load plugins
|
|
-- Bootstrap packer if needed {{
|
|
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
|
|
fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
|
|
vim.cmd 'packadd packer.nvim'
|
|
end
|
|
-- }}
|
|
|
|
local use = require('packer').use
|
|
|
|
return require('packer').startup({function()
|
|
-- TODO: Find a better way to organize this
|
|
|
|
-- impatient (needs to go early)
|
|
use { -- lewis6991: impatient: Make nvim load faster by caching them
|
|
'lewis6991/impatient.nvim',
|
|
config = function()
|
|
require('impatient')
|
|
end,
|
|
}
|
|
|
|
-- Packer
|
|
use { -- packer
|
|
'wbthomason/packer.nvim',
|
|
config = function()
|
|
-- Map :PS to :PackerSync
|
|
vim.cmd 'command! PS PackerSync'
|
|
end
|
|
}
|
|
|
|
-- Colors (decorations)
|
|
use { -- treesitter: syntax highlighting and more
|
|
'nvim-treesitter/nvim-treesitter', run = ':TSUpdate',
|
|
config = function()
|
|
require('blake.lsp').treesitter()
|
|
end,
|
|
}
|
|
use { -- onedark theme
|
|
'navarasu/onedark.nvim',
|
|
config = function()
|
|
-- vim.g.onedark_transparent_background = true
|
|
vim.cmd [[
|
|
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
|
|
au ColorScheme onedark hi TabLineFill guibg='#282C34' " tabline portion without tabs (right-hand side)
|
|
colorscheme onedark
|
|
]]
|
|
end
|
|
}
|
|
use { -- statusline: lualine
|
|
'nvim-lualine/lualine.nvim',
|
|
requires = {'kyazdani42/nvim-web-devicons', opt = true},
|
|
config = function()
|
|
require('blake.other').lualine()
|
|
end,
|
|
}
|
|
use { -- tabline
|
|
'alvarosevilla95/luatab.nvim',
|
|
requires = 'kyazdani42/nvim-web-devicons',
|
|
config = function()
|
|
-- vim.cmd [[
|
|
-- exec('au ColorScheme gruvbox hi TabLine gui=none guibg=' . $color01 . ' guifg=' . $color03)
|
|
-- exec('au ColorScheme gruvbox hi TabLineSel guibg=' . $color01 . ' guifg=' . $color06)
|
|
-- exec('au ColorScheme gruvbox hi TabLineFill guibg=' . $color01)
|
|
-- ]]
|
|
require('luatab').setup {}
|
|
end
|
|
}
|
|
use { -- css color tag highlighter (ex: #FFB13B)
|
|
'norcalli/nvim-colorizer.lua',
|
|
config = function()
|
|
vim.cmd 'command! COL ColorizerToggle'
|
|
end,
|
|
}
|
|
|
|
-- IDE features
|
|
---- LSP (document analysis)
|
|
use { -- lsp installer
|
|
'williamboman/nvim-lsp-installer',
|
|
}
|
|
use { -- Default LSP configs
|
|
'neovim/nvim-lspconfig',
|
|
before = 'williamboman/nvim-lsp-installer',
|
|
config = function()
|
|
require('blake.lsp').lspconfig()
|
|
end
|
|
}
|
|
use { -- commentstring based on context from treesitter
|
|
'JoosepAlviste/nvim-ts-context-commentstring',
|
|
requires = 'nvim-treesitter/nvim-treesitter',
|
|
config = function()
|
|
require'nvim-treesitter.configs'.setup {
|
|
context_commentstring = {
|
|
enable = true,
|
|
enable_autocmd = false,
|
|
}
|
|
}
|
|
end,
|
|
}
|
|
use { -- compe
|
|
'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',
|
|
'ray-x/cmp-treesitter',
|
|
'hrsh7th/cmp-calc',
|
|
'f3fora/cmp-spell',
|
|
'hrsh7th/cmp-buffer',
|
|
'hrsh7th/cmp-cmdline',
|
|
'hrsh7th/cmp-emoji',
|
|
},
|
|
}
|
|
use { -- function parameter previews
|
|
'ray-x/lsp_signature.nvim',
|
|
after = 'nvim-lspconfig',
|
|
config = function()
|
|
require('blake.lsp').signature()
|
|
end,
|
|
}
|
|
use { -- symbols-outline: treesitter-based document outline (:SO)
|
|
'simrat39/symbols-outline.nvim',
|
|
config = function()
|
|
vim.cmd 'command! SO SymbolsOutline'
|
|
end,
|
|
}
|
|
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)
|
|
use { -- nvim-dap: DAP support
|
|
'mfussenegger/nvim-dap',
|
|
config = function()
|
|
require('blake.dap').nvim_dap()
|
|
end
|
|
}
|
|
use { -- DAP adapter installer
|
|
'Pocco81/DAPInstall.nvim',
|
|
config = function()
|
|
require('blake.dap').dap_install()
|
|
end
|
|
}
|
|
use { -- virtual-text: Print Variable names while debugging
|
|
'theHamsta/nvim-dap-virtual-text',
|
|
config = function()
|
|
require("nvim-dap-virtual-text").setup()
|
|
end
|
|
}
|
|
use { -- a UI for nvim-dap (easy access to info)
|
|
'rcarriga/nvim-dap-ui',
|
|
config = function()
|
|
require('blake.dap').dap_ui()
|
|
end,
|
|
}
|
|
|
|
---- Other IDE features
|
|
use { -- git integration
|
|
'lewis6991/gitsigns.nvim',
|
|
requires = {
|
|
'nvim-lua/plenary.nvim'
|
|
},
|
|
config = function()
|
|
require('blake.other').gitsigns()
|
|
end,
|
|
}
|
|
-- use { -- file manager
|
|
-- 'kyazdani42/nvim-tree.lua',
|
|
-- requires = 'kyazdani42/nvim-web-devicons',
|
|
-- config = function()
|
|
-- require('blake.other').nvimtree()
|
|
-- end
|
|
-- }
|
|
use { -- terminal
|
|
'akinsho/toggleterm.nvim',
|
|
config = function()
|
|
require('blake.other').toggleterm()
|
|
end
|
|
}
|
|
use { -- Smooth Scrolling
|
|
'karb94/neoscroll.nvim',
|
|
config = function()
|
|
require('blake.other').neoscroll()
|
|
end,
|
|
}
|
|
use { -- automatic session management
|
|
'rmagatti/auto-session',
|
|
config = function()
|
|
require('blake.other').autosession()
|
|
end
|
|
}
|
|
use { -- Markdown preview
|
|
'ellisonleao/glow.nvim',
|
|
ft = { 'md', 'markdown', }
|
|
}
|
|
use { -- Zen mode (:ZenMode or :ZM)
|
|
"folke/zen-mode.nvim",
|
|
config = function()
|
|
vim.cmd 'command! ZM ZenMode'
|
|
require("zen-mode").setup()
|
|
end,
|
|
}
|
|
use { -- dim text outside paragraph or function
|
|
'folke/twilight.nvim',
|
|
config = function()
|
|
vim.cmd 'command! TW Twilight'
|
|
require("twilight").setup()
|
|
end,
|
|
}
|
|
use { -- matchup: Use the percent (%) key for more things
|
|
'andymass/vim-matchup',
|
|
}
|
|
-- use { -- lightspeed: Jump around in files quickly
|
|
-- 'ggandor/lightspeed.nvim',
|
|
-- }
|
|
use { -- indentline: Line indent indicators
|
|
'Yggdroot/indentLine',
|
|
config = function()
|
|
vim.cmd [[
|
|
let g:indentLine_char = '▏'
|
|
let g:indentLine_conceallevel = 1
|
|
let g:indentLine_fileTypeExclude = ['markdown', 'help', 'packer']
|
|
autocmd TermOpen * IndentLinesDisable
|
|
]]
|
|
end
|
|
}
|
|
use { -- targets.vim: fix ci' and other things to work right
|
|
'wellle/targets.vim',
|
|
}
|
|
|
|
-- Conveniences
|
|
use { -- Ghost: Web browser integration
|
|
'raghur/vim-ghost',
|
|
opt = true,
|
|
cmd = {'GhostStart', 'GhostInstall', 'GhostStop', 'GhostSync', 'GhostToggleSync',},
|
|
}
|
|
use { -- Undo tree
|
|
'mbbill/undotree',
|
|
config = function()
|
|
vim.cmd 'nnoremap <F5> <cmd>UndotreeToggle<CR>'
|
|
vim.api.nvim_set_keymap('n', '<F5>', '<cmd>UndotreeToggle<CR>', { noremap = true, silent = true, })
|
|
end
|
|
}
|
|
-- use { -- 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
|
|
-- }
|
|
use { -- Quote pairing
|
|
'windwp/nvim-autopairs',
|
|
config = function()
|
|
require('nvim-autopairs').setup()
|
|
end
|
|
}
|
|
use { -- Alignment
|
|
'junegunn/vim-easy-align',
|
|
}
|
|
use { -- cheat.sh integration
|
|
'dbeniamine/cheat.sh-vim',
|
|
}
|
|
-- use { -- Comments (gb and gc)
|
|
-- 'numToStr/Comment.nvim',
|
|
-- config = function()
|
|
-- require('Comment').setup {
|
|
-- pre_hook = function(ctx)
|
|
-- local U = require 'Comment.utils'
|
|
--
|
|
-- 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 = ctx.ctype == U.ctype.line and '__default' or '__multiline',
|
|
-- location = location,
|
|
-- }
|
|
-- end,
|
|
-- }
|
|
-- end
|
|
-- }
|
|
-- use { -- lewis6991: spellsitter: Spell checking in treesitter files
|
|
-- 'lewis6991/spellsitter.nvim',
|
|
-- config = function()
|
|
-- require('spellsitter').setup()
|
|
-- end,
|
|
-- }
|
|
use { -- lewis6991: spaceless: Strip trailing whitespace as you are editing
|
|
'lewis6991/spaceless.nvim',
|
|
config = function()
|
|
require'spaceless'.setup()
|
|
end,
|
|
}
|
|
use { -- lewis6991: foldsigns: Signs on folded lines
|
|
'lewis6991/foldsigns.nvim',
|
|
config = function()
|
|
require('foldsigns').setup()
|
|
end,
|
|
}
|
|
use { -- tpope: commentary
|
|
'tpope/vim-commentary',
|
|
}
|
|
use { -- tpope: surround
|
|
'tpope/vim-surround'
|
|
}
|
|
use { -- tpope: git integration
|
|
'tpope/vim-fugitive'
|
|
}
|
|
use { -- tpope: Repeatability for various tpope plugins
|
|
'tpope/vim-repeat',
|
|
}
|
|
|
|
-- Bootstrap packer if needed {
|
|
if (packer_bootstrap) then
|
|
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',
|
|
}})
|
|
|
|
-- vim:fdm=marker:fmr={,}:fdl=1:expandtab:tabstop=3:sw=3
|