Files
keycodex/lua/plugins/alpha.lua
T
2024-08-16 02:51:57 +05:45

108 lines
4.9 KiB
Lua

return {
'goolord/alpha-nvim',
event = 'VimEnter',
opts = function()
local dashboard = require('alpha.themes.dashboard')
require('alpha.term')
local arttoggle = false
local logo = {
[[ ]],
[[ ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ ]],
[[ ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ ]],
[[ ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ ]],
[[ ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ ]],
[[ ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ ]],
[[ ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ ]],
[[ ]],
}
local art = {
-- { name, width, height }
{ 'tohru', 62, 17 },
}
if arttoggle == true then
dashboard.opts.opts.noautocmd = true
dashboard.section.terminal.opts.redraw = true
local path = vim.fn.stdpath('config') .. '/assets/'
-- local random = math.random(1, #art)
local currentart = art[1]
dashboard.section.terminal.command = 'cat ' .. path .. currentart[1]
dashboard.section.terminal.width = currentart[2]
dashboard.section.terminal.height = currentart[3]
dashboard.opts.layout = {
dashboard.section.terminal,
{ type = 'padding', val = 2 },
dashboard.section.buttons,
dashboard.section.footer,
}
else
dashboard.section.header.val = logo
end
dashboard.section.buttons.val = {
dashboard.button('n', ' ' .. ' New File', '<cmd>ene<CR>'),
dashboard.button('e', ' ' .. ' File Tree', ':Telescope file_browser <CR>'),
dashboard.button('f', ' ' .. ' Find files', ':Telescope find_files <CR>'),
dashboard.button('o', ' ' .. ' Recent files', ':Telescope oldfiles <CR>'),
dashboard.button('l', '󰒲 ' .. ' Lazy', ':Lazy <CR>'),
dashboard.button('q', ' ' .. ' Quit', ':q <CR>'),
}
for _, button in ipairs(dashboard.section.buttons.val) do
button.opts.hl = 'AlphaButtons'
button.opts.hl_shortcut = 'AlphaShortcut'
end
dashboard.section.header.opts.hl = 'Function'
dashboard.section.buttons.opts.hl = 'Identifier'
dashboard.section.footer.opts.hl = 'Function'
dashboard.opts.layout[1].val = 4
return dashboard
end,
config = function(_, dashboard)
if vim.o.filetype == 'lazy' then
vim.cmd.close()
vim.api.nvim_create_autocmd('User', {
pattern = 'AlphaReady',
callback = function()
require('lazy').show()
end,
})
end
require('alpha').setup(dashboard.opts)
vim.api.nvim_create_autocmd('User', {
pattern = 'LazyVimStarted',
callback = function()
local v = vim.version()
local dev = ''
if v.prerelease == 'dev' then
dev = '-dev+' .. v.build
else
dev = ''
end
local version = v.major .. '.' .. v.minor .. '.' .. v.patch .. dev
local stats = require('lazy').stats()
local plugins_count = stats.loaded .. '/' .. stats.count
local ms = math.floor(stats.startuptime + 0.5)
local time = vim.fn.strftime('%H:%M:%S')
local date = vim.fn.strftime('%d.%m.%Y')
local line1 = ' ' .. plugins_count .. ' plugins loaded in ' .. ms .. 'ms'
local line2 = '󰃭 ' .. date .. '  ' .. time
local line3 = ' ' .. version
local line1_width = vim.fn.strdisplaywidth(line1)
local line2Padded = string.rep(' ', (line1_width - vim.fn.strdisplaywidth(line2)) / 2) .. line2
local line3Padded = string.rep(' ', (line1_width - vim.fn.strdisplaywidth(line3)) / 2) .. line3
dashboard.section.footer.val = {
line1,
line2Padded,
line3Padded,
}
pcall(vim.cmd.AlphaRedraw)
end,
})
end,
}