aboutsummaryrefslogtreecommitdiff
path: root/lua/luatab/init.lua
diff options
context:
space:
mode:
authorTim Keller <tjkeller.xyz>2024-11-27 20:05:51 -0600
committerTim Keller <tjkeller.xyz>2024-11-27 20:05:51 -0600
commit35e36ce317d8ac8fa579118f5a16ca35bd47e353 (patch)
tree79b13adb813ea0ce539151c359a73f18105244e9 /lua/luatab/init.lua
parent1b488d80772e59c6fde2453929d4060118c39983 (diff)
downloadminitab.nvim-35e36ce317d8ac8fa579118f5a16ca35bd47e353.tar.xz
minitab.nvim-35e36ce317d8ac8fa579118f5a16ca35bd47e353.zip
change to cleantab
Diffstat (limited to 'lua/luatab/init.lua')
-rw-r--r--lua/luatab/init.lua130
1 files changed, 0 insertions, 130 deletions
diff --git a/lua/luatab/init.lua b/lua/luatab/init.lua
deleted file mode 100644
index d18d6e7..0000000
--- a/lua/luatab/init.lua
+++ /dev/null
@@ -1,130 +0,0 @@
-local M = {}
-
-M.title = function(bufnr)
- local file = vim.fn.bufname(bufnr)
- local buftype = vim.fn.getbufvar(bufnr, '&buftype')
- local filetype = vim.fn.getbufvar(bufnr, '&filetype')
-
- if buftype == 'help' then
- return 'help:' .. vim.fn.fnamemodify(file, ':t:r')
- elseif buftype == 'quickfix' then
- return 'quickfix'
- elseif filetype == 'TelescopePrompt' then
- return 'Telescope'
- elseif filetype == 'git' then
- return 'Git'
- elseif filetype == 'fugitive' then
- return 'Fugitive'
- elseif filetype == 'NvimTree' then
- return 'NvimTree'
- elseif filetype == 'oil' then
- return 'Oil'
- elseif file:sub(file:len()-2, file:len()) == 'FZF' then
- return 'FZF'
- elseif buftype == 'terminal' then
- local _, mtch = string.match(file, "term:(.*):(%a+)")
- return mtch ~= nil and mtch or vim.fn.fnamemodify(vim.env.SHELL, ':t')
- elseif file == '' then
- return '[No Name]'
- else
- return vim.fn.pathshorten(vim.fn.fnamemodify(file, ':p:~:t'))
- end
-end
-
-M.modified = function(bufnr)
- return vim.fn.getbufvar(bufnr, '&modified') == 1 and '[+] ' or ''
-end
-
-M.windowCount = function(index)
- local nwins = vim.fn.tabpagewinnr(index, '$')
- return nwins > 1 and '(' .. nwins .. ') ' or ''
-end
-
-M.devicon = function(bufnr, isSelected)
- local icon, devhl
- local file = vim.fn.fnamemodify(vim.fn.bufname(bufnr), ':t')
- local buftype = vim.fn.getbufvar(bufnr, '&buftype')
- local filetype = vim.fn.getbufvar(bufnr, '&filetype')
- local devicons = require'nvim-web-devicons'
- if filetype == 'TelescopePrompt' then
- icon, devhl = devicons.get_icon('telescope')
- elseif filetype == 'fugitive' then
- icon, devhl = devicons.get_icon('git')
- elseif filetype == 'vimwiki' then
- icon, devhl = devicons.get_icon('markdown')
- elseif buftype == 'terminal' then
- icon, devhl = devicons.get_icon('zsh')
- else
- icon, devhl = devicons.get_icon(file, vim.fn.expand('#'..bufnr..':e'))
- end
- if icon then
- local h = require'luatab.highlight'
- local fg = h.extract_highlight_colors(devhl, 'fg')
- local bg = h.extract_highlight_colors('TabLineSel', 'bg')
- local hl = h.create_component_highlight_group({bg = bg, fg = fg}, devhl)
- local selectedHlStart = (isSelected and hl) and '%#'..hl..'#' or ''
- local selectedHlEnd = isSelected and '%#TabLineSel#' or ''
- return selectedHlStart .. icon .. selectedHlEnd .. ' '
- end
- return ''
-end
-
-M.separator = function(index)
- return (index < vim.fn.tabpagenr('$') and '%#TabLine#|' or '')
-end
-
-M.cell = function(index)
- local isSelected = vim.fn.tabpagenr() == index
- local buflist = vim.fn.tabpagebuflist(index)
- local winnr = vim.fn.tabpagewinnr(index)
- local bufnr = buflist[winnr]
- local hl = (isSelected and '%#TabLineSel#' or '%#TabLine#')
-
- return hl .. '%' .. index .. 'T' .. ' ' ..
- M.windowCount(index) ..
- M.title(bufnr) .. ' ' ..
- M.modified(bufnr) ..
- M.devicon(bufnr, isSelected) .. '%T' ..
- M.separator(index)
-end
-
-M.tabline = function()
- local line = ''
- for i = 1, vim.fn.tabpagenr('$'), 1 do
- line = line .. M.cell(i)
- end
- line = line .. '%#TabLineFill#%='
- if vim.fn.tabpagenr('$') > 1 then
- line = line .. '%#TabLine#%999XX'
- end
- return line
-end
-
-local setup = function(opts)
- opts = opts or {}
- if opts.title then M.title = opts.title end
- if opts.modified then M.modified = opts.modified end
- if opts.windowCount then M.windowCount = opts.windowCount end
- if opts.devicon then M.devicon = opts.devicon end
- if opts.separator then M.separator = opts.separator end
- if opts.cell then M.cell = opts.cell end
- if opts.tabline then M.tabline = opts.tabline end
-
- vim.opt.tabline = '%!v:lua.require\'luatab\'.helpers.tabline()'
-end
-
-local warning = function()
- error [[
-Hi, I've updated luatab.nvim to allow some proper configuration. As a result, I need to make a breaking change to the config. Apologies for the inconvinence.
-If you had:
- vim.o.tabline = '%!v:lua.require\'luatab\'.tabline()'
-please replace it with
- require('luatab').setup({})
-]]
-end
-
-return {
- helpers = M,
- setup = setup,
- tabline = warning,
-}