116 lines
3.2 KiB
Nix
116 lines
3.2 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
...
|
|
}: {
|
|
options = {
|
|
lualine.enable = lib.mkEnableOption "Enable lualine module";
|
|
};
|
|
config = lib.mkIf config.lualine.enable {
|
|
plugins.lualine = {
|
|
enable = true;
|
|
settings = {
|
|
alwaysDivideMiddle = true;
|
|
globalstatus = true;
|
|
ignoreFocus = ["neo-tree"];
|
|
extensions = ["fzf"];
|
|
theme = "auto";
|
|
componentSeparators = {
|
|
left = "|";
|
|
right = "|";
|
|
};
|
|
sectionSeparators = {
|
|
left = "█"; #
|
|
right = "█"; #
|
|
};
|
|
sections = {
|
|
lualine_a = ["mode"];
|
|
lualine_b = [
|
|
"branch"
|
|
""
|
|
"diff"
|
|
"diagnostics"
|
|
];
|
|
lualine_c = ["filename"];
|
|
lualine_x = ["filetype"];
|
|
lualine_y = ["progress"];
|
|
lualine_z = [''" " .. os.date("%R")''];
|
|
};
|
|
};
|
|
};
|
|
extraConfigLua = ''
|
|
config = function()
|
|
local harpoon = require("harpoon.mark")
|
|
|
|
local function truncate_branch_name(branch)
|
|
if not branch or branch == "" then
|
|
return ""
|
|
end
|
|
|
|
-- Match the branch name to the specified format
|
|
local user, team, ticket_number = string.find(branch, "(%w+)%/(%w+)%-(%d+)%-")
|
|
|
|
-- If the branch name matches the format, display sko-{ticket_number}, otherwise display the full branch name
|
|
if ticket_number then
|
|
return user .. "/" .. team .. "-" .. ticket_number
|
|
else
|
|
return branch
|
|
end
|
|
end
|
|
|
|
local function harpoon_component()
|
|
local total_marks = harpoon.get_length()
|
|
|
|
if total_marks == 0 then
|
|
return ""
|
|
end
|
|
|
|
local current_mark = "—"
|
|
|
|
local mark_idx = harpoon.get_current_index()
|
|
if mark_idx ~= nil then
|
|
current_mark = tostring(mark_idx)
|
|
end
|
|
|
|
return string.format(" %s/%d", current_mark, total_marks)
|
|
end
|
|
|
|
local function get_lsp_client(_)
|
|
---@type any?{}
|
|
local client_names = {}
|
|
local msg = "No Active Lsp"
|
|
local clients = vim.lsp.get_clients({ bufnr = 0 })
|
|
if next(clients) == nil then
|
|
return msg
|
|
end
|
|
for _, client in ipairs(clients) do
|
|
table.insert(client_names, client.name)
|
|
end
|
|
return #client_names == 0 and msg or table.concat(client_names, " | ")
|
|
end
|
|
local function wordcount()
|
|
return tostring(vim.fn.wordcount().words) .. " words"
|
|
end
|
|
local function readingtime()
|
|
return tostring(math.ceil(vim.fn.wordcount().words / 200.0)) .. " min"
|
|
end
|
|
local function is_markdown()
|
|
return vim.bo.filetype == "markdown" or vim.bo.filetype == "asciidoc"
|
|
end
|
|
local function navic()
|
|
return require("nvim-navic").get_location()
|
|
end
|
|
local function navic_is_available()
|
|
return package.loaded["nvim-navic"] and require("nvim-navic").is_available()
|
|
end
|
|
local cmd_mode = function()
|
|
return require("noice").api.status.mode.get()
|
|
end
|
|
local show_mode = function()
|
|
return package.loaded["noice"] and require("noice").api.status.mode.has() or ""
|
|
end
|
|
end
|
|
'';
|
|
};
|
|
}
|