Simplify the tabs
This commit is contained in:
@@ -1,55 +1,5 @@
|
|||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
local function truncate_label(label, max_width)
|
|
||||||
if vim.fn.strdisplaywidth(label) <= max_width then
|
|
||||||
return label
|
|
||||||
end
|
|
||||||
|
|
||||||
return vim.fn.strcharpart(label, 0, max_width - 1) .. "…"
|
|
||||||
end
|
|
||||||
|
|
||||||
local function terminal_label(bufnr)
|
|
||||||
local term_title = vim.b[bufnr].term_title
|
|
||||||
if type(term_title) == "string" and term_title ~= "" then
|
|
||||||
local cmd = vim.fn.fnamemodify(term_title:match("^%S+") or "", ":t")
|
|
||||||
if cmd ~= "" then
|
|
||||||
return cmd
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
|
||||||
local cmd = bufname:match("term://.*:(.+)$")
|
|
||||||
if cmd then
|
|
||||||
local first_word = vim.split(cmd, " ", { plain = true })[1] or ""
|
|
||||||
local basename = vim.fn.fnamemodify(first_word, ":t")
|
|
||||||
if basename ~= "" then
|
|
||||||
return basename
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return "terminal"
|
|
||||||
end
|
|
||||||
|
|
||||||
local function tab_label(tabnr)
|
|
||||||
local buflist = vim.fn.tabpagebuflist(tabnr)
|
|
||||||
local winnr = vim.fn.tabpagewinnr(tabnr)
|
|
||||||
local bufnr = buflist[winnr]
|
|
||||||
local label
|
|
||||||
|
|
||||||
if vim.bo[bufnr].buftype == "terminal" then
|
|
||||||
label = terminal_label(bufnr)
|
|
||||||
else
|
|
||||||
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
|
||||||
label = bufname == "" and "[No Name]" or vim.fn.fnamemodify(bufname, ":t")
|
|
||||||
end
|
|
||||||
|
|
||||||
if vim.bo[bufnr].modified then
|
|
||||||
label = label .. " +"
|
|
||||||
end
|
|
||||||
|
|
||||||
return truncate_label(label, 18)
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.render()
|
function M.render()
|
||||||
local current = vim.fn.tabpagenr()
|
local current = vim.fn.tabpagenr()
|
||||||
local last = vim.fn.tabpagenr("$")
|
local last = vim.fn.tabpagenr("$")
|
||||||
@@ -58,7 +8,7 @@ function M.render()
|
|||||||
for index = 1, last do
|
for index = 1, last do
|
||||||
parts[#parts + 1] = index == current and "%#TabLineSel#" or "%#TabLine#"
|
parts[#parts + 1] = index == current and "%#TabLineSel#" or "%#TabLine#"
|
||||||
parts[#parts + 1] = "%" .. index .. "T"
|
parts[#parts + 1] = "%" .. index .. "T"
|
||||||
parts[#parts + 1] = " " .. index .. " " .. tab_label(index) .. " "
|
parts[#parts + 1] = " " .. index .. " "
|
||||||
end
|
end
|
||||||
|
|
||||||
parts[#parts + 1] = "%#TabLineFill#%T"
|
parts[#parts + 1] = "%#TabLineFill#%T"
|
||||||
|
|||||||
Reference in New Issue
Block a user