bfc10e6034
This commit introduces a hook system that allows the user to add custom modules which can use these hooks to invoke function af specific NvChad events to allow for extending og functionality
342 lines
7.7 KiB
Lua
342 lines
7.7 KiB
Lua
local present, packer = pcall(require, "plugins.packerInit")
|
|
|
|
if not present then
|
|
return false
|
|
end
|
|
|
|
local use = packer.use
|
|
|
|
return packer.startup(function()
|
|
local plugin_status = require("core.utils").load_config().plugin_status
|
|
|
|
-- this is arranged on the basis of when a plugin starts
|
|
|
|
-- this is the nvchad core repo containing utilities for some features like theme swticher, no need to lazy load
|
|
use {
|
|
"Nvchad/extensions",
|
|
}
|
|
|
|
use {
|
|
"nvim-lua/plenary.nvim",
|
|
}
|
|
|
|
use {
|
|
"wbthomason/packer.nvim",
|
|
event = "VimEnter",
|
|
}
|
|
|
|
use {
|
|
"NvChad/nvim-base16.lua",
|
|
after = "packer.nvim",
|
|
config = function()
|
|
require("colors").init()
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"kyazdani42/nvim-web-devicons",
|
|
after = "nvim-base16.lua",
|
|
config = function()
|
|
require "plugins.configs.icons"
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"famiu/feline.nvim",
|
|
disable = not plugin_status.feline,
|
|
after = "nvim-web-devicons",
|
|
config = function()
|
|
require "plugins.configs.statusline"
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"akinsho/bufferline.nvim",
|
|
disable = not plugin_status.bufferline,
|
|
after = "nvim-web-devicons",
|
|
config = function()
|
|
require "plugins.configs.bufferline"
|
|
end,
|
|
setup = function()
|
|
require("core.mappings").bufferline()
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"lukas-reineke/indent-blankline.nvim",
|
|
disable = not plugin_status.blankline,
|
|
event = "BufRead",
|
|
config = function()
|
|
require("plugins.configs.others").blankline()
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"norcalli/nvim-colorizer.lua",
|
|
disable = not plugin_status.colorizer,
|
|
event = "BufRead",
|
|
config = function()
|
|
require("plugins.configs.others").colorizer()
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"nvim-treesitter/nvim-treesitter",
|
|
branch = "0.5-compat",
|
|
event = "BufRead",
|
|
config = function()
|
|
require "plugins.configs.treesitter"
|
|
end,
|
|
}
|
|
|
|
-- git stuff
|
|
use {
|
|
"lewis6991/gitsigns.nvim",
|
|
disable = not plugin_status.gitsigns,
|
|
opt = true,
|
|
config = function()
|
|
require "plugins.configs.gitsigns"
|
|
end,
|
|
setup = function()
|
|
require("core.utils").packer_lazy_load "gitsigns.nvim"
|
|
end,
|
|
}
|
|
|
|
-- smooth scroll
|
|
use {
|
|
"karb94/neoscroll.nvim",
|
|
disable = not plugin_status.neoscroll,
|
|
opt = true,
|
|
config = function()
|
|
require("plugins.configs.others").neoscroll()
|
|
end,
|
|
setup = function()
|
|
require("core.utils").packer_lazy_load "neoscroll.nvim"
|
|
end,
|
|
}
|
|
|
|
-- lsp stuff
|
|
|
|
use {
|
|
"neovim/nvim-lspconfig",
|
|
opt = true,
|
|
setup = function()
|
|
require("core.utils").packer_lazy_load "nvim-lspconfig"
|
|
-- reload the current file so lsp actually starts for it
|
|
vim.defer_fn(function()
|
|
vim.cmd "silent! e %"
|
|
end, 0)
|
|
end,
|
|
config = function()
|
|
require "plugins.configs.lspconfig"
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"ray-x/lsp_signature.nvim",
|
|
disable = not plugin_status.lspsignature,
|
|
after = "nvim-lspconfig",
|
|
config = function()
|
|
require("plugins.configs.others").signature()
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"andymass/vim-matchup",
|
|
disable = not plugin_status.vim_matchup,
|
|
opt = true,
|
|
setup = function()
|
|
require("core.utils").packer_lazy_load "vim-matchup"
|
|
end,
|
|
}
|
|
|
|
-- load autosave only if its globally enabled
|
|
use {
|
|
disable = not plugin_status.autosave,
|
|
"Pocco81/AutoSave.nvim",
|
|
config = function()
|
|
require("plugins.configs.others").autosave()
|
|
end,
|
|
cond = function()
|
|
return require("core.utils").load_config().options.plugin.autosave == true
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"max397574/better-escape.nvim",
|
|
disable = not plugin_status.esc_insertmode,
|
|
event = "InsertEnter",
|
|
config = function()
|
|
require("plugins.configs.others").better_escape()
|
|
end,
|
|
}
|
|
|
|
-- load luasnips + cmp related in insert mode only
|
|
|
|
use {
|
|
"rafamadriz/friendly-snippets",
|
|
event = "InsertEnter",
|
|
}
|
|
|
|
use {
|
|
"hrsh7th/nvim-cmp",
|
|
after = "friendly-snippets",
|
|
config = function()
|
|
require "plugins.configs.cmp"
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"L3MON4D3/LuaSnip",
|
|
wants = "friendly-snippets",
|
|
after = "nvim-cmp",
|
|
config = function()
|
|
require("plugins.configs.others").luasnip()
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"saadparwaiz1/cmp_luasnip",
|
|
after = "LuaSnip",
|
|
}
|
|
|
|
use {
|
|
"hrsh7th/cmp-nvim-lua",
|
|
after = "cmp_luasnip",
|
|
}
|
|
|
|
use {
|
|
"hrsh7th/cmp-nvim-lsp",
|
|
after = "cmp-nvim-lua",
|
|
}
|
|
|
|
use {
|
|
"hrsh7th/cmp-buffer",
|
|
after = "cmp-nvim-lsp",
|
|
}
|
|
|
|
-- misc plugins
|
|
use {
|
|
"windwp/nvim-autopairs",
|
|
after = "nvim-cmp",
|
|
config = function()
|
|
require("plugins.configs.others").autopairs()
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"glepnir/dashboard-nvim",
|
|
disable = not plugin_status.dashboard,
|
|
config = function()
|
|
require "plugins.configs.dashboard"
|
|
end,
|
|
setup = function()
|
|
require("core.mappings").dashboard()
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"sbdchd/neoformat",
|
|
disable = not plugin_status.neoformat,
|
|
cmd = "Neoformat",
|
|
setup = function()
|
|
require("core.mappings").neoformat()
|
|
end,
|
|
}
|
|
|
|
-- use "alvan/vim-closetag" -- for html autoclosing tag
|
|
use {
|
|
"terrortylor/nvim-comment",
|
|
disable = not plugin_status.comment,
|
|
cmd = "CommentToggle",
|
|
config = function()
|
|
require("plugins.configs.others").comment()
|
|
end,
|
|
setup = function()
|
|
require("core.mappings").comment()
|
|
end,
|
|
}
|
|
|
|
-- file managing , picker etc
|
|
use {
|
|
"kyazdani42/nvim-tree.lua",
|
|
cmd = { "NvimTreeToggle", "NvimTreeFocus" },
|
|
config = function()
|
|
require "plugins.configs.nvimtree"
|
|
end,
|
|
setup = function()
|
|
require("core.mappings").nvimtree()
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"nvim-telescope/telescope.nvim",
|
|
cmd = "Telescope",
|
|
-- because cheatsheet is not activated by a teleacope command
|
|
module = "cheatsheet",
|
|
requires = {
|
|
{
|
|
"sudormrfbin/cheatsheet.nvim",
|
|
disable = not plugin_status.cheatsheet,
|
|
after = "telescope.nvim",
|
|
config = function()
|
|
require "plugins.configs.cheatsheet"
|
|
end,
|
|
setup = function()
|
|
require("core.mappings").cheatsheet()
|
|
end,
|
|
},
|
|
{
|
|
"nvim-telescope/telescope-fzf-native.nvim",
|
|
run = "make",
|
|
},
|
|
{
|
|
"nvim-telescope/telescope-media-files.nvim",
|
|
disable = not plugin_status.telescope_media,
|
|
setup = function()
|
|
require("core.mappings").telescope_media()
|
|
end,
|
|
},
|
|
},
|
|
config = function()
|
|
require "plugins.configs.telescope"
|
|
end,
|
|
setup = function()
|
|
require("core.mappings").telescope()
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"Pocco81/TrueZen.nvim",
|
|
disable = not plugin_status.truezen,
|
|
cmd = {
|
|
"TZAtaraxis",
|
|
"TZMinimalist",
|
|
"TZFocus",
|
|
},
|
|
config = function()
|
|
require "plugins.configs.zenmode"
|
|
end,
|
|
setup = function()
|
|
require("core.mappings").truezen()
|
|
end,
|
|
}
|
|
|
|
use {
|
|
"tpope/vim-fugitive",
|
|
disable = not plugin_status.vim_fugitive,
|
|
cmd = {
|
|
"Git",
|
|
"Gdiff",
|
|
"Gdiffsplit",
|
|
"Gvdiffsplit",
|
|
"Gwrite",
|
|
"Gw",
|
|
},
|
|
setup = function()
|
|
require("core.mappings").vim_fugitive()
|
|
end,
|
|
}
|
|
|
|
require("core.hooks").run("install_plugins", use)
|
|
end)
|