Files
AstroConfig/lua/plugins/40-heirline.lua

108 lines
3.8 KiB
Lua

---@type LazySpec
return {
{
"AstroNvim/astroui",
opts = {
status = {
attributes = {
buffer_active = { bold = true, italic = false },
tab_active = { bold = true },
},
colors = require("astrobox.heirline").setup_colors,
},
},
},
{
"rebelot/heirline.nvim",
optional = true,
opts = function(_, opts)
local status = require("astroui.status")
local comp = status.component
opts.statusline = {
hl = "statusline",
comp.mode({
mode_text = { hl = { bold = true }, padding = { left = 1, right = 1 } },
}),
comp.file_info({
filetype = false,
filename = {
modify = ":~:.",
},
file_modified = {},
}),
comp.diagnostics(),
comp.fill(),
comp.cmd_info(),
comp.fill(),
comp.lsp(),
comp.treesitter({ padding = { right = 1 } }), -- Extra space to separate from next component
comp.git_diff(),
comp.git_branch(),
comp.nav({ scrollbar = false, padding = { right = 1 } }),
}
local get_file_path = status.provider.filename({
modify = ":~:.:h", -- Relative path and cut filename
})
-- Fix path separation on windows
local path_func = get_file_path
if vim.fn.has("win32") then
path_func = function(self)
local str = get_file_path(self)
return string.gsub(str, "\\", "/")
end
end
opts.winbar = {
init = function(self)
self.bufnr = vim.api.nvim_get_current_buf()
end,
fallthrough = false,
{
-- Display file path when window is not active
condition = function()
return not status.condition.is_active()
end,
{
-- Set display priority to hide when component is too big to fit
flexible = 1,
comp.separated_path({
flexible = 2,
max_depth = 5,
path_func = path_func,
}),
comp.separated_path({
flexible = 3,
max_depth = 3,
path_func = path_func,
}),
comp.separated_path({
flexible = 4,
max_depth = 1,
path_func = path_func,
}),
{
-- Hide
provider = "",
},
},
comp.file_info({
file_icon = { hl = status.hl.file_icon("winbar"), padding = { left = 0 } },
file_modified = {},
file_read_only = {},
filename = {},
filetype = false,
hl = status.hl.get_attributes("winbarnc", true),
surround = false,
update = { "BufEnter", "BufWrite" },
}),
},
comp.breadcrumbs(),
}
return opts
end,
},
}