local wk = require("which-key") local builtin = require('telescope.builtin') local Terminal = require('toggleterm.terminal').Terminal local lazygit = Terminal:new({ cmd = "lazygit", dir = "git_dir", direction = "float", float_opts = { border = "double", }, -- function to run on opening the terminal on_open = function(term) vim.cmd("startinsert!") vim.api.nvim_buf_set_keymap(term.bufnr, "n", "q", "close", {noremap = true, silent = true}) end, }) function _lazygit_toggle() lazygit:toggle() end wk.add({ {"g", "lua _lazygit_toggle()", desc = "Toggle LazyGit"}, -- Essentials { "w", "w", desc = "Save File" }, { "q", "q", desc = "Quit" }, { "e", "NvimTreeToggle", desc = "Toggle Explorer (Tree)" }, -- Navigation / Buffers { "[", "bprevious", desc = "Prev Buffer" }, { "]", "bnext", desc = "Next Buffer" }, { "b", builtin.buffers, desc = "List Buffers (Telescope)" }, { "x", "bdelete", desc = "Close Buffer" }, -- File Group { "f", group = "File" }, { "fn", function() local name = vim.fn.input("New file/dir: ") if name == "" then return end if name:sub(-1) == "/" then vim.fn.mkdir(name, "p") else local dir = vim.fn.fnamemodify(name, ":h") if vim.fn.isdirectory(dir) == 0 then vim.fn.mkdir(dir, "p") end vim.cmd("edit " .. name) end end, desc = "New File/Dir" }, { "fd", function() local current_file = vim.api.nvim_buf_get_name(0) if current_file == "" then return end if vim.fn.confirm("Delete " .. current_file .. "?", "&Yes\n&No", 2) == 1 then os.remove(current_file) vim.api.nvim_buf_delete(0, { force = true }) end end, desc = "Delete Current File" }, -- Search Group { "s", group = "Search" }, { "sf", builtin.find_files, desc = "Files" }, { "sw", builtin.live_grep, desc = "Word (Global)" }, -- Symbol Searching { "ss", builtin.lsp_dynamic_workspace_symbols, desc = "Workspace Symbols" }, { "sl", builtin.lsp_document_symbols, desc = "Document Symbols (Current File)" }, -- LSP { "d", vim.lsp.buf.definition, desc = "Go to Definition" }, { "e", vim.lsp.buf.hover, desc = "Hover Documentation" }, })