-- https://github.com/max397574/omega-nvim/blob/master/lua/omega/modules/ui/bufferline.lua local lazy_load = function(tb) vim.api.nvim_create_autocmd(tb.events, { pattern = "*", 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.plugins ~= "nvim-treesitter" then vim.defer_fn(function() vim.cmd("PackerLoad " .. tb.plugins) end, 0) else vim.cmd("PackerLoad " .. tb.plugins) end end end, }) end local M = {} M.bufferline = function() lazy_load { events = { "BufNewFile", "BufAdd", "TabEnter" }, augroup_name = "BufferLineLazy", plugins = "bufferline.nvim", condition = function() return #vim.fn.getbufinfo { buflisted = 1 } >= 2 end, } end M.colorizer = function() lazy_load { events = { "BufRead", "BufNewFile" }, augroup_name = "ColorizerLazy", plugins = "nvim-colorizer.lua", condition = function() local items = { "#", "rgb", "hsl" } for _, val in ipairs(items) do if vim.fn.search(val) ~= 0 then return true end end end, } end -- load certain plugins only when there's a file opened in the buffer -- if "nvim-file" 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() lazy_load { events = { "BufRead", "BufWinEnter", "BufNewFile" }, augroup_name = "BeLazyOnFileOpen", plugins = "nvim-lsp-installer indent-blankline.nvim", condition = function() local file = vim.fn.expand "%" return file ~= "NvimTree_1" and file ~= "[packer]" and file ~= "" end, } end M.treesitter = function() lazy_load { events = { "BufRead", "BufWinEnter", "BufNewFile" }, augroup_name = "Treesitter_lazy", plugins = "nvim-treesitter", condition = function() local file = vim.fn.expand "%" return file ~= "NvimTree_1" and file ~= "[packer]" and file ~= "" end, } end M.gitsigns = function() -- taken from https://github.com/max397574 vim.api.nvim_create_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, }) end return M