mirror of
https://github.com/LazyVim/LazyVim.git
synced 2026-07-25 14:01:06 +00:00
feat(lualine): add more hl options to pretty_path
Adds two additional options to pretty_path: filename_hl and dirpath_hl. This allows users to customize the highlight group of both the directory component of the path name and the filenname independently. modified_hl is still used when the buffer has been modified. Thanks to dpetka2001 (Iordanis Petkakis) for the changes to the format function.
This commit is contained in:
parent
aa9fb1fd23
commit
9d3101784c
1 changed files with 31 additions and 3 deletions
|
|
@ -56,17 +56,36 @@ function M.format(component, text, hl_group)
|
|||
local lualine_hl_group = component.hl_cache[hl_group]
|
||||
if not lualine_hl_group then
|
||||
local utils = require("lualine.utils.utils")
|
||||
lualine_hl_group = component:create_hl({ fg = utils.extract_highlight_colors(hl_group, "fg") }, "LV_" .. hl_group)
|
||||
local mygui = function()
|
||||
local mybold = utils.extract_highlight_colors(hl_group, "bold") and "bold"
|
||||
local myitalic = utils.extract_highlight_colors(hl_group, "italic") and "italic"
|
||||
if mybold and myitalic then
|
||||
return mybold .. "," .. myitalic
|
||||
elseif mybold then
|
||||
return mybold
|
||||
elseif myitalic then
|
||||
return myitalic
|
||||
else
|
||||
return ""
|
||||
end
|
||||
end
|
||||
|
||||
lualine_hl_group = component:create_hl({
|
||||
fg = utils.extract_highlight_colors(hl_group, "fg"),
|
||||
gui = mygui(),
|
||||
}, "LV_" .. hl_group)
|
||||
component.hl_cache[hl_group] = lualine_hl_group
|
||||
end
|
||||
return component:format_hl(lualine_hl_group) .. text .. component:get_default_hl()
|
||||
end
|
||||
|
||||
---@param opts? {relative: "cwd"|"root", modified_hl: string?}
|
||||
---@param opts? {relative: "cwd"|"root", modified_hl: string?, dirpath_hl: string?, filename_hl: string?}
|
||||
function M.pretty_path(opts)
|
||||
opts = vim.tbl_extend("force", {
|
||||
relative = "cwd",
|
||||
modified_hl = "Constant",
|
||||
dirpath_hl = "",
|
||||
filename_hl = "",
|
||||
}, opts or {})
|
||||
|
||||
return function(self)
|
||||
|
|
@ -75,6 +94,7 @@ function M.pretty_path(opts)
|
|||
if path == "" then
|
||||
return ""
|
||||
end
|
||||
|
||||
local root = Util.root.get({ normalize = true })
|
||||
local cwd = Util.root.cwd()
|
||||
|
||||
|
|
@ -86,15 +106,23 @@ function M.pretty_path(opts)
|
|||
|
||||
local sep = package.config:sub(1, 1)
|
||||
local parts = vim.split(path, "[\\/]")
|
||||
|
||||
if #parts > 3 then
|
||||
parts = { parts[1], "…", parts[#parts - 1], parts[#parts] }
|
||||
end
|
||||
|
||||
if opts.modified_hl and vim.bo.modified then
|
||||
parts[#parts] = M.format(self, parts[#parts], opts.modified_hl)
|
||||
else
|
||||
parts[#parts] = M.format(self, parts[#parts], opts.filename_hl)
|
||||
end
|
||||
|
||||
return table.concat(parts, sep)
|
||||
local dirpath = ""
|
||||
if #parts > 1 then
|
||||
dirpath = table.concat({ unpack(parts, 1, #parts - 1) }, sep)
|
||||
dirpath = M.format(self, dirpath .. sep, opts.dirpath_hl)
|
||||
end
|
||||
return dirpath .. parts[#parts]
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue