diff --git a/init.lua b/init.lua index ddf06b4..12ecfd4 100644 --- a/init.lua +++ b/init.lua @@ -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),