mirror of
https://github.com/kristoferssolo/lualine-harpoon.nvim.git
synced 2025-10-21 19:50:33 +00:00
38 lines
955 B
Lua
38 lines
955 B
Lua
---@class LualineHarpoonUtils
|
|
local M = {}
|
|
|
|
---Normalize `buf` relative to `root` using Neovim built-ins
|
|
---@param buf string Absolute path to buffer
|
|
---@param root string Root directory path
|
|
---@return string Normalized path relative to root
|
|
function M.normalize(buf, root)
|
|
if not buf or buf == "" then
|
|
return ""
|
|
end
|
|
|
|
if not root or root == "" then
|
|
return buf
|
|
end
|
|
|
|
-- Use vim.fs.normalize for consistent path separators (Neovim 0.8+)
|
|
if vim.fs and vim.fs.normalize then
|
|
buf = vim.fs.normalize(buf)
|
|
root = vim.fs.normalize(root)
|
|
end
|
|
|
|
-- Use vim.fn.fnamemodify to make path relative
|
|
local relative = vim.fn.fnamemodify(buf, ":p:.")
|
|
|
|
-- If the buffer is within the root directory, make it relative to root
|
|
if buf:find("^" .. vim.pesc(root), 1) then
|
|
relative = buf:sub(#root + 1)
|
|
-- Remove leading path separator
|
|
relative = relative:gsub("^[/\\]", "")
|
|
return relative ~= "" and relative or "."
|
|
end
|
|
|
|
return relative
|
|
end
|
|
|
|
return M
|