diff options
author | kylo252 <[email protected]> | 2022-03-19 20:02:45 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2022-03-19 20:02:45 +0100 |
commit | c946ddda812c5c2d217061a9016eb8001970d659 (patch) | |
tree | eec7964b135a160244f5ef919f28658c4a988237 | |
parent | 7192b28a24d52b62029c414db46b9fd3a5de475e (diff) |
feat: add alpha.nvim integration (#1906)
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | lua/lvim/config/init.lua | 31 | ||||
-rw-r--r-- | lua/lvim/core/alpha.lua | 62 | ||||
-rw-r--r-- | lua/lvim/core/alpha/dashboard.lua | 83 | ||||
-rw-r--r-- | lua/lvim/core/alpha/startify.lua | 48 | ||||
-rw-r--r-- | lua/lvim/core/autocmds.lua | 13 | ||||
-rw-r--r-- | lua/lvim/core/builtins/init.lua | 2 | ||||
-rw-r--r-- | lua/lvim/core/dashboard.lua | 115 | ||||
-rw-r--r-- | lua/lvim/core/lualine/init.lua | 8 | ||||
-rw-r--r-- | lua/lvim/core/lualine/styles.lua | 13 | ||||
-rw-r--r-- | lua/lvim/core/lualine/utils.lua | 13 | ||||
-rw-r--r-- | lua/lvim/core/which-key.lua | 1 | ||||
-rw-r--r-- | lua/lvim/plugins.lua | 16 | ||||
-rw-r--r-- | lua/lvim/utils/git.lua | 53 | ||||
-rw-r--r-- | lua/lvim/utils/hooks.lua | 6 | ||||
-rw-r--r-- | utils/installer/config.example.lua | 3 |
16 files changed, 280 insertions, 188 deletions
@@ -143,6 +143,7 @@ lvim.plugins = { - `lvim.lang.FOO` is no longer supported. Refer to <https://www.lunarvim.org/languages> for up-to-date instructions. - `lvim.lsp.popup_border` has been deprecated in favor of `lvim.lsp.float.border` and `lvim.lsp.diagnostics.float.border`. +- `lvim.builtin.dashboard` has been replaced with `lvim.builtin.alpha`, see <https://github.com/LunarVim/LunarVim/pull/1906> ## Resources diff --git a/lua/lvim/config/init.lua b/lua/lvim/config/init.lua index de06aa89..c3fe0438 100644 --- a/lua/lvim/config/init.lua +++ b/lua/lvim/config/init.lua @@ -40,20 +40,33 @@ function M:init() local lvim_lsp_config = require "lvim.lsp.config" lvim.lsp = apply_defaults(lvim.lsp, vim.deepcopy(lvim_lsp_config)) + ---@deprecated replaced with lvim.builtin.alpha + lvim.builtin.dashboard = { + active = false, + on_config_done = nil, + search_handler = "", + disable_at_vim_enter = 0, + session_directory = "", + custom_header = {}, + custom_section = {}, + footer = {}, + } + require("lvim.lsp.manager").init_defaults() end local function handle_deprecated_settings() - local function deprecation_notice(setting) + local function deprecation_notice(setting, msg) local in_headless = #vim.api.nvim_list_uis() == 0 if in_headless then return end - local msg = string.format( - "Deprecation notice: [%s] setting is no longer supported. See https://github.com/LunarVim/LunarVim#breaking-changes", - setting - ) + msg = msg + or string.format( + "Deprecation notice: [%s] setting is no longer supported. See https://github.com/LunarVim/LunarVim#breaking-changes", + setting + ) vim.schedule(function() Log:warn(msg) end) @@ -71,6 +84,14 @@ local function handle_deprecated_settings() if vim.tbl_contains(vim.tbl_keys(lvim.lsp), "popup_border") then deprecation_notice "lvim.lsp.popup_border" end + + -- dashboard.nvim + if lvim.builtin.dashboard.active then + deprecation_notice( + "dashboard", + "Deprecation notice: `lvim.builtin.dashboard` has been replaced with `lvim.builtin.alpha`. See LunarVim#1906" + ) + end end --- Override the configuration with a user provided one 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", "<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 + +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 diff --git a/lua/lvim/core/alpha/dashboard.lua b/lua/lvim/core/alpha/dashboard.lua new file mode 100644 index 00000000..010d8c1a --- /dev/null +++ b/lua/lvim/core/alpha/dashboard.lua @@ -0,0 +1,83 @@ +local M = {} + +function M.get_sections() + local header = { + type = "text", + val = { + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣤⣶⣶⣶⣶⣶⣶⣶⣦⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣾⣿⠿⠛⠛⠉⠉⠉⠉⠉⠉⠉⠙⠛⠻⢿⣿⣶⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⢿⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠒⠈⠉⠉⠉⠉⠉⣹⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀⠀⠀⠀⠀⣰⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⠀⠀⠀⠀⢰⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢄⡀⠀⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢺⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠉⠑⠢⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡇⠀⠀⠀⠈⠑⠢⠄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⠢⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠉⠐⠢⠄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⡟⠀⠈⠑⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⢀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠒⠠⠤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⠁⠀⠀⢀⣼⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠁⠒⠂⠤⠤⠀⣀⡀⠀⠀⠀⣼⣿⠇⠀⠀⢀⣸⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠀⣿⡟⠀⠀⠀⠀⠀⠀⣤⡄⠀⠀⠀⣠⣤⠀⠀⢠⣭⣀⣤⣤⣤⡀⠀⠀⠀⢀⣤⣤⣤⣤⡀⠀⠀⠀⢠⣤⢀⣤⣤⣄⠀⠀⣿⣿⠀⠉⣹⣿⠏⠉⠉⢱⣶⣶⣶⡦⠀⠀⠀⢠⣶⣦⣴⣦⣠⣴⣦⡀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⢠⣿⡇⠀⠀⠀⠀⠀⢠⣿⠇⠀⠀⠀⣿⡇⠀⠀⣿⡿⠉⠀⠈⣿⣧⠀⠀⠰⠿⠋⠀⠀⢹⣿⠀⠀⠀⣿⡿⠋⠀⠹⠿⠀⠀⢻⣿⡇⢠⣿⡟⠀⠀⠀⠈⠉⢹⣿⡇⠀⠀⠀⢸⣿⡏⢹⣿⡏⢹⣿⡇⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⢰⣿⠃⠀⢠⣿⡇⠀⠀⠀⣿⡇⠀⠀⣠⣴⡶⠶⠶⣿⣿⠀⠀⢠⣿⡇⠀⠀⠀⠀⠀⠀⢸⣿⣇⣿⡿⠀⠀⠀⠀⠀⠀⣿⣿⠁⠀⠀⠀⣿⣿⠀⣾⣿⠀⣾⣿⠁⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⣿⣟⠀⠀⠀⠀⠀⠀⢻⣿⡀⠀⢀⣼⣿⠀⠀⢸⣿⠀⠀⠀⢰⣿⠇⠀⢰⣿⣇⠀⠀⣠⣿⡏⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⠁⠀⠀⠀⣀⣀⣠⣿⣿⣀⡀⠀⢠⣿⡟⢠⣿⡟⢀⣿⡿⠀⠀⠀⠀⠀", + "⠀⠀⠀⠀⠀⠛⠛⠛⠛⠛⠛⠁⠀⠈⠛⠿⠟⠋⠛⠃⠀⠀⠛⠛⠀⠀⠀⠘⠛⠀⠀⠀⠙⠿⠿⠛⠙⠛⠃⠀⠀⠚⠛⠀⠀⠀⠀⠀⠀⠀⠘⠿⠿⠃⠀⠀⠀⠀⠿⠿⠿⠿⠿⠿⠿⠀⠸⠿⠇⠸⠿⠇⠸⠿⠇⠀⠀⠀⠀⠀", + " ", + }, + opts = { + position = "center", + hl = "Label", + }, + } + + local text = require "lvim.interface.text" + local git_utils = require "lvim.utils.git" + + local current_branch = git_utils.get_lvim_branch() + + local lvim_version + if current_branch ~= "HEAD" or "" then + lvim_version = current_branch .. "-" .. git_utils.get_lvim_current_sha() + else + lvim_version = "v" .. git_utils.get_lvim_tag() + end + + local footer = { + type = "text", + val = text.align_center({ width = 0 }, { + "", + "lunarvim.org", + lvim_version, + }, 0.5), + opts = { + position = "center", + hl = "Number", + }, + } + + local buttons = { + entries = { + { "SPC f", " Find File", "<CMD>Telescope find_files<CR>" }, + { "SPC n", " New File", "<CMD>ene!<CR>" }, + { "SPC P", " Recent Projects ", "<CMD>Telescope projects<CR>" }, + { "SPC s r", " Recently Used Files", "<CMD>Telescope oldfiles<CR>" }, + { "SPC s t", " Find Word", "<CMD>Telescope live_grep<CR>" }, + { + "SPC L c", + " Configuration", + "<CMD>edit " .. require("lvim.config").get_user_config_path() .. " <CR>", + }, + }, + } + + return { + header = header, + buttons = buttons, + footer = footer, + } +end + +return M diff --git a/lua/lvim/core/alpha/startify.lua b/lua/lvim/core/alpha/startify.lua new file mode 100644 index 00000000..2ea541f5 --- /dev/null +++ b/lua/lvim/core/alpha/startify.lua @@ -0,0 +1,48 @@ +local M = {} + +function M.get_sections() + local header = { + type = "text", + val = { + [[ __ _ ___ ]], + [[ / / __ ______ ____ _____| | / (_)___ ___ ]], + [[ / / / / / / __ \/ __ `/ ___/ | / / / __ `__ \]], + [[ / /___/ /_/ / / / / /_/ / / | |/ / / / / / / /]], + [[/_____/\__,_/_/ /_/\__,_/_/ |___/_/_/ /_/ /_/ ]], + }, + opts = { + hl = "Label", + shrink_margin = false, + -- wrap = "overflow"; + }, + } + + local top_buttons = { + entries = { + { "e", " New File", "<CMD>ene!<CR>" }, + }, + val = {}, + } + + local bottom_buttons = { + entries = { + { "q", "Quit", "<CMD>quit<CR>" }, + }, + val = {}, + } + + local footer = { + type = "group", + val = {}, + } + + return { + header = header, + top_buttons = top_buttons, + bottom_buttons = bottom_buttons, + -- this is probably broken + footer = footer, + } +end + +return M diff --git a/lua/lvim/core/autocmds.lua b/lua/lvim/core/autocmds.lua index e10a42db..de19d166 100644 --- a/lua/lvim/core/autocmds.lua +++ b/lua/lvim/core/autocmds.lua @@ -53,6 +53,19 @@ function M.load_augroups() _general_lsp = { { "FileType", "lspinfo,lsp-installer,null-ls-info", "nnoremap <silent> <buffer> q :close<CR>" }, }, + _alpha = { + { + "FileType", + "alpha", + "set showtabline=0 | autocmd BufLeave <buffer> set showtabline=" .. vim.opt.showtabline._value, + }, + -- https://github.com/goolord/alpha-nvim/issues/42 + { + "FileType", + "alpha", + "set laststatus=0 | autocmd BufUnload <buffer> set laststatus=" .. vim.opt.laststatus._value, + }, + }, custom_groups = {}, } end diff --git a/lua/lvim/core/builtins/init.lua b/lua/lvim/core/builtins/init.lua index cd47b638..e219d45e 100644 --- a/lua/lvim/core/builtins/init.lua +++ b/lua/lvim/core/builtins/init.lua @@ -4,7 +4,6 @@ local builtins = { "lvim.core.which-key", "lvim.core.gitsigns", "lvim.core.cmp", - "lvim.core.dashboard", "lvim.core.dap", "lvim.core.terminal", "lvim.core.telescope", @@ -16,6 +15,7 @@ local builtins = { "lvim.core.comment", "lvim.core.notify", "lvim.core.lualine", + "lvim.core.alpha", } function M.config(config) diff --git a/lua/lvim/core/dashboard.lua b/lua/lvim/core/dashboard.lua deleted file mode 100644 index 438b46f3..00000000 --- a/lua/lvim/core/dashboard.lua +++ /dev/null @@ -1,115 +0,0 @@ -local M = {} -local utils = require "lvim.utils" - -M.config = function(config) - lvim.builtin.dashboard = { - active = false, - on_config_done = nil, - search_handler = "telescope", - disable_at_vim_enter = 0, - session_directory = utils.join_paths(get_cache_dir(), "sessions"), - custom_header = { - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣤⣶⣾⠿⠿⠟⠛⠛⠛⠛⠿⠿⣿⣷⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - " ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⡿⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⣷⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⡿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠒⠂⠉⠉⠉⠉⢩⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀⠀⠀⠀⢰⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠠⡀⠀⠀⢀⣾⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠢⢀⣸⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡧⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡇⠀⠈⠁⠒⠤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣇⠀⠀⠀⠀⠀⠀⠉⠢⠤⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡟⠈⠑⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠑⠒⠤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡇⠀⠀⢀⣣⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠒⠢⠤⠄⣀⣀⠀⠀⠀⢠⣿⡟⠀⠀⠀⣺⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", - "⠀⣿⠇⠀⠀⠀⠀⠀⣤⡄⠀⠀⢠⣤⡄⠀⢨⣭⣠⣤⣤⣤⡀⠀⠀⢀⣤⣤⣤⣤⡄⠀⠀⠀⣤⣄⣤⣤⣤⠀⠀⣿⣯⠉⠉⣿⡟⠀⠈⢩⣭⣤⣤⠀⠀⠀⠀⣠⣤⣤⣤⣄⣤⣤", - "⢠⣿⠀⠀⠀⠀⠀⠀⣿⠃⠀⠀⣸⣿⠁⠀⣿⣿⠉⠀⠈⣿⡇⠀⠀⠛⠋⠀⠀⢹⣿⠀⠀⠀⣿⠏⠀⠸⠿⠃⠀⣿⣿⠀⣰⡟⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⠀⣿⡟⢸⣿⡇⢀⣿", - "⣸⡇⠀⠀⠀⠀⠀⢸⣿⠀⠀⠀⣿⡟⠀⢠⣿⡇⠀⠀⢰⣿⡇⠀⣰⣾⠟⠛⠛⣻⡇⠀⠀⢸⡿⠀⠀⠀⠀⠀⠀⢻⣿⢰⣿⠀⠀⠀⠀⠀⠀⣾⡇⠀⠀⠀⢸⣿⠇⢸⣿⠀⢸⡏", - "⣿⣧⣤⣤⣤⡄⠀⠘⣿⣤⣤⡤⣿⠇⠀⢸⣿⠁⠀⠀⣼⣿⠀⠀⢿⣿⣤⣤⠔⣿⠃⠀⠀⣾⡇⠀⠀⠀⠀⠀⠀⢸⣿⣿⠋⠀⠀⠀⢠⣤⣤⣿⣥⣤⡄⠀⣼⣿⠀⣸⡏⠀⣿⠃", - "⠉⠉⠉⠉⠉⠁⠀⠀⠈⠉⠉⠀⠉⠀⠀⠈⠉⠀⠀⠀⠉⠉⠀⠀⠀⠉⠉⠁⠈⠉⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠀⠀⠀⠀⠈⠉⠉⠉⠉⠉⠁⠀⠉⠁⠀⠉⠁⠀⠉⠀", - }, - - custom_section = { - a = { - description = { " Find File " }, - command = "Telescope find_files", - }, - b = { - description = { " New File " }, - command = ":ene!", - }, - c = { - description = { " Recent Projects " }, - command = "Telescope projects", - }, - d = { - description = { " Recently Used Files" }, - command = "Telescope oldfiles", - }, - e = { - description = { " Find Word " }, - command = "Telescope live_grep", - }, - f = { - description = { " Configuration " }, - command = ":e " .. config.user_config_file, - }, - }, - - footer = { "lunarvim.org" }, - } - lvim.builtin.which_key.mappings[";"] = { "<cmd>Dashboard<CR>", "Dashboard" } -end - -M.setup = function() - vim.g.dashboard_disable_at_vimenter = lvim.builtin.dashboard.disable_at_vim_enter - - vim.g.dashboard_custom_header = lvim.builtin.dashboard.custom_header - - vim.g.dashboard_default_executive = lvim.builtin.dashboard.search_handler - - vim.g.dashboard_custom_section = lvim.builtin.dashboard.custom_section - - vim.g.dashboard_session_directory = lvim.builtin.dashboard.session_directory - - local lvim_site = "lunarvim.org" - local lvim_version = require("lvim.utils.git"):get_lvim_version "short" - local num_plugins_loaded = #vim.fn.globpath(get_runtime_dir() .. "/site/pack/packer/start", "*", 0, 1) - - local footer = { - "LunarVim loaded " .. num_plugins_loaded .. " plugins ", - "", - lvim_site, - } - - if lvim_version then - table.insert(footer, 2, "") - table.insert(footer, 2, lvim_version) - end - - local text = require "lvim.interface.text" - vim.g.dashboard_custom_footer = text.align_center({ width = 0 }, footer, 0.49) -- Use 0.49 as counts for 2 characters - - require("lvim.core.autocmds").define_augroups { - _dashboard = { - -- seems to be nobuflisted that makes my stuff disappear will do more testing - { - "FileType", - "dashboard", - "setlocal nocursorline noswapfile synmaxcol& signcolumn=no norelativenumber nocursorcolumn nospell nolist nonumber bufhidden=wipe colorcolumn= foldcolumn=0 matchpairs= ", - }, - { - "FileType", - "dashboard", - "set showtabline=0 | autocmd BufLeave <buffer> set showtabline=" .. vim.opt.showtabline._value, - }, - { "FileType", "dashboard", "nnoremap <silent> <buffer> q :q<CR>" }, - }, - } - - if lvim.builtin.dashboard.on_config_done then - lvim.builtin.dashboard.on_config_done() - end -end - -return M diff --git a/lua/lvim/core/lualine/init.lua b/lua/lvim/core/lualine/init.lua index c8eca23f..e041e8a8 100644 --- a/lua/lvim/core/lualine/init.lua +++ b/lua/lvim/core/lualine/init.lua @@ -34,8 +34,14 @@ M.config = function() end M.setup = function() + -- avoid running in headless mode since it's harder to detect failures + if #vim.api.nvim_list_uis() == 0 then + local Log = require "lvim.core.log" + Log:debug "headless mode detected, skipping running setup for lualine" + return + end + require("lvim.core.lualine.styles").update() - require("lvim.core.lualine.utils").validate_theme() local lualine = require "lualine" lualine.setup(lvim.builtin.lualine) diff --git a/lua/lvim/core/lualine/styles.lua b/lua/lvim/core/lualine/styles.lua index f5f5871a..45c6c639 100644 --- a/lua/lvim/core/lualine/styles.lua +++ b/lua/lvim/core/lualine/styles.lua @@ -10,6 +10,7 @@ local styles = { styles.none = { style = "none", options = { + theme = "auto", icons_enabled = true, component_separators = { left = "", right = "" }, section_separators = { left = "", right = "" }, @@ -38,6 +39,7 @@ styles.none = { styles.default = { style = "default", options = { + theme = "auto", icons_enabled = true, component_separators = { left = "", right = "" }, section_separators = { left = "", right = "" }, @@ -66,10 +68,11 @@ styles.default = { styles.lvim = { style = "lvim", options = { + theme = "auto", icons_enabled = true, component_separators = { left = "", right = "" }, section_separators = { left = "", right = "" }, - disabled_filetypes = { "dashboard", "NvimTree", "Outline" }, + disabled_filetypes = { "alpha", "NvimTree", "Outline" }, }, sections = { lualine_a = { @@ -113,10 +116,10 @@ function M.get_style(style) if not vim.tbl_contains(style_keys, style) then local Log = require "lvim.core.log" Log:error( - "Invalid lualine style", - string.format('"%s"', style), - "options are: ", - string.format('"%s"', table.concat(style_keys, '", "')) + "Invalid lualine style" + .. string.format('"%s"', style) + .. "options are: " + .. string.format('"%s"', table.concat(style_keys, '", "')) ) Log:debug '"lvim" style is applied.' style = "lvim" diff --git a/lua/lvim/core/lualine/utils.lua b/lua/lvim/core/lualine/utils.lua index d685e044..3fd3c2d3 100644 --- a/lua/lvim/core/lualine/utils.lua +++ b/lua/lvim/core/lualine/utils.lua @@ -1,18 +1,5 @@ local M = {} -function M.validate_theme() - local theme = lvim.builtin.lualine.options.theme or "auto" - if type(theme) == "table" then - return - end - - local lualine_loader = require "lualine.utils.loader" - local ok = pcall(lualine_loader.load_theme, theme) - if not ok then - lvim.builtin.lualine.options.theme = "auto" - end -end - function M.env_cleanup(venv) if string.find(venv, "/") then local final_venv = venv diff --git a/lua/lvim/core/which-key.lua b/lua/lvim/core/which-key.lua index f169a234..511786f0 100644 --- a/lua/lvim/core/which-key.lua +++ b/lua/lvim/core/which-key.lua @@ -64,6 +64,7 @@ M.config = function() ["/"] = { "<ESC><CMD>lua require('Comment.api').toggle_linewise_op(vim.fn.visualmode())<CR>", "Comment" }, }, mappings = { + [";"] = { "<cmd>Alpha<CR>", "Dashboard" }, ["w"] = { "<cmd>w!<CR>", "Save" }, ["q"] = { "<cmd>q!<CR>", "Quit" }, ["/"] = { "<cmd>lua require('Comment.api').toggle_current_linewise()<CR>", "Comment" }, diff --git a/lua/lvim/plugins.lua b/lua/lvim/plugins.lua index 8c80e866..d7ecdccb 100644 --- a/lua/lvim/plugins.lua +++ b/lua/lvim/plugins.lua @@ -1,12 +1,12 @@ local commit = { - bufferline = "f63be9a3a3429a726af14c9085d547281bdf38cc", + alpha_nvim = "14be0ac200f44009672046123c6fcb30724018a5", + bufferline = "5e101b1b4e1ea5b868b8865a5f749b0b5b8f3ccd", cmp_buffer = "d66c4c2d376e5be99db68d2362cd94d250987525", cmp_luasnip = "d6f837f4e8fe48eeae288e638691b91b97d1737f", cmp_nvim_lsp = "ebdfc204afb87f15ce3d3d3f5df0b8181443b5ba", cmp_path = "466b6b8270f7ba89abd59f402c73f63c7331ff6e", comment = "a841f73523440c4f32d39f0290cf1e691311db2a", dapinstall = "24923c3819a450a772bb8f675926d530e829665f", - dashboard_nvim = "d82ddae95fd4dc4c3b7bbe87f09b1840fbf20ecb", fixcursorhold = "1bfb32e7ba1344925ad815cb0d7f901dbc0ff7c1", friendly_snippets = "ad07b2844021b20797adda5b483265802559a693", gitsigns = "2df360de757c39c04076cb04bcbbd361dec3c8c2", @@ -25,6 +25,7 @@ local commit = { nvim_treesitter = "fd92e70c69330dd8f2f6753d3d987c34e7dacd24", nvim_ts_context_commentstring = "097df33c9ef5bbd3828105e4bee99965b758dc3f", nvim_web_devicons = "4415d1aaa56f73b9c05795af84d625c610b05d3b", + onedarker = "b00dd2189f264c5aeb4cf04c59439655ecd573ec", packer = "c576ab3f1488ee86d60fd340d01ade08dcabd256", plenary = "14dfb4071022b22e08384ee125a5607464b6d397", popup = "b7404d35d5d3548a82149238289fa71f7f6de4ac", @@ -57,6 +58,7 @@ return { require("onedarker").setup() lvim.builtin.lualine.options.theme = "onedarker" end, + commit = commit.onedarker, disable = lvim.colorscheme ~= "onedarker", }, { @@ -262,14 +264,14 @@ return { disable = not lvim.builtin.dap.active, }, - -- Dashboard + -- alpha { - "ChristianChiarulli/dashboard-nvim", - event = "BufWinEnter", + "goolord/alpha-nvim", config = function() - require("lvim.core.dashboard").setup() + require("lvim.core.alpha").setup() end, - disable = not lvim.builtin.dashboard.active, + commit = commit.alpha_nvim, + disable = not lvim.builtin.alpha.active, }, -- Terminal diff --git a/lua/lvim/utils/git.lua b/lua/lvim/utils/git.lua index 8f25a2bb..ce323160 100644 --- a/lua/lvim/utils/git.lua +++ b/lua/lvim/utils/git.lua @@ -1,11 +1,12 @@ local M = {} local Log = require "lvim.core.log" +local if_nil = vim.F.if_nil local function git_cmd(opts) local plenary_loaded, Job = pcall(require, "plenary.job") if not plenary_loaded then - vim.cmd "packadd plenary.nvim" + return 1, { "" } end opts = opts or {} @@ -89,51 +90,27 @@ end ---Get the current Lunarvim development branch ---@return string|nil function M.get_lvim_branch() - local ret, branch = git_cmd { args = { "rev-parse", "--abbrev-ref", "HEAD" } } - if ret ~= 0 or (not branch or branch[1] == "") then - Log:error "Unable to retrieve the name of the current branch. Check the log for further information" - return - end - return branch[1] + local _, results = git_cmd { args = { "rev-parse", "--abbrev-ref", "HEAD" } } + local branch = if_nil(results[1], "") + return branch end ---Get currently checked-out tag of Lunarvim ----@param type string can be "short" ----@return string|nil -function M.get_lvim_tag(type) - type = type or "" - local ret, results = git_cmd { args = { "describe", "--tags" } } - local lvim_full_ver = results[1] or "" +---@return string +function M.get_lvim_tag() + local args = { "describe", "--tags", "--abbrev=0" } - if ret ~= 0 or string.match(lvim_full_ver, "%d") == nil then - return nil - end - if type == "short" then - return vim.fn.split(lvim_full_ver, "-")[1] - else - return string.sub(lvim_full_ver, 1, #lvim_full_ver - 1) - end + local _, results = git_cmd { args = args } + local tag = if_nil(results[1], "") + return tag end ---Get the commit hash of currently checked-out commit of Lunarvim ----@param type string can be "short" ---@return string|nil -function M.get_lvim_version(type) - type = type or "" - local branch = M.get_lvim_branch() - if branch == "master" then - return M.get_lvim_tag(type) - end - local ret, log_results = git_cmd { args = { "log", "--pretty=format:%h", "-1" } } - local abbrev_version = log_results[1] or "" - if ret ~= 0 or string.match(abbrev_version, "%d") == nil then - Log:error "Unable to retrieve current version. Check the log for further information" - return nil - end - if type == "short" then - return abbrev_version - end - return branch .. "-" .. abbrev_version +function M.get_lvim_current_sha() + local _, log_results = git_cmd { args = { "log", "--pretty=format:%h", "-1" } } + local abbrev_version = if_nil(log_results[1], "") + return abbrev_version end function M.generate_plugins_sha(output) diff --git a/lua/lvim/utils/hooks.lua b/lua/lvim/utils/hooks.lua index d28123ab..b40f2c23 100644 --- a/lua/lvim/utils/hooks.lua +++ b/lua/lvim/utils/hooks.lua @@ -12,8 +12,10 @@ function M.run_pre_reload() end function M.run_on_packer_complete() - -- manually trigger event to fix colors - vim.cmd [[ doautocmd ColorScheme ]] + if not in_headless then + -- manually trigger event to fix colors + vim.cmd [[ doautocmd ColorScheme ]] + end Log:info "Reloaded configuration" end diff --git a/utils/installer/config.example.lua b/utils/installer/config.example.lua index 9c69a851..4ea98fbe 100644 --- a/utils/installer/config.example.lua +++ b/utils/installer/config.example.lua @@ -54,7 +54,8 @@ lvim.keys.normal_mode["<C-s>"] = ":w<cr>" -- TODO: User Config for predefined plugins -- After changing plugin config exit and reopen LunarVim, Run :PackerInstall :PackerCompile -lvim.builtin.dashboard.active = true +lvim.builtin.alpha.active = true +lvim.builtin.alpha.mode = "dashboard" lvim.builtin.notify.active = true lvim.builtin.terminal.active = true lvim.builtin.nvimtree.setup.view.side = "left" |