local tabline_provider = require('user.config.vars').tabline_provider return { { 'goolord/alpha-nvim', event = 'VimEnter', opts = function() return require('user.plugins.ui.alpha') end, config = function(_, opts) require('alpha').setup(opts) -- Disable tabline in Alpha buffer local showtabline_val = vim.o.showtabline if showtabline_val ~= 0 then vim.api.nvim_create_autocmd('User', { pattern = 'AlphaReady', callback = function() vim.opt.showtabline = 0 vim.api.nvim_create_autocmd('BufUnload', { buffer = 0, once = true, callback = function() vim.opt.showtabline = showtabline_val end, }) end, }) end end, }, { 'tiagovla/scope.nvim', event = 'VeryLazy', keys = { { 'fB', function() require('telescope').load_extension('scope') vim.cmd.Telescope { args = { 'scope', 'buffers' }} end, desc = 'Scoped buffers', }, }, config = true, }, { 'nanozuki/tabby.nvim', enabled = vim.o.showtabline ~= 0 and tabline_provider == 'tabby', event = 'VeryLazy', config = function() require('user.plugins.ui.tabby') end, }, { 'willothy/nvim-cokeline', enabled = vim.o.showtabline ~= 0 and tabline_provider == 'cokeline', event = 'VeryLazy', keys = { { '[b', '(cokeline-focus-prev)', desc = 'Previous buffer' }, { ']b', '(cokeline-focus-next)', desc = 'Next buffer' }, { 'b', function() require('cokeline.mappings').pick('focus') end, desc = 'Pick buffer' }, { 'q', function() require('cokeline.mappings').pick('close') end, desc = 'Close picked buffer' }, }, opts = function() return require('user.plugins.ui.cokeline') end, }, { 'rebelot/heirline.nvim', event = 'UIEnter', config = function() require('user.plugins.ui.heirline') end, }, { 'nvim-tree/nvim-tree.lua', cmd = { 'NvimTreeToggle', 'NvimTreeFindFileToggle', 'NvimTreeFocus' }, keys = { { 'n', function() require('nvim-tree.api').tree.toggle(false, true) end, desc = 'NvimTree' }, { 'N', function() require('nvim-tree.api').tree.focus() end, desc = 'NvimTree (focus)' }, }, opts = require('user.plugins.ui.tree'), }, { 'petertriho/nvim-scrollbar', event = 'BufReadPost', opts = { set_highlights = false, show_in_active_only = true, handle = { blend = 0 }, handlers = { cursor = false }, excluded_filetypes = { 'alpha', 'lazy', 'notify', 'aerial', 'Trouble', 'NvimTree', 'qf', 'prompt', 'noice', 'OverseerForm', 'TelescopePrompt', }, }, }, { 'folke/which-key.nvim', event = 'VeryLazy', config = function() require('user.plugins.ui.which-key') end, }, { 'stevearc/dressing.nvim', event = 'VeryLazy', init = function() ---@diagnostic disable-next-line: duplicate-set-field vim.ui.select = function(...) require('lazy').load({ plugins = { 'dressing.nvim' } }) return vim.ui.select(...) end end, opts = require('user.plugins.ui.dressing'), }, { 'folke/noice.nvim', event = 'VeryLazy', dependencies = { { 'rcarriga/nvim-notify', keys = { { 'uN', function() require('notify').dismiss { silent = true, pending = true } end, desc = 'Delete all notifications', }, { 'un', function() require('telescope').load_extension('notify') vim.cmd.Telescope { args = { 'notify' } } end, desc = 'Show all notifications', }, }, opts = require('user.plugins.ui.notify') }, }, keys = { { '', function() require('noice').redirect(vim.fn.getcmdline()) end, mode = 'c', desc = 'Redirect Cmdline' }, { 'ul', function() require('noice').cmd('last') end, desc = 'Noice Last Message' }, { 'uh', function() require('noice').cmd('history') end, desc = 'Noice History' }, { 'ua', function() require('noice').cmd('all') end, desc = 'Noice All' }, { '', function() if not require('noice.lsp').scroll(4) then return '' end end, silent = true, expr = true, desc = 'Scroll forward', mode = {'i', 'n', 's'} }, { '', function() if not require('noice.lsp').scroll(-4) then return '' end end, silent = true, expr = true, desc = 'Scroll backward', mode = {'i', 'n', 's'}}, }, opts = require('user.plugins.ui.noice'), }, { 'folke/trouble.nvim', cmd = { 'Trouble', 'TroubleToggle' }, keys = { { '[q', function() if require('trouble').is_open() then require('trouble').previous { skip_groups = true, jump = true } else vim.cmd.cprev() end end, desc = 'Previous trouble/quickfix item', }, { ']q', function() if require('trouble').is_open() then require('trouble').next { skip_groups = true, jump = true } else vim.cmd.cnext() end end, desc = 'Next trouble/quickfix item', }, { 'gL', 'TroubleToggle loclist', desc = 'Location list (Trouble)' }, { 'gQ', 'TroubleToggle quickfix', desc = 'Quickfix (Trouble)' }, }, opts = function() return require('user.plugins.ui.trouble') end, }, }