return { { "folke/which-key.nvim", event = "VeryLazy", opts = { spec = { { "l", ":Lazy", desc = "Lazy" }, { "t", function() vim.cmd("botright new | setlocal nonumber norelativenumber | resize 10 | terminal") vim.cmd("startinsert") end, mode = "n", desc = "Open Terminal" }, --{ "wd", "execute 'bd' | execute 'close'", desc = "Delete window & buffer" }, -- Window & Buffer Management { "w", group = "Windows"}, { "wc", ":close", desc = "Close Window" }, { "ws", ":split", desc = "Horizontal Window Split" }, { "wv", ":vsplit", desc = "Vertial Window Split" }, { "wm", "_", desc = "Maximize Window" }, { "b", group = "Buffers"}, { "bd", function() local function is_neotree() return vim.bo.filetype == "neo-tree" end -- Skip if in neo-tree if is_neotree() then vim.notify("Cannot delete buffer from neo-tree", vim.log.levels.WARN) return end local buflisted = vim.fn.getbufinfo({ buflisted = 1 }) -- Prevent deleting last buffer if #buflisted <= 1 then vim.notify("Cannot delete last buffer", vim.log.levels.WARN) return end local buf_to_delete = vim.api.nvim_get_current_buf() vim.cmd('bprevious') vim.cmd('bdelete ' .. buf_to_delete) -- If we ended up in neo-tree, move back to a regular window if is_neotree() then vim.cmd('wincmd l') end end, desc = "Delete Buffer" }, { "bD", "execute 'close' | execute 'bd!'", desc = "Delete Window & Buffer" }, { "ca", vim.lsp.buf.code_action, desc = "Code Action" }, { "cr", vim.lsp.buf.rename, desc = "Rename Variable" }, { "G", group = "Git"}, { "f", group = "Files"}, { "c", group = "Code"}, { "g", group = "Goto"}, }, }, } }