dotfiles/config/nvim/lua/fschauen/plugins/lualine.lua

98 lines
2.4 KiB
Lua

return {
"nvim-lualine/lualine.nvim",
dependencies = "nvim-tree/nvim-web-devicons",
opts = function()
local icons = require("fschauen.util.icons")
local dynamic_color = require("fschauen.util.lualine").dynamic_color
local indicator = require("fschauen.util.lualine").indicator
local window = require("fschauen.util.window")
local orange = "#d65d0e"
local is_diagnostics_enabled = function(bufnr)
return vim.diagnostic.is_enabled { bufnr = bufnr or 0 }
end
--
-- Components
--
local autoformat = indicator {
icon = icons.ui.Format,
cond = require("fschauen.util.autoformat").is_enabled,
}
local branch = {
"branch",
icon = icons.git.Branch,
cond = window.is_medium,
}
local diagnostics = {
dynamic_color("diagnostics"),
cond = is_diagnostics_enabled,
}
local diag_status = indicator {
icon = icons.ui.Diagnostic,
cond = is_diagnostics_enabled,
}
local fileformat = {
"fileformat",
cond = window.is_medium,
}
local filename = "fschauen.filename"
local filetype = {
dynamic_color("filetype"),
cond = window.is_medium,
}
local mode = "fschauen.mode"
local searchcount = "fschauen.searchcount"
local spell = indicator {
icon = icons.ui.SpellCheck,
cond = function() return vim.o.spell end,
}
local status = {
dynamic_color("fschauen.status"),
color = { fg = orange },
padding = 0,
}
local whitespace = {
dynamic_color("fschauen.whitespace"),
cond = window.is_wide,
}
local wrap = indicator {
icon = icons.ui.TextWrap,
cond = function() return vim.o.wrap end,
}
--
-- Sections
--
local sections = {
lualine_a = { mode },
lualine_b = { branch },
lualine_c = { filename, status },
lualine_x = { diagnostics, searchcount, whitespace, filetype },
lualine_y = { diag_status, spell, wrap, autoformat, fileformat, "progress" },
lualine_z = { "location" },
}
return {
options = {
icons_enabled = true,
component_separators = { left = "", right = "" },
section_separators = { left = "", right = "" },
},
sections = sections,
inactive_sections = sections,
extensions = {
"fugitive",
"quickfix",
"nvim-tree",
"lazy",
"man",
"trouble",
},
}
end,
}