winbar.nix (1711B)
1 { 2 programs.neovim.customPlugins.winbar = { 3 "plugin/winbar.lua" = # lua 4 '' 5 vim.api.nvim_create_autocmd( 6 {'BufEnter', 'BufAdd', 'BufDelete', 'BufLeave', 'BufModifiedSet', 'BufWrite'}, 7 { 8 group = vim.api.nvim_create_augroup("WinBarBuffers", { clear = true }), 9 pattern = "*", 10 callback = function() 11 local buffers = {} 12 local current = vim.api.nvim_win_get_buf(0) 13 14 for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do 15 if vim.bo[bufnr].buflisted then 16 local name = vim.fn.fnamemodify(vim.fn.bufname(bufnr), ":t") 17 if name == "" then name = "[No name]" end 18 19 local highlight = bufnr == current and "WinBar" or "WinBarNC" 20 local modified = vim.bo[bufnr].modified and "*" or "" 21 22 table.insert(buffers, string.format( 23 "%%#%s# %d:%s%s %%*", 24 highlight, bufnr, name, modified 25 )) 26 end 27 end 28 29 if #buffers > 1 and vim.bo[current].buflisted then 30 vim.opt_local.winbar = table.concat(buffers) 31 vim.keymap.set({'n','v'}, '<C-n>', ':bn<cr>', { buffer = current }) 32 vim.keymap.set({'n','v'}, '<C-p>', ':bp<cr>', { buffer = current }) 33 34 else 35 vim.opt_local.winbar = "" 36 pcall(function() 37 vim.keymap.del({'n','v'}, '<C-n>', { buffer = current }) 38 vim.keymap.del({'n','v'}, '<C-p>', { buffer = current }) 39 end) 40 end 41 end 42 } 43 ) 44 ''; 45 }; 46 }