diff options
Diffstat (limited to 'lua')
| -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 | 
14 files changed, 277 insertions, 187 deletions
| 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 | 
