-- local require = require("lvim.utils.require").require local core_plugins = { { "folke/lazy.nvim", tag = "stable" }, { "neovim/nvim-lspconfig", lazy = true, dependencies = { "mason-lspconfig.nvim", "nlsp-settings.nvim" }, }, { "williamboman/mason-lspconfig.nvim", cmd = { "LspInstall", "LspUninstall" }, lazy = true, dependencies = "mason.nvim", }, { "tamago324/nlsp-settings.nvim", cmd = "LspSettings", lazy = true }, { "jose-elias-alvarez/null-ls.nvim", lazy = true }, { "williamboman/mason.nvim", config = function() require("lvim.core.builtins").setup "mason" end, cmd = { "Mason", "MasonInstall", "MasonUninstall", "MasonUninstallAll", "MasonLog" }, lazy = true, }, { "folke/tokyonight.nvim", lazy = not vim.startswith(lvim.colorscheme, "tokyonight"), }, { "lunarvim/lunar.nvim", lazy = lvim.colorscheme ~= "lunar", }, { "Tastyep/structlog.nvim", lazy = true }, { "nvim-lua/popup.nvim", lazy = true }, { "nvim-lua/plenary.nvim", cmd = { "PlenaryBustedFile", "PlenaryBustedDirectory" }, lazy = true }, -- Telescope { "nvim-telescope/telescope.nvim", branch = "0.1.x", config = function() require("lvim.core.builtins").setup "telescope" end, dependencies = { "telescope-fzf-native.nvim" }, lazy = true, cmd = "Telescope", enabled = lvim.builtin.telescope.active, }, { "nvim-telescope/telescope-fzf-native.nvim", build = "make", lazy = true, enabled = lvim.builtin.telescope.active }, -- Install nvim-cmp, and buffer source as a dependency { "hrsh7th/nvim-cmp", config = function() require("lvim.core.builtins").setup "cmp" end, event = { "InsertEnter", "CmdlineEnter" }, dependencies = { "cmp-nvim-lsp", "cmp_luasnip", "cmp-buffer", "cmp-path", "cmp-cmdline", }, }, { "hrsh7th/cmp-nvim-lsp", lazy = true }, { "saadparwaiz1/cmp_luasnip", lazy = true }, { "hrsh7th/cmp-buffer", lazy = true }, { "hrsh7th/cmp-path", lazy = true }, { "hrsh7th/cmp-cmdline", lazy = true, enabled = lvim.builtin.cmp and lvim.builtin.cmp.cmdline.enable or false, }, { "L3MON4D3/LuaSnip", config = function() local utils = require "lvim.utils" local paths = {} if lvim.builtin.luasnip.sources.friendly_snippets then paths[#paths + 1] = utils.join_paths(get_runtime_dir(), "site", "pack", "lazy", "opt", "friendly-snippets") end local user_snippets = utils.join_paths(get_config_dir(), "snippets") if utils.is_directory(user_snippets) then paths[#paths + 1] = user_snippets end require("luasnip.loaders.from_lua").lazy_load() require("luasnip.loaders.from_vscode").lazy_load { paths = paths, } require("luasnip.loaders.from_snipmate").lazy_load() end, event = "InsertEnter", dependencies = { "friendly-snippets", }, }, { "rafamadriz/friendly-snippets", lazy = true, cond = lvim.builtin.luasnip.sources.friendly_snippets }, { "folke/neodev.nvim", lazy = true, }, -- Autopairs { "windwp/nvim-autopairs", event = "InsertEnter", config = function() require("lvim.core.builtins").setup "autopairs" end, enabled = lvim.builtin.autopairs.active, }, -- Treesitter { "nvim-treesitter/nvim-treesitter", -- run = ":TSUpdate", config = function() local utils = require "lvim.utils" local path = utils.join_paths(get_runtime_dir(), "site", "pack", "lazy", "opt", "nvim-treesitter") vim.opt.rtp:prepend(path) -- treesitter needs to be before nvim's runtime in rtp require("lvim.core.builtins").setup "treesitter" end, cmd = { "TSInstall", "TSUninstall", "TSUpdate", "TSInstallInfo", "TSInstallSync", "TSInstallFromGrammar" }, event = "User FileOpened", }, { -- Lazy loaded by Comment.nvim pre_hook "JoosepAlviste/nvim-ts-context-commentstring", lazy = true, }, -- NvimTree { "kyazdani42/nvim-tree.lua", config = function() require("lvim.core.builtins").setup "nvimtree" end, enabled = lvim.builtin.nvimtree.active, cmd = { "NvimTreeToggle", "NvimTreeOpen", "NvimTreeFocus", "NvimTreeFindFileToggle" }, event = "User DirOpened", }, -- Lir { "tamago324/lir.nvim", config = function() require("lvim.core.builtins").setup "lir" end, enabled = lvim.builtin.lir.active, event = "User DirOpened", }, { "lewis6991/gitsigns.nvim", config = function() require("lvim.core.builtins").setup "gitsigns" end, event = "User FileOpened", cmd = "Gitsigns", enabled = lvim.builtin.gitsigns.active, }, -- Whichkey { "folke/which-key.nvim", config = function() require("lvim.core.builtins").setup "which-key" end, cmd = "WhichKey", event = "VeryLazy", enabled = lvim.builtin.which_key.active, }, -- Comments { "numToStr/Comment.nvim", config = function() require("lvim.core.builtins").setup "comment" end, keys = { { "gc", mode = { "n", "v" } }, { "gb", mode = { "n", "v" } } }, event = "User FileOpened", enabled = lvim.builtin.comment.active, }, -- project.nvim { "ahmedkhalf/project.nvim", config = function() require("lvim.core.builtins").setup "project" end, enabled = lvim.builtin.project.active, event = "VimEnter", cmd = "Telescope projects", }, -- Icons { "nvim-tree/nvim-web-devicons", enabled = lvim.use_icons, lazy = true, }, -- Status Line and Bufferline { -- "hoob3rt/lualine.nvim", "nvim-lualine/lualine.nvim", -- "Lunarvim/lualine.nvim", config = function() require("lvim.core.builtins").setup "lualine" end, event = "VimEnter", enabled = lvim.builtin.lualine.active, }, -- breadcrumbs { "SmiteshP/nvim-navic", config = function() require("lvim.core.builtins").setup "breadcrumbs" end, event = "User FileOpened", enabled = lvim.builtin.breadcrumbs.active, }, { "akinsho/bufferline.nvim", config = function() require("lvim.core.builtins").setup "bufferline" end, branch = "main", event = "User FileOpened", enabled = lvim.builtin.bufferline.active, }, -- Debugging { "mfussenegger/nvim-dap", config = function() require("lvim.core.builtins").setup "dap" end, lazy = true, enabled = lvim.builtin.dap.active, }, -- Debugger user interface { "rcarriga/nvim-dap-ui", config = function() require("lvim.core.dap").setup_ui() end, lazy = true, enabled = lvim.builtin.dap.active, }, -- alpha { "goolord/alpha-nvim", config = function() require("lvim.core.builtins").setup "alpha" end, enabled = lvim.builtin.alpha.active, event = "VimEnter", }, -- Terminal { "akinsho/toggleterm.nvim", event = "VeryLazy", branch = "main", config = function() require("lvim.core.builtins").setup "terminal" end, enabled = lvim.builtin.terminal.active, }, -- SchemaStore { "b0o/schemastore.nvim", lazy = true, }, { "RRethy/vim-illuminate", config = function() require("lvim.core.builtins").setup "illuminate" end, event = "User FileOpened", enabled = lvim.builtin.illuminate.active, }, { "lukas-reineke/indent-blankline.nvim", config = function() require("lvim.core.builtins").setup "indentlines" end, event = "User FileOpened", enabled = lvim.builtin.indentlines.active, }, { "lunarvim/onedarker.nvim", branch = "freeze", config = function() pcall(function() if lvim and lvim.colorscheme == "onedarker" then require("onedarker").setup() lvim.builtin.lualine.options.theme = "onedarker" end end) end, lazy = lvim.colorscheme ~= "onedarker", }, { "lunarvim/bigfile.nvim", config = function() pcall(function() require("bigfile").config(lvim.builtin.bigfile.config) end) end, enabled = lvim.builtin.bigfile.active, event = { "FileReadPre", "BufReadPre", "User FileOpened" }, }, } local default_snapshot_path = join_paths(get_lvim_base_dir(), "snapshots", "default.json") local content = vim.fn.readfile(default_snapshot_path) local default_sha1 = assert(vim.fn.json_decode(content)) -- taken form local get_short_name = function(long_name) local name = long_name:sub(-4) == ".git" and long_name:sub(1, -5) or long_name local slash = name:reverse():find("/", 1, true) --[[@as number?]] return slash and name:sub(#name - slash + 2) or long_name:gsub("%W+", "_") end local get_default_sha1 = function(spec) local short_name = get_short_name(spec[1]) return default_sha1[short_name] and default_sha1[short_name].commit end if not vim.env.LVIM_DEV_MODE then -- Manually lock the commit hashes of core plugins for _, spec in ipairs(core_plugins) do spec["commit"] = get_default_sha1(spec) end end return core_plugins