return { { "nvim-lualine/lualine.nvim", dependencies = { "nvim-tree/nvim-web-devicons", }, opts = { options = { theme = "catppuccin", globalstatus = true, disabled_filetypes = { statusline = { "dashboard", "alpha", }, }, section_separators = "", component_separators = "", }, sections = { lualine_a = { { "mode", icons_enabled = true }, }, lualine_b = { "branch", "diff", "diagnostics", }, lualine_c = { { "filename", path = 1 }, }, }, }, }, { "akinsho/bufferline.nvim", event = "VeryLazy", keys = { { "bp", "BufferLineTogglePin", desc = "Toggle pin" }, { "bP", "BufferLineGroupClose ungrouped", desc = "Delete non-pinned buffers" }, }, opts = { options = { offsets = { { filetype = "neo-tree", }, }, }, }, }, { "lukas-reineke/indent-blankline.nvim", event = { "BufReadPost", "BufNewFile" }, opts = { char = "┊", filetype_exclude = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy", "mason", "notify", "toggleterm", "lazyterm", }, show_trailing_blankline_indent = false, show_current_context = false, }, }, -- active indent guide and indent text objects { "echasnovski/mini.indentscope", version = false, -- wait till new 0.7.0 release to put it back on semver event = { "BufReadPre", "BufNewFile" }, opts = { -- symbol = "▏", symbol = "│", options = { try_as_border = true }, }, init = function() vim.api.nvim_create_autocmd("FileType", { pattern = { "help", "alpha", "dashboard", "neo-tree", "Trouble", "lazy", "mason", "notify", "toggleterm", "lazyterm", }, callback = function() vim.b.miniindentscope_disable = true end, }) end, }, { "stevearc/dressing.nvim", opts = { select = { enabled = true, backend = { "telescope", "fzf", "builtin", "nui", }, telescope = require("telescope.themes").get_ivy(), }, }, }, { "rcarriga/nvim-notify", opts = {}, }, { "goolord/alpha-nvim", event = "VimEnter", opts = function() local dashboard = require("alpha.themes.dashboard") local logo = [[ ]] dashboard.section.header.val = vim.split(logo, "\n") dashboard.section.buttons.val = { dashboard.button("f", " " .. " Find file", ":Telescope find_files "), dashboard.button("n", " " .. " New file", ":ene startinsert "), dashboard.button("r", " " .. " Recent files", ":Telescope oldfiles "), dashboard.button("g", " " .. " Find text", ":Telescope live_grep "), dashboard.button("c", " " .. " Config", ":e $MYVIMRC "), dashboard.button("s", " " .. " Restore Session", [[:lua require("persistence").load() ]]), dashboard.button("l", "󰒲 " .. " Lazy", ":Lazy"), dashboard.button("q", " " .. " Quit", ":qa"), } for _, button in ipairs(dashboard.section.buttons.val) do button.opts.hl = "AlphaButtons" button.opts.hl_shortcut = "AlphaShortcut" end dashboard.section.header.opts.hl = "AlphaHeader" dashboard.section.buttons.opts.hl = "AlphaButtons" dashboard.section.footer.opts.hl = "AlphaFooter" dashboard.opts.layout[1].val = 8 return dashboard end, config = function(_, dashboard) local lazy = require("lazy") -- close Lazy and re-open when the dashboard is ready if vim.o.filetype == "lazy" then vim.cmd.close() vim.api.nvim_create_autocmd("User", { pattern = "AlphaReady", callback = function() lazy.show() end, }) end require("alpha").setup(dashboard.opts) vim.api.nvim_create_autocmd("User", { pattern = "LazyVimStarted", callback = function() local stats = lazy.stats() local ms = (math.floor(stats.startuptime * 100 + 0.5) / 100) dashboard.section.footer.val = "⚡ Neovim loaded " .. stats.count .. " plugins in " .. ms .. "ms" pcall(vim.cmd.AlphaRedraw) end, }) end, }, }