2022-06-18 00:27:17 -04:00
|
|
|
local M = {}
|
2022-06-24 09:54:59 -04:00
|
|
|
local autocmd = vim.api.nvim_create_autocmd
|
2022-06-18 00:27:17 -04:00
|
|
|
|
2022-07-25 09:49:33 -04:00
|
|
|
-- require("packer").loader(tb.plugins)
|
2022-07-15 00:07:12 -04:00
|
|
|
-- This must be used for plugins that need to be loaded just after a file
|
|
|
|
-- ex : treesitter, lspconfig etc
|
2022-06-18 00:27:17 -04:00
|
|
|
M.lazy_load = function(tb)
|
2022-07-22 12:00:00 -04:00
|
|
|
autocmd(tb.events, {
|
|
|
|
group = vim.api.nvim_create_augroup(tb.augroup_name, {}),
|
|
|
|
callback = function()
|
|
|
|
if tb.condition() then
|
|
|
|
vim.api.nvim_del_augroup_by_name(tb.augroup_name)
|
2022-06-14 08:06:27 -04:00
|
|
|
|
2022-07-22 12:00:00 -04:00
|
|
|
-- dont defer for treesitter as it will show slow highlighting
|
|
|
|
-- This deferring only happens only when we do "nvim filename"
|
2022-07-25 09:49:33 -04:00
|
|
|
if tb.plugin ~= "nvim-treesitter" then
|
2022-07-22 12:00:00 -04:00
|
|
|
vim.defer_fn(function()
|
2022-07-25 09:49:33 -04:00
|
|
|
require("packer").loader(tb.plugin)
|
|
|
|
if tb.plugin == "nvim-lspconfig" then
|
2022-07-31 10:35:43 -04:00
|
|
|
vim.cmd "silent! do FileType"
|
2022-07-25 09:49:33 -04:00
|
|
|
end
|
2022-07-22 12:00:00 -04:00
|
|
|
end, 0)
|
|
|
|
else
|
2022-07-25 09:49:33 -04:00
|
|
|
require("packer").loader(tb.plugin)
|
2022-07-22 12:00:00 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end,
|
|
|
|
})
|
2022-06-14 08:06:27 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
-- load certain plugins only when there's a file opened in the buffer
|
2022-06-18 00:27:17 -04:00
|
|
|
-- if "nvim filename" is executed -> load the plugin after nvim gui loads
|
2022-06-14 08:06:27 -04:00
|
|
|
-- This gives an instant preview of nvim with the file opened
|
|
|
|
|
2022-06-18 00:27:17 -04:00
|
|
|
M.on_file_open = function(plugin_name)
|
2022-07-22 12:00:00 -04:00
|
|
|
M.lazy_load {
|
|
|
|
events = { "BufRead", "BufWinEnter", "BufNewFile" },
|
|
|
|
augroup_name = "BeLazyOnFileOpen" .. plugin_name,
|
2022-07-25 09:49:33 -04:00
|
|
|
plugin = plugin_name,
|
2022-07-22 12:00:00 -04:00
|
|
|
condition = function()
|
|
|
|
local file = vim.fn.expand "%"
|
|
|
|
return file ~= "NvimTree_1" and file ~= "[packer]" and file ~= ""
|
|
|
|
end,
|
|
|
|
}
|
2022-06-14 08:06:27 -04:00
|
|
|
end
|
|
|
|
|
2022-06-19 04:13:11 -04:00
|
|
|
M.treesitter_cmds = {
|
2022-07-22 12:00:00 -04:00
|
|
|
"TSInstall",
|
|
|
|
"TSBufEnable",
|
|
|
|
"TSBufDisable",
|
|
|
|
"TSEnable",
|
|
|
|
"TSDisable",
|
|
|
|
"TSModuleInfo",
|
2022-06-19 04:13:11 -04:00
|
|
|
}
|
|
|
|
|
2022-07-25 09:49:33 -04:00
|
|
|
M.mason_cmds = {
|
|
|
|
"Mason",
|
|
|
|
"MasonInstall",
|
2022-07-25 10:25:31 -04:00
|
|
|
"MasonInstallAll",
|
2022-07-25 09:49:33 -04:00
|
|
|
"MasonUninstall",
|
|
|
|
"MasonUninstallAll",
|
|
|
|
"MasonLog",
|
|
|
|
}
|
|
|
|
|
2022-06-14 08:06:27 -04:00
|
|
|
M.gitsigns = function()
|
2022-07-22 12:00:00 -04:00
|
|
|
-- taken from https://github.com/max397574
|
|
|
|
autocmd({ "BufRead" }, {
|
|
|
|
callback = function()
|
|
|
|
local function onexit(code, _)
|
|
|
|
if code == 0 then
|
|
|
|
vim.schedule(function()
|
|
|
|
require("packer").loader "gitsigns.nvim"
|
|
|
|
end)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false)
|
|
|
|
if lines ~= { "" } then
|
|
|
|
vim.loop.spawn("git", {
|
|
|
|
args = {
|
|
|
|
"ls-files",
|
|
|
|
"--error-unmatch",
|
|
|
|
vim.fn.expand "%:p:h",
|
|
|
|
},
|
|
|
|
}, onexit)
|
|
|
|
end
|
|
|
|
end,
|
|
|
|
})
|
2022-06-14 08:06:27 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
return M
|