From c946ddda812c5c2d217061a9016eb8001970d659 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sat, 19 Mar 2022 20:02:45 +0100 Subject: feat: add alpha.nvim integration (#1906) --- lua/lvim/core/alpha.lua | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 lua/lvim/core/alpha.lua (limited to 'lua/lvim/core/alpha.lua') diff --git a/lua/lvim/core/alpha.lua b/lua/lvim/core/alpha.lua new file mode 100644 index 00000000..67099923 --- /dev/null +++ b/lua/lvim/core/alpha.lua @@ -0,0 +1,62 @@ +local M = {} + +function M.config() + local lvim_dashboard = require "lvim.core.alpha.dashboard" + local lvim_startify = require "lvim.core.alpha.startify" + lvim.builtin.alpha = { + dashboard = { config = {}, section = lvim_dashboard.get_sections() }, + startify = { config = {}, section = lvim_startify.get_sections() }, + active = true, + mode = "dashboard", + } +end + +local function resolve_buttons(theme_name, entries) + local selected_theme = require("alpha.themes." .. theme_name) + local val = {} + for _, entry in pairs(entries) do + local on_press = function() + local sc_ = entry[1]:gsub("%s", ""):gsub("SPC", "") + local key = vim.api.nvim_replace_termcodes(sc_, true, false, true) + vim.api.nvim_feedkeys(key, "normal", false) + end + local button_element = selected_theme.button(entry[1], entry[2], entry[3]) + -- this became necessary after recent changes in alpha.nvim (06ade3a20ca9e79a7038b98d05a23d7b6c016174) + button_element.on_press = on_press + table.insert(val, button_element) + end + return val +end + +local function resolve_config(theme_name) + local selected_theme = require("alpha.themes." .. theme_name) + local resolved_section = selected_theme.section + local section = lvim.builtin.alpha[theme_name].section + + for name, el in pairs(section) do + for k, v in pairs(el) do + if name:match "buttons" and k == "entries" then + resolved_section[name].val = resolve_buttons(theme_name, v) + elseif v then + resolved_section[name][k] = v + end + end + end + + return selected_theme.config +end + +function M.setup() + local alpha = require "alpha" + local mode = lvim.builtin.alpha.mode + local config = lvim.builtin.alpha[mode].config + + -- this makes it easier to use a completely custom configuration + if vim.tbl_isempty(config) then + config = resolve_config(mode) + end + + alpha.setup(config) +end + +return M -- cgit v1.2.3 From ba5bde2181225b460ecf0a9b11f726d25ec36598 Mon Sep 17 00:00:00 2001 From: Abouzar Parvan Date: Sun, 20 Mar 2022 14:18:17 +0330 Subject: fix(alpha): globalstatus after openning files from dashboard (#2366) --- lua/lvim/core/alpha.lua | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'lua/lvim/core/alpha.lua') diff --git a/lua/lvim/core/alpha.lua b/lua/lvim/core/alpha.lua index 67099923..7612854b 100644 --- a/lua/lvim/core/alpha.lua +++ b/lua/lvim/core/alpha.lua @@ -46,6 +46,26 @@ local function resolve_config(theme_name) return selected_theme.config end +local function configure_additional_autocmds() + local aucmds = { + { + "FileType", + "alpha", + "set showtabline=0 | autocmd BufLeave set showtabline=" .. vim.opt.showtabline._value, + }, + } + if not lvim.builtin.lualine.options.globalstatus then + aucmds[#aucmds + 1] = + -- https://github.com/goolord/alpha-nvim/issues/42 + { + "FileType", + "alpha", + "set laststatus=0 | autocmd BufUnload set laststatus=" .. vim.opt.laststatus._value, + } + end + require("lvim.core.autocmds").define_augroups { _alpha = aucmds } +end + function M.setup() local alpha = require "alpha" local mode = lvim.builtin.alpha.mode @@ -57,6 +77,7 @@ function M.setup() end alpha.setup(config) + configure_additional_autocmds() end return M -- cgit v1.2.3