[nvim] feat: replace path in statusline by "/.../" when useful

This commit is contained in:
David JULIEN 2023-02-22 19:34:24 +01:00
parent 34dc364d9f
commit 85b4b08824
1 changed files with 16 additions and 3 deletions

View File

@ -107,7 +107,13 @@ local function shorten_path(path, max_len)
end
local segments = vim.split(path, sep)
for idx = 1, #segments - 1 do
local start = 1
if segments[1] == "~" then
start = start + 1
end
for idx = start, #segments - 1 do
if len <= max_len then
break
end
@ -122,6 +128,13 @@ local function shorten_path(path, max_len)
len = len - (#segment - #shortened)
end
if (len > max_len and #segments > 3) then
while (len > max_len and #segments > 3) do
table.remove(segments, 2)
end
table.insert(segments,2, "...")
end
return table.concat(segments, sep)
end
@ -174,7 +187,7 @@ local function statusline_focused()
local left = table.concat {
gen_section(accent_color, { get_mode_display_name(mg) }),
gen_section("%#Middle#", { shorten_path(file, winwidth / 3) }),
gen_section("%#Middle#", { shorten_path(file, winwidth / 2) }),
gen_section("%#Bottom#", { "%m", "%r" }),
gen_section(
"%#Alert#",
@ -223,7 +236,7 @@ local function statusline_not_focused()
local winwidth = vim.fn.winwidth(0)
return table.concat {
gen_section("%#StatuslineNF#", {
shorten_path(file, winwidth / 3),
shorten_path(file, winwidth / 2),
"%m"
}),
"%=",