-- All plugins have lazy=true by default,to load a plugin on startup just lazy=false -- List of all default plugins & their definitions local default_plugins = { "nvim-lua/plenary.nvim", "rebelot/kanagawa.nvim", { "iamcco/markdown-preview.nvim", run = "cd app && npm install", lazy = false, setup = function() vim.g.mkdp_filetypes = { "markdown" } end, ft = { "markdown" }, }, {"tpope/vim-fugitive", lazy=false}, {"rbong/vim-flog", lazy=false}, {"tpope/vim-surround", lazy=false}, {"tpope/vim-obsession", lazy=false}, {"preservim/tagbar", lazy=false}, {"ludovicchabant/vim-gutentags", lazy=false}, {"emaniacs/vim-rest-console", lazy=false}, { "sindrets/diffview.nvim", lazy=false, opts = function() return require "plugins.configs.diffview" end, }, {"nvim-telescope/telescope-fzf-native.nvim", build="make"}, -- nvchad plugins { "NvChad/extensions", branch = "v2.0" }, { "NvChad/base46", branch = "v2.0", build = function() require("base46").load_all_highlights() end, }, { "NvChad/ui", branch = "v2.0", lazy = false, config = function() require "nvchad_ui" end, }, { "NvChad/nvterm", init = function() require("core.utils").load_mappings "nvterm" end, config = function(_, opts) require "base46.term" require("nvterm").setup(opts) end, }, { "NvChad/nvim-colorizer.lua", init = function() require("core.utils").lazy_load "nvim-colorizer.lua" end, config = function(_, opts) require("colorizer").setup(opts) -- execute colorizer as soon as possible vim.defer_fn(function() require("colorizer").attach_to_buffer(0) end, 0) end, }, { "nvim-tree/nvim-web-devicons", opts = function() return { override = require("nvchad_ui.icons").devicons } end, config = function(_, opts) dofile(vim.g.base46_cache .. "devicons") require("nvim-web-devicons").setup(opts) end, }, { "lukas-reineke/indent-blankline.nvim", version = "2.20.7", init = function() require("core.utils").lazy_load "indent-blankline.nvim" end, opts = function() return require("plugins.configs.others").blankline end, config = function(_, opts) require("core.utils").load_mappings "blankline" dofile(vim.g.base46_cache .. "blankline") require("indent_blankline").setup(opts) end, }, { "nvim-treesitter/nvim-treesitter", init = function() require("core.utils").lazy_load "nvim-treesitter" end, cmd = { "TSInstall", "TSBufEnable", "TSBufDisable", "TSModuleInfo" }, build = ":TSUpdate", opts = function() return require "plugins.configs.treesitter" end, config = function(_, opts) dofile(vim.g.base46_cache .. "syntax") require("nvim-treesitter.configs").setup(opts) end, }, -- git stuff { "lewis6991/gitsigns.nvim", ft = { "gitcommit", "diff" }, init = function() -- 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("lazy").load { plugins = { "gitsigns.nvim" } } end) end end, }) end, opts = function() return require("plugins.configs.others").gitsigns end, config = function(_, opts) dofile(vim.g.base46_cache .. "git") require("gitsigns").setup(opts) end, }, -- lsp stuff { "williamboman/mason.nvim", cmd = { "Mason", "MasonInstall", "MasonInstallAll", "MasonUninstall", "MasonUninstallAll", "MasonLog" }, opts = function() return require "plugins.configs.mason" end, config = function(_, opts) dofile(vim.g.base46_cache .. "mason") require("mason").setup(opts) -- custom nvchad cmd to install all mason binaries listed vim.api.nvim_create_user_command("MasonInstallAll", function() vim.cmd("MasonInstall " .. table.concat(opts.ensure_installed, " ")) end, {}) vim.g.mason_binaries_list = opts.ensure_installed end, }, { "neovim/nvim-lspconfig", init = function() require("core.utils").lazy_load "nvim-lspconfig" end, config = function() require "plugins.configs.lspconfig" end, }, -- load luasnips + cmp related in insert mode only { "hrsh7th/nvim-cmp", event = "InsertEnter", dependencies = { { -- snippet plugin "L3MON4D3/LuaSnip", dependencies = "rafamadriz/friendly-snippets", opts = { history = true, updateevents = "TextChanged,TextChangedI" }, config = function(_, opts) require("plugins.configs.others").luasnip(opts) end, }, -- autopairing of (){}[] etc { "windwp/nvim-autopairs", opts = { fast_wrap = {}, disable_filetype = { "TelescopePrompt", "vim" }, }, config = function(_, opts) require("nvim-autopairs").setup(opts) -- setup cmp for autopairs local cmp_autopairs = require "nvim-autopairs.completion.cmp" require("cmp").event:on("confirm_done", cmp_autopairs.on_confirm_done()) end, }, -- cmp sources plugins { "saadparwaiz1/cmp_luasnip", "hrsh7th/cmp-nvim-lua", "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-buffer", "hrsh7th/cmp-path", }, }, opts = function() return require "plugins.configs.cmp" end, config = function(_, opts) require("cmp").setup(opts) end, }, { "numToStr/Comment.nvim", keys = { "gcc", "gbc" }, init = function() require("core.utils").load_mappings "comment" end, config = function() require("Comment").setup() end, }, -- Save and load macro / register { "desdic/macrothis.nvim", opts = {}, keys = { { "kkd", function() require('macrothis').delete() end, desc = "Delete" }, { "kke", function() require('macrothis').edit() end, desc = "Edit" }, { "kkl", function() require('macrothis').load() end, desc = "Load" }, { "kkn", function() require('macrothis').rename() end, desc = "Rename" }, { "kkq", function() require('macrothis').quickfix() end, desc = "Run macro on all files in quickfix" }, { "kkr", function() require('macrothis').run() end, desc = "Run macro" }, { "kks", function() require('macrothis').save() end, desc = "Save" }, { "kkx", function() require('macrothis').register() end, desc = "Edit register" }, { "kkp", function() require('macrothis').copy_register_printable() end, desc = "Copy register as printable" }, { "kkm", function() require('macrothis').copy_macro_printable() end, desc = "Copy macro as printable" }, } }, { "onsails/diaglist.nvim", lazy=false, debug=false, }, { "natecraddock/workspaces.nvim", lazy=false, config = function() require("workspaces").setup({ hooks = { open = {"Telescope find_files"}, } }) end, }, { "mangelozzi/rgflow.nvim", lazy=false, config = function() require("rgflow").setup({ -- Set the default rip grep flags and options for when running a search via -- RgFlow. Once changed via the UI, the previous search flags are used for -- each subsequent search (until Neovim restarts). cmd_flags = "--smart-case --fixed-strings --ignore --max-columns 200", -- Mappings to trigger RgFlow functions default_trigger_mappings = true, -- These mappings are only active when the RgFlow UI (panel) is open default_ui_mappings = true, -- QuickFix window only mapping default_quickfix_mappings = true, }) end, }, { "yorickpeterse/nvim-window", lazy=false, config = function() require('nvim-window').setup({ normal_hl = 'Normal', hint_hl = 'Bold', border = 'single' }) end, }, { "sindrets/winshift.nvim", lazy=false, }, { "kdheepak/lazygit.nvim", lazy=false, config = function() require("lazy").setup({ { "kdheepak/lazygit.nvim", -- optional for floating window border decoration dependencies = { "nvim-lua/plenary.nvim", }, }, }) end, }, -- file managing , picker etc { "nvim-tree/nvim-tree.lua", cmd = { "NvimTreeToggle", "NvimTreeFocus" }, init = function() require("core.utils").load_mappings "nvimtree" end, opts = function() return require "plugins.configs.nvimtree" end, config = function(_, opts) dofile(vim.g.base46_cache .. "nvimtree") require("nvim-tree").setup(opts) vim.g.nvimtree_side = opts.view.side end, }, { "nvim-telescope/telescope.nvim", cmd = "Telescope", init = function() require("core.utils").load_mappings "telescope" end, opts = function() return require "plugins.configs.telescope" end, config = function(_, opts) dofile(vim.g.base46_cache .. "telescope") local telescope = require "telescope" telescope.setup(opts) -- load extensions for _, ext in ipairs(opts.extensions_list) do telescope.load_extension(ext) end end, }, -- Only load whichkey after all the gui { "folke/which-key.nvim", lazy=false, keys = { "", '"', "'", "`", "c", "v" }, init = function() require("core.utils").load_mappings "whichkey" end, config = function(_, opts) dofile(vim.g.base46_cache .. "whichkey") require("which-key").setup(opts) end, }, } local config = require("core.utils").load_config() if #config.plugins > 0 then table.insert(default_plugins, { import = config.plugins }) end require("lazy").setup(default_plugins, config.lazy_nvim) require "plugins.configs.ruff_lsp"