summaryrefslogtreecommitdiff
path: root/lua/lvim/core/alpha.lua
diff options
context:
space:
mode:
authorkylo252 <[email protected]>2022-03-24 15:48:33 +0100
committerkylo252 <[email protected]>2022-03-24 15:48:33 +0100
commitf41edc6dfb0d2a4c9875da08bbbdab121e52048f (patch)
treec6541278c6314e58d991bc95e547e903ac58340a /lua/lvim/core/alpha.lua
parent5ee460fdc751a91cdf7a4f4aab2ab784ebdb36fd (diff)
parent1ea836e3601b7ed0ed0496888dc14683bfbcce75 (diff)
Merge remote-tracking branch 'origin/rolling'1.1.3
Diffstat (limited to 'lua/lvim/core/alpha.lua')
-rw-r--r--lua/lvim/core/alpha.lua83
1 files changed, 83 insertions, 0 deletions
diff --git a/lua/lvim/core/alpha.lua b/lua/lvim/core/alpha.lua
new file mode 100644
index 00000000..7612854b
--- /dev/null
+++ b/lua/lvim/core/alpha.lua
@@ -0,0 +1,83 @@
+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", "<leader>")
+ 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
+
+local function configure_additional_autocmds()
+ local aucmds = {
+ {
+ "FileType",
+ "alpha",
+ "set showtabline=0 | autocmd BufLeave <buffer> 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 <buffer> 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
+ 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)
+ configure_additional_autocmds()
+end
+
+return M