137 lines
3.1 KiB
Lua
137 lines
3.1 KiB
Lua
local fallback_palette = {
|
|
color0 = "#191724",
|
|
color1 = "#eb6f92",
|
|
color2 = "#31748f",
|
|
color3 = "#f6c177",
|
|
color4 = "#9ccfd8",
|
|
color5 = "#c4a7e7",
|
|
color6 = "#ebbcba",
|
|
color7 = "#908caa",
|
|
color8 = "#26233a",
|
|
color9 = "#eb6f92",
|
|
color10 = "#31748f",
|
|
color11 = "#f6c177",
|
|
color12 = "#9ccfd8",
|
|
color13 = "#c4a7e7",
|
|
color14 = "#ebbcba",
|
|
color15 = "#e0def4",
|
|
}
|
|
|
|
local function build_theme()
|
|
local c = _G.matugen_palette or fallback_palette
|
|
local bg_base = "NONE"
|
|
local dark = "#000000"
|
|
local color = require("util.color")
|
|
|
|
return {
|
|
normal = {
|
|
a = { bg = c.color4, fg = dark, gui = "bold" },
|
|
b = { bg = color.darken(c.color4, 50), fg = c.color15 },
|
|
c = { bg = c.color0, fg = c.color15 },
|
|
},
|
|
insert = {
|
|
a = { bg = c.color2, fg = dark, gui = "bold" },
|
|
b = { bg = color.darken(c.color2, 50), fg = c.color15 },
|
|
},
|
|
visual = {
|
|
a = { bg = c.color5, fg = dark, gui = "bold" },
|
|
b = { bg = color.darken(c.color5, 50), fg = c.color15 },
|
|
},
|
|
replace = {
|
|
a = { bg = c.color3, fg = dark, gui = "bold" },
|
|
b = { bg = color.darken(c.color3, 50), fg = c.color15 },
|
|
},
|
|
command = {
|
|
a = { bg = c.color1, fg = dark, gui = "bold" },
|
|
b = { bg = color.darken(c.color1, 50), fg = c.color15 },
|
|
},
|
|
inactive = {
|
|
a = { bg = bg_base, fg = c.color7, gui = "bold" },
|
|
b = { bg = bg_base, fg = c.color7 },
|
|
},
|
|
}
|
|
end
|
|
|
|
local function setup_macro_refresh(lualine)
|
|
vim.api.nvim_create_autocmd("RecordingEnter", {
|
|
callback = function()
|
|
lualine.refresh({ place = { "statusline" } })
|
|
end,
|
|
})
|
|
vim.api.nvim_create_autocmd("RecordingLeave", {
|
|
callback = function()
|
|
local timer = vim.loop.new_timer()
|
|
timer:start(
|
|
50,
|
|
0,
|
|
vim.schedule_wrap(function()
|
|
lualine.refresh({ place = { "statusline" } })
|
|
end)
|
|
)
|
|
end,
|
|
})
|
|
end
|
|
|
|
local function macro_recording_status()
|
|
return {
|
|
"macro-recording",
|
|
fmt = function()
|
|
local register = vim.fn.reg_recording()
|
|
return register == "" and "" or "RECORDING @" .. register
|
|
end,
|
|
}
|
|
end
|
|
|
|
local function heart()
|
|
return [[♥ ]]
|
|
end
|
|
|
|
return {
|
|
"nvim-lualine/lualine.nvim",
|
|
event = "VeryLazy",
|
|
dependencies = { "nvim-tree/nvim-web-devicons" },
|
|
init = function()
|
|
vim.opt.laststatus = 0
|
|
end,
|
|
config = function()
|
|
vim.opt.laststatus = 3
|
|
|
|
local lualine = require("lualine")
|
|
setup_macro_refresh(lualine)
|
|
|
|
local function do_setup()
|
|
lualine.setup({
|
|
options = {
|
|
theme = build_theme(),
|
|
component_separators = "",
|
|
section_separators = { left = "", right = "" },
|
|
disabled_filetypes = { "alpha" },
|
|
},
|
|
sections = {
|
|
lualine_a = {
|
|
{ "mode", separator = { left = "", right = "" }, right_padding = 2 },
|
|
macro_recording_status(),
|
|
},
|
|
lualine_b = { "diff", "diagnostics" },
|
|
lualine_c = { { "filename", path = 1 } },
|
|
lualine_x = { "filetype" },
|
|
lualine_y = { "progress" },
|
|
lualine_z = {
|
|
{ "location", separator = { left = "" }, left_padding = 2 },
|
|
{ heart, separator = { right = "" } },
|
|
},
|
|
},
|
|
extensions = { "nvim-tree", "fzf" },
|
|
})
|
|
end
|
|
|
|
do_setup()
|
|
|
|
-- Re-setup lualine when matugen reloads theme
|
|
vim.api.nvim_create_autocmd("User", {
|
|
pattern = "MatugenReload",
|
|
callback = do_setup,
|
|
})
|
|
end,
|
|
}
|