feat: add name+parent path option for component(filename) (#945)

Co-authored-by: Mika Raunio <mika@diago.global>
This commit is contained in:
Mika Raunio 2023-03-31 11:02:12 +03:00 committed by GitHub
parent e80465d721
commit 44a0fba867
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 1 deletions

View File

@ -626,6 +626,7 @@ sections = {
-- 1: Relative path -- 1: Relative path
-- 2: Absolute path -- 2: Absolute path
-- 3: Absolute path, with tilde as the home directory -- 3: Absolute path, with tilde as the home directory
-- 4: Filename and parent dir, with tilde as the home directory
shorting_target = 40, -- Shortens path to leave 40 spaces in the window shorting_target = 40, -- Shortens path to leave 40 spaces in the window
-- for other components. (terrible name, any suggestions?) -- for other components. (terrible name, any suggestions?)

View File

@ -50,12 +50,24 @@ local function shorten_path(path, sep, max_len)
return table.concat(segments, sep) return table.concat(segments, sep)
end end
local function filename_and_parent(path, sep)
local segments = vim.split(path, sep)
if #segments == 0 then
return path
elseif #segments == 1 then
return segments[#segments]
else
return table.concat({segments[#segments - 1], segments[#segments]}, sep)
end
end
M.init = function(self, options) M.init = function(self, options)
M.super.init(self, options) M.super.init(self, options)
self.options = vim.tbl_deep_extend('keep', self.options or {}, default_options) self.options = vim.tbl_deep_extend('keep', self.options or {}, default_options)
end end
M.update_status = function(self) M.update_status = function(self)
local path_separator = package.config:sub(1, 1)
local data local data
if self.options.path == 1 then if self.options.path == 1 then
-- relative path -- relative path
@ -66,6 +78,9 @@ M.update_status = function(self)
elseif self.options.path == 3 then elseif self.options.path == 3 then
-- absolute path, with tilde -- absolute path, with tilde
data = vim.fn.expand('%:p:~') data = vim.fn.expand('%:p:~')
elseif self.options.path == 4 then
-- filename and immediate parent
data = filename_and_parent(vim.fn.expand('%:p:~'), path_separator)
else else
-- just filename -- just filename
data = vim.fn.expand('%:t') data = vim.fn.expand('%:t')
@ -81,7 +96,6 @@ M.update_status = function(self)
local windwidth = self.options.globalstatus and vim.go.columns or vim.fn.winwidth(0) local windwidth = self.options.globalstatus and vim.go.columns or vim.fn.winwidth(0)
local estimated_space_available = windwidth - self.options.shorting_target local estimated_space_available = windwidth - self.options.shorting_target
local path_separator = package.config:sub(1, 1)
data = shorten_path(data, path_separator, estimated_space_available) data = shorten_path(data, path_separator, estimated_space_available)
end end