kickstart.nvim/lua/utils/windows.lua

43 lines
2.0 KiB
Lua

-- 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', '<F1>', vim.cmd.tabp, { noremap = true, silent = true })
vim.keymap.set('t', '<F2>', vim.cmd.tabn, { noremap = true, silent = true })
vim.keymap.set('t', '<F3>', '<C-\\><C-n>:tabnew<CR>', { noremap = true, silent = true })
vim.keymap.set('t', '<F4>', safe_tabclose, { noremap = true, silent = true })
vim.keymap.set('t', '<F5>', '<C-\\><C-n><Esc>:tab new<CR>', { noremap = true, silent = true })
vim.keymap.set('n', '<F1>', vim.cmd.tabp, { noremap = true, silent = true })
vim.keymap.set('n', '<F2>', vim.cmd.tabn, { noremap = true, silent = true })
vim.keymap.set('n', '<F3>', ':tabnew<CR>', { noremap = true, silent = true })
vim.keymap.set('n', '<F4>', safe_tabclose, { noremap = true, silent = true })
vim.keymap.set('n', '<F5>', ':tab term<CR>', { noremap = true, silent = true })
vim.keymap.set('i', '<F1>', vim.cmd.tabp, { noremap = true, silent = true })
vim.keymap.set('i', '<F2>', vim.cmd.tabn, { noremap = true, silent = true })
vim.keymap.set('i', '<F3>', '<Esc>:tabnew<CR>', { noremap = true, silent = true })
vim.keymap.set('i', '<F4>', safe_tabclose, { noremap = true, silent = true })
vim.keymap.set('i', '<F5>', '<Esc>:tab term<CR>', { noremap = true, silent = true })
vim.keymap.set('n', '<leader>wp', vim.cmd.tabn, { desc = '[p]revious' })
vim.keymap.set('n', '<leader>wn', vim.cmd.tabp, { desc = '[n]ext' })
vim.keymap.set('n', '<leader>wo', vim.cmd.tabnew, { desc = '[o]pen' })
vim.keymap.set('n', '<leader>wc', safe_tabclose, { desc = '[c]lose' })