diff --git a/lua/core/lazy_load.lua b/lua/core/lazy_load.lua deleted file mode 100644 index 29973d4..0000000 --- a/lua/core/lazy_load.lua +++ /dev/null @@ -1,79 +0,0 @@ -local M = {} -local autocmd = vim.api.nvim_create_autocmd - --- require("packer").loader(tb.plugins) --- This must be used for plugins that need to be loaded just after a file --- ex : treesitter, lspconfig etc -M.lazy_load = function(tb) - 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) - - -- dont defer for treesitter as it will show slow highlighting - -- This deferring only happens only when we do "nvim filename" - if tb.plugin ~= "nvim-treesitter" then - vim.defer_fn(function() - require("packer").loader(tb.plugin) - if tb.plugin == "nvim-lspconfig" then - vim.cmd "silent! do FileType" - end - end, 0) - else - require("packer").loader(tb.plugin) - end - end - end, - }) -end - --- load certain plugins only when there's a file opened in the buffer --- if "nvim filename" is executed -> load the plugin after nvim gui loads --- This gives an instant preview of nvim with the file opened - -M.on_file_open = function(plugin_name) - M.lazy_load { - events = { "BufRead", "BufWinEnter", "BufNewFile" }, - augroup_name = "BeLazyOnFileOpen" .. plugin_name, - plugin = plugin_name, - condition = function() - local file = vim.fn.expand "%" - return file ~= "NvimTree_1" and file ~= "[packer]" and file ~= "" - end, - } -end - -M.packer_cmds = { - "PackerSnapshot", - "PackerSnapshotRollback", - "PackerSnapshotDelete", - "PackerInstall", - "PackerUpdate", - "PackerSync", - "PackerClean", - "PackerCompile", - "PackerStatus", - "PackerProfile", - "PackerLoad", -} - -M.treesitter_cmds = { "TSInstall", "TSBufEnable", "TSBufDisable", "TSEnable", "TSDisable", "TSModuleInfo" } -M.mason_cmds = { "Mason", "MasonInstall", "MasonInstallAll", "MasonUninstall", "MasonUninstallAll", "MasonLog" } - -M.gitsigns = function() - autocmd({ "BufRead" }, { - group = vim.api.nvim_create_augroup("GitSignsLazyLoad", { clear = true }), - callback = function() - vim.fn.system("git -C " .. vim.fn.expand "%:p:h" .. " rev-parse") - if vim.v.shell_error == 0 then - vim.api.nvim_del_augroup_by_name "GitSignsLazyLoad" - vim.schedule(function() - require("packer").loader "gitsigns.nvim" - end) - end - end, - }) -end - -return M diff --git a/lua/core/utils.lua b/lua/core/utils.lua index daeff4c..fe2cfaa 100644 --- a/lua/core/utils.lua +++ b/lua/core/utils.lua @@ -155,4 +155,31 @@ M.packer_sync = function(...) end end +M.lazy_load = function(plugin) + vim.api.nvim_create_autocmd({ "BufRead", "BufWinEnter", "BufNewFile" }, { + group = vim.api.nvim_create_augroup("BeLazyOnFileOpen" .. plugin, {}), + callback = function() + local file = vim.fn.expand "%" + local condition = file ~= "NvimTree_1" and file ~= "[packer]" and file ~= "" + + if condition then + vim.api.nvim_del_augroup_by_name("BeLazyOnFileOpen" .. plugin) + + -- dont defer for treesitter as it will show slow highlighting + -- This deferring only happens only when we do "nvim filename" + if plugin ~= "nvim-treesitter" then + vim.defer_fn(function() + require("packer").loader(plugin) + if plugin == "nvim-lspconfig" then + vim.cmd "silent! do FileType" + end + end, 0) + else + require("packer").loader(plugin) + end + end + end, + }) +end + return M diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua index 2fa809d..d7831a0 100644 --- a/lua/plugins/init.lua +++ b/lua/plugins/init.lua @@ -1,3 +1,4 @@ +-- List of all default plugins & their definitions local plugins = { ["nvim-lua/plenary.nvim"] = { module = "plenary" }, @@ -5,7 +6,19 @@ local plugins = { ["lewis6991/impatient.nvim"] = {}, ["wbthomason/packer.nvim"] = { - cmd = require("core.lazy_load").packer_cmds, + cmd = { + "PackerSnapshot", + "PackerSnapshotRollback", + "PackerSnapshotDelete", + "PackerInstall", + "PackerUpdate", + "PackerSync", + "PackerClean", + "PackerCompile", + "PackerStatus", + "PackerProfile", + "PackerLoad", + }, config = function() require "plugins" end, @@ -57,7 +70,7 @@ local plugins = { ["lukas-reineke/indent-blankline.nvim"] = { opt = true, setup = function() - require("core.lazy_load").on_file_open "indent-blankline.nvim" + require("core.utils").lazy_load "indent-blankline.nvim" require("core.utils").load_mappings "blankline" end, config = function() @@ -68,7 +81,7 @@ local plugins = { ["NvChad/nvim-colorizer.lua"] = { opt = true, setup = function() - require("core.lazy_load").on_file_open "nvim-colorizer.lua" + require("core.utils").lazy_load "nvim-colorizer.lua" end, config = function() require("plugins.configs.others").colorizer() @@ -78,9 +91,10 @@ local plugins = { ["nvim-treesitter/nvim-treesitter"] = { module = "nvim-treesitter", setup = function() - require("core.lazy_load").on_file_open "nvim-treesitter" + require("core.utils").lazy_load "nvim-treesitter" end, - cmd = require("core.lazy_load").treesitter_cmds, + cmd = { "TSInstall", "TSBufEnable", "TSBufDisable", "TSEnable", "TSDisable", "TSModuleInfo" }, + run = ":TSUpdate", config = function() require "plugins.configs.treesitter" @@ -91,7 +105,19 @@ local plugins = { ["lewis6991/gitsigns.nvim"] = { ft = "gitcommit", setup = function() - require("core.lazy_load").gitsigns() + -- load gitsigns only when a git file is opened + vim.api.nvim_create_autocmd({ "BufRead" }, { + group = vim.api.nvim_create_augroup("GitSignsLazyLoad", { clear = true }), + callback = function() + vim.fn.system("git -C " .. vim.fn.expand "%:p:h" .. " rev-parse") + if vim.v.shell_error == 0 then + vim.api.nvim_del_augroup_by_name "GitSignsLazyLoad" + vim.schedule(function() + require("packer").loader "gitsigns.nvim" + end) + end + end, + }) end, config = function() require("plugins.configs.others").gitsigns() @@ -100,7 +126,7 @@ local plugins = { -- lsp stuff ["williamboman/mason.nvim"] = { - cmd = require("core.lazy_load").mason_cmds, + cmd = { "Mason", "MasonInstall", "MasonInstallAll", "MasonUninstall", "MasonUninstallAll", "MasonLog" }, config = function() require "plugins.configs.mason" end, @@ -109,7 +135,7 @@ local plugins = { ["neovim/nvim-lspconfig"] = { opt = true, setup = function() - require("core.lazy_load").on_file_open "nvim-lspconfig" + require("core.utils").lazy_load "nvim-lspconfig" end, config = function() require "plugins.configs.lspconfig" @@ -198,7 +224,6 @@ local plugins = { }, } --- Load all plugins local present, packer = pcall(require, "packer") if present then