This commit is contained in:
Jaroslaw Konik 2023-08-02 13:51:27 +02:00
parent 962807aa70
commit 76d9c95927

View file

@ -186,7 +186,78 @@ local TablineFileName = {
end,
}
local TablineFileFlags = {
{
condition = function(self)
return vim.api.nvim_buf_get_option(self.bufnr, "modified")
end,
provider = "[+]",
hl = { fg = "green" },
},
{
condition = function(self)
return not vim.api.nvim_buf_get_option(self.bufnr, "modifiable")
or vim.api.nvim_buf_get_option(self.bufnr, "readonly")
end,
provider = function(self)
if vim.api.nvim_buf_get_option(self.bufnr, "buftype") == "terminal" then
return ""
else
return ""
end
end,
hl = { fg = "orange" },
},
}
local FileIcon = {
init = function(self)
local filename = self.filename
local extension = vim.fn.fnamemodify(filename, ":e")
self.icon, self.icon_color =
require("nvim-web-devicons").get_icon_color(filename, extension, { default = true })
end,
provider = function(self)
return self.icon and (self.icon .. " ")
end,
hl = function(self)
return { fg = self.icon_color }
end,
}
local TablineFileNameBlock = {
init = function(self)
self.filename = vim.api.nvim_buf_get_name(self.bufnr)
end,
hl = function(self)
if self.is_active then
return "TabLineSel"
else
return "TabLine"
end
end,
on_click = {
callback = function(_, minwid, _, _)
vim.api.nvim_win_set_buf(0, minwid)
end,
minwid = function(self)
return self.bufnr
end,
name = "termline_buffer_callback",
},
FileIcon, -- turns out the version defined in #crash-course-part-ii-filename-and-friends can be reutilized as is here!
TablineFileName,
TablineFileFlags, -- turns out the version defined in #crash-course-part-ii-filename-and-friends can be reutilized as is here!
}
local TablineBufferBlock = utils.surround({ "", "" }, function(self)
if self.is_active then
return utils.get_highlight("TabLineSel").bg
else
return utils.get_highlight("TabLine").bg
end
end, { TablineFileNameBlock })
local TerminalLineFileNameBlock = {
init = function(self)
self.filename = vim.api.nvim_buf_get_name(self.bufnr)
end,
@ -208,13 +279,14 @@ local TablineFileNameBlock = {
},
TablineFileName,
}
local TablineBufferBlock = utils.surround({ "", "" }, function(self)
local TerminalLineBufferBlock = utils.surround({ "", "" }, function(self)
if self.is_active then
return utils.get_highlight("TabLineSel").bg
else
return utils.get_highlight("TabLine").bg
end
end, { TablineFileNameBlock })
end, { TerminalLineFileNameBlock })
local function get_terminal_bufs()
return vim.tbl_filter(function(bufnr)
return vim.api.nvim_buf_get_option(bufnr, "buftype") == "terminal"
@ -235,7 +307,7 @@ local TerminalLine = {
buftype = { "terminal" },
})
end,
utils.make_buflist(TablineBufferBlock, nil, nil, get_terminal_bufs),
utils.make_buflist(TerminalLineBufferBlock, nil, nil, get_terminal_bufs),
}
local BufferLine = {
utils.make_buflist(TablineBufferBlock, nil, nil, get_non_terminal_bufs),