Something went wrong. Try again.
My own personal NeoVim configuration. Powered by vim.pack and lz.n
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132return { src = "https://github.com/goolord/alpha-nvim", name = "alpha-nvim", spec = { "alpha-nvim", cmd = "Alpha", keys = { { "<leader>ma", "<cmd>Alpha<cr>", desc = "Back to startpage" }, }, beforeAll = function() if vim.fn.argc(-1) == 0 then require("lz.n").trigger_load("alpha-nvim") end end, after = function() local alpha = require("alpha") local dashboard = require("alpha.themes.dashboard")
local function os_name() local f = io.open("/etc/os-release") if f then for line in f:lines() do local name = line:match('^PRETTY_NAME="?(.-)"?$') if name then f:close() return name end end f:close() end return vim.uv.os_uname().sysname end
local startup_ms
local function stats_line() local ms = startup_ms or (vim.uv.hrtime() - vim.g.nvim_start_time) / 1e6 local v = vim.version() local rtp = {} for _, path in ipairs(vim.api.nvim_list_runtime_paths()) do rtp[path] = true end local loaded, total = 0, 0 for _, p in ipairs(vim.pack.get(nil, { info = false })) do total = total + 1 if rtp[p.path] then loaded = loaded + 1 end end return string.format( " %d.%d.%d | %d/%d %.2fms | %s", v.major, v.minor, v.patch, loaded, total, ms, os_name() ) end
local function time_line() return string.format(" %s - %s", os.date("%H:%M:%S"), os.date("%a %d/%m/%Y")) end
local stats = { type = "text", val = function() local s, t = stats_line(), time_line() local diff = vim.fn.strdisplaywidth(s) - vim.fn.strdisplaywidth(t) if diff > 0 then t = string.rep(" ", math.floor(diff / 2)) .. t elseif diff < 0 then s = string.rep(" ", math.floor(-diff / 2)) .. s end return { s, t } end, opts = { position = "center", hl = "Special" }, }
local btn = dashboard.button local config_dir = vim.fn.stdpath("config")
alpha.setup({ layout = { { type = "padding", val = 2 }, dashboard.section.header, { type = "padding", val = 1 }, stats, { type = "padding", val = 2 }, { type = "group", val = { btn("n", " New file", "<cmd>ene<cr>"), btn("r", " Recent files", "<cmd>Telescope oldfiles<cr>"), btn("s", " Load session", "<cmd>Telescope persisted<cr>"), }, opts = { spacing = 0 }, }, { type = "padding", val = 1 }, { type = "group", val = { btn("c", " Config", "<cmd>cd " .. config_dir .. " | e init.lua<cr>"), btn("p", " Plugins", "<cmd>Pack<cr>"), }, opts = { spacing = 0 }, }, { type = "padding", val = 2 }, { type = "group", val = { btn("q", " Exit", "<cmd>qa<cr>") }, opts = { spacing = 0 }, }, }, opts = { margin = 5 }, })
vim.api.nvim_create_autocmd("User", { pattern = "DeferredUIEnter", once = true, callback = function() startup_ms = (vim.uv.hrtime() - vim.g.nvim_start_time) / 1e6 vim.schedule(function() pcall(alpha.redraw) end) end, }) end, },}