-- Tab management keys -- F1-Prev, F2-Next, F3-New, F4-Close -- local function safe_tabclose() local bufnr = vim.api.nvim_get_current_buf() local buf_windows = vim.call('win_findbuf', bufnr) local modified = vim.bo[bufnr].modified if vim.fn.tabpagenr '$' == 1 then -- last tab, no-op return elseif modified and #buf_windows == 1 then vim.ui.input({ prompt = 'Buffer modified, are you sure? ', }, function(input) if input == 'y' then vim.cmd 'tabclose' end end) else vim.cmd 'tabclose' end end vim.keymap.set('t', '', vim.cmd.tabp, { noremap = true, silent = true }) vim.keymap.set('t', '', vim.cmd.tabn, { noremap = true, silent = true }) vim.keymap.set('t', '', ':tabnew', { noremap = true, silent = true }) vim.keymap.set('t', '', safe_tabclose, { noremap = true, silent = true }) vim.keymap.set('t', '', ':tab new', { noremap = true, silent = true }) vim.keymap.set('n', '', vim.cmd.tabp, { noremap = true, silent = true }) vim.keymap.set('n', '', vim.cmd.tabn, { noremap = true, silent = true }) vim.keymap.set('n', '', ':tabnew', { noremap = true, silent = true }) vim.keymap.set('n', '', safe_tabclose, { noremap = true, silent = true }) vim.keymap.set('n', '', ':tab term', { noremap = true, silent = true }) vim.keymap.set('i', '', vim.cmd.tabp, { noremap = true, silent = true }) vim.keymap.set('i', '', vim.cmd.tabn, { noremap = true, silent = true }) vim.keymap.set('i', '', ':tabnew', { noremap = true, silent = true }) vim.keymap.set('i', '', safe_tabclose, { noremap = true, silent = true }) vim.keymap.set('i', '', ':tab term', { noremap = true, silent = true }) vim.keymap.set('n', 'wp', vim.cmd.tabn, { desc = '[p]revious' }) vim.keymap.set('n', 'wn', vim.cmd.tabp, { desc = '[n]ext' }) vim.keymap.set('n', 'wo', vim.cmd.tabnew, { desc = '[o]pen' }) vim.keymap.set('n', 'wc', safe_tabclose, { desc = '[c]lose' })