Files
dotfiles/nvim/files/lua/plugins/lualine.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,
}