---@module "data.keys" --- This module contains the keymaps for the plugins and commands. --- Keymaps use the add_keymap function from data.func for flexible --- keybinding functionality. -- ╭─────────────────────────────────────────────────────────╮ -- │ KEYS DATA │ -- ╰─────────────────────────────────────────────────────────╯ local M = {} -- Load utils local rootiest = require("config.rootiest") M.alternate = { { -- Toggle Alternate "a", "Alternate", desc = "Toggle Alternate", }, } M.capsword = { { "", function() require("caps-word").toggle() end, desc = "Toggle CapsWord", mode = { "i", "n" }, }, } M.chatgpt = { func = function() -- Add ChatGPT menu require("data.func").add_keymap(M.group.chatgpt) -- Add ChatGPT keys return M.chatgpt.keys end, keys = { { "cxc", "ChatGPT", desc = "ChatGPT", }, { "cxe", "ChatGPTEditWithInstruction", desc = "Edit with instruction", mode = { "n", "v" }, }, { "cxg", "ChatGPTRun grammar_correction", desc = "Grammar Correction", mode = { "n", "v" }, }, { "cxt", "ChatGPTRun translate", desc = "Translate", mode = { "n", "v" }, }, { "cxk", "ChatGPTRun keywords", desc = "Keywords", mode = { "n", "v" }, }, { "cxd", "ChatGPTRun docstring", desc = "Docstring", mode = { "n", "v" }, }, { "cxa", "ChatGPTRun add_tests", desc = "Add Tests", mode = { "n", "v" }, }, { "cxo", "ChatGPTRun optimize_code", desc = "Optimize Code", mode = { "n", "v" }, }, { "cxs", "ChatGPTRun summarize", desc = "Summarize", mode = { "n", "v" }, }, { "cxf", "ChatGPTRun fix_bugs", desc = "Fix Bugs", mode = { "n", "v" }, }, { "cxr", "ChatGPTRun explain_code", desc = "Explain Code", mode = { "n", "v" }, }, { "cxr", "ChatGPTRun roxygen_edit", desc = "Roxygen Edit", mode = { "n", "v" }, }, { "cxl", "ChatGPTRun code_readability_analysis", desc = "Code Readability Analysis", mode = { "n", "v" }, }, }, } M.codesnap = { { -- Save selected code snapshot into clipboard "cy", "CodeSnap", desc = "Save selected code snapshot into clipboard", mode = "x", }, { -- Save selected code snapshot in ~/Pictures "cs", "CodeSnapSave", desc = "Save selected code snapshot in ~/Pictures", mode = "x", }, { -- Highlight and snapshot selected code into clipboard "ch", "CodeSnapHighlight", desc = "Highlight and snapshot selected code into clipboard", mode = "x", }, { -- Save ASCII code snapshot into clipboard "ci", "CodeSnapASCII", desc = "Save ASCII code snapshot into clipboard", mode = "x", }, } M.flash = { { -- Flash jump to next "", function() require("flash").jump() end, desc = "Flash jump", mode = { "n", "o", "v" }, }, } M.minimap = { func = function() -- Add NeoMiniMap menu require("data.func").add_keymap(M.group.minimap) -- Add NeoMiniMap keys return M.minimap.keys end, keys = { { -- Toggle minimap "nt", "Neominimap toggle", desc = "Toggle minimap", }, { -- Enable minimap "no", "Neominimap on", desc = "Enable minimap", }, { -- Disable minimap "nc", "Neominimap off", desc = "Disable minimap", }, { -- Refresh minimap "nf", "Neominimap focus", desc = "Focus on minimap", }, { -- Unfocus minimap "nu", "Neominimap unfocus", desc = "Unfocus minimap", }, { -- Toggle focus "ns", "Neominimap toggleFocus", desc = "Toggle focus on minimap", }, { -- Toggle minimap for current window "nwt", "Neominimap winToggle", desc = "Toggle minimap for current window", }, { -- Refresh minimap for current window "nwr", "Neominimap winRefresh", desc = "Refresh minimap for current window", }, { -- Enable minimap for current window "nwo", "Neominimap winOn", desc = "Enable minimap for current window", }, { -- Disable minimap for current window "nwc", "Neominimap winOff", desc = "Disable minimap for current window", }, { -- Toggle minimap for current buffer "nbt", "Neominimap bufToggle", desc = "Toggle minimap for current buffer", }, { -- Refresh minimap for current buffer "nbr", "Neominimap bufRefresh", desc = "Refresh minimap for current buffer", }, { -- Enable minimap for current buffer "nbo", "Neominimap bufOn", desc = "Enable minimap for current buffer", }, { -- Disable minimap for current buffer "nbc", "Neominimap bufOff", desc = "Disable minimap for current buffer", }, }, } M.neocodeium = { { -- Accept suggestion "", function() require("neocodeium").accept() end, desc = "Accept suggestion", mode = "i", }, { -- Accept word "", function() require("neocodeium").accept_word() end, desc = "Accept word", mode = "i", }, { -- Accept line "", function() require("neocodeium").accept_line() end, desc = "Accept line", mode = "i", }, { -- Cycle or complete (previous) "", function() require("neocodeium").cycle_or_complete(-1) end, desc = "Cycle or complete (previous)", mode = "i", }, { -- Cycle or complete (next) "", function() require("neocodeium").cycle_or_complete() end, desc = "Cycle or complete (next)", mode = "i", }, { -- NeoCodeium Chat "ch", function() require("neocodeium").chat() end, desc = "NeoCodeium Chat", }, } M.foldnav = { { -- Goto Start "", function() require("foldnav").goto_start() end, }, { -- Goto Next "", function() require("foldnav").goto_next() end, }, { -- Goto Prev "", function() require("foldnav").goto_prev_start() end, }, { -- Goto End "", function() require("foldnav").goto_end() end, }, } M.gitlinker = { { -- Yank git link "gy", "GitLink", mode = { "n", "v" }, desc = "Yank git link", }, { -- Open git link "gY", "GitLink!", mode = { "n", "v" }, desc = "Open git link", }, } M.gitgraph = { { -- gitgraph_toggle "gm", function() require("utils.git").gitgraph_toggle() end, desc = "GitGraph - Toggle", }, } M.gist = { func = function() -- Add gists menu require("data.func").add_keymap(M.group.gist) -- Add gists keys return M.gist.keys end, keys = { { -- Create Gist "gnc", "GistCreate", desc = "Create Gist", mode = { "n", "x" }, }, { -- Find Gists "gnf", "GistList", desc = "Find Gists", }, }, } M.undotree = function() require("data.func").add_keymap( "uu", "UndotreeToggle", "Toggle UndoTree" ) end M.gp = { func = function() -- Use which-key directly if pcall(require, "which-key") then require("which-key").add(M.gp.keys) end end, keys = { -- VISUAL mode mappings -- s, x, v modes are handled the same way by which_key { mode = { "v" }, nowait = true, remap = false, { "", ":'<,'>GpChatNew tabnew", desc = "ChatNew tabnew", }, { "", ":'<,'>GpChatNew vsplit", desc = "ChatNew vsplit", }, { "", ":'<,'>GpChatNew split", desc = "ChatNew split", }, { "a", ":'<,'>GpAppend", desc = "Visual Append (after)" }, { "b", ":'<,'>GpPrepend", desc = "Visual Prepend (before)", }, { "c", ":'<,'>GpChatNew", desc = "Visual Chat New" }, { "g", group = "generate into new .." }, { "ge", ":'<,'>GpEnew", desc = "Visual GpEnew" }, { "gn", ":'<,'>GpNew", desc = "Visual GpNew" }, { "gp", ":'<,'>GpPopup", desc = "Visual Popup" }, { "gt", ":'<,'>GpTabnew", desc = "Visual GpTabnew" }, { "gv", ":'<,'>GpVnew", desc = "Visual GpVnew" }, { "i", ":'<,'>GpImplement", desc = "Implement selection" }, { "n", "GpNextAgent", desc = "Next Agent" }, { "p", ":'<,'>GpChatPaste", desc = "Visual Chat Paste" }, { "r", ":'<,'>GpRewrite", desc = "Visual Rewrite" }, { "s", "GpStop", desc = "GpStop" }, { "t", ":'<,'>GpChatToggle", desc = "Visual Toggle Chat" }, { "w", group = "Whisper" }, { "wa", ":'<,'>GpWhisperAppend", desc = "Whisper Append" }, { "wb", ":'<,'>GpWhisperPrepend", desc = "Whisper Prepend", }, { "we", ":'<,'>GpWhisperEnew", desc = "Whisper Enew" }, { "wn", ":'<,'>GpWhisperNew", desc = "Whisper New" }, { "wp", ":'<,'>GpWhisperPopup", desc = "Whisper Popup" }, { "wr", ":'<,'>GpWhisperRewrite", desc = "Whisper Rewrite", }, { "wt", ":'<,'>GpWhisperTabnew", desc = "Whisper Tabnew" }, { "wv", ":'<,'>GpWhisperVnew", desc = "Whisper Vnew" }, { "ww", ":'<,'>GpWhisper", desc = "Whisper" }, { "x", ":'<,'>GpContext", desc = "Visual GpContext" }, }, -- NORMAL mode mappings { mode = { "n" }, nowait = true, remap = false, { "", "GpChatNew tabnew", desc = "New Chat tabnew" }, { "", "GpChatNew vsplit", desc = "New Chat vsplit" }, { "", "GpChatNew split", desc = "New Chat split" }, { "a", "GpAppend", desc = "Append (after)" }, { "b", "GpPrepend", desc = "Prepend (before)" }, { "c", "GpChatNew", desc = "New Chat" }, { "f", "GpChatFinder", desc = "Chat Finder" }, { "g", group = "generate into new .." }, { "ge", "GpEnew", desc = "GpEnew" }, { "gn", "GpNew", desc = "GpNew" }, { "gp", "GpPopup", desc = "Popup" }, { "gt", "GpTabnew", desc = "GpTabnew" }, { "gv", "GpVnew", desc = "GpVnew" }, { "n", "GpNextAgent", desc = "Next Agent" }, { "r", "GpRewrite", desc = "Inline Rewrite" }, { "s", "GpStop", desc = "GpStop" }, { "t", "GpChatToggle", desc = "Toggle Chat" }, { "w", group = "Whisper" }, { "wa", "GpWhisperAppend", desc = "Whisper Append (after)", }, { "wb", "GpWhisperPrepend", desc = "Whisper Prepend (before)", }, { "we", "GpWhisperEnew", desc = "Whisper Enew" }, { "wn", "GpWhisperNew", desc = "Whisper New" }, { "wp", "GpWhisperPopup", desc = "Whisper Popup" }, { "wr", "GpWhisperRewrite", desc = "Whisper Inline Rewrite", }, { "wt", "GpWhisperTabnew", desc = "Whisper Tabnew" }, { "wv", "GpWhisperVnew", desc = "Whisper Vnew" }, { "ww", "GpWhisper", desc = "Whisper" }, { "x", "GpContext", desc = "Toggle GpContext" }, }, -- INSERT mode mappings { mode = { "i" }, nowait = true, remap = false, { "", "GpChatNew tabnew", desc = "New Chat tabnew" }, { "", "GpChatNew vsplit", desc = "New Chat vsplit" }, { "", "GpChatNew split", desc = "New Chat split" }, { "a", "GpAppend", desc = "Append (after)" }, { "b", "GpPrepend", desc = "Prepend (before)" }, { "c", "GpChatNew", desc = "New Chat" }, { "f", "GpChatFinder", desc = "Chat Finder" }, { "g", group = "generate into new .." }, { "ge", "GpEnew", desc = "GpEnew" }, { "gn", "GpNew", desc = "GpNew" }, { "gp", "GpPopup", desc = "Popup" }, { "gt", "GpTabnew", desc = "GpTabnew" }, { "gv", "GpVnew", desc = "GpVnew" }, { "n", "GpNextAgent", desc = "Next Agent" }, { "r", "GpRewrite", desc = "Inline Rewrite" }, { "s", "GpStop", desc = "GpStop" }, { "t", "GpChatToggle", desc = "Toggle Chat" }, { "w", group = "Whisper" }, { "wa", "GpWhisperAppend", desc = "Whisper Append (after)", }, { "wb", "GpWhisperPrepend", desc = "Whisper Prepend (before)", }, { "we", "GpWhisperEnew", desc = "Whisper Enew" }, { "wn", "GpWhisperNew", desc = "Whisper New" }, { "wp", "GpWhisperPopup", desc = "Whisper Popup" }, { "wr", "GpWhisperRewrite", desc = "Whisper Inline Rewrite", }, { "wt", "GpWhisperTabnew", desc = "Whisper Tabnew" }, { "wv", "GpWhisperVnew", desc = "Whisper Vnew" }, { "ww", "GpWhisper", desc = "Whisper" }, { "x", "GpContext", desc = "Toggle GpContext" }, }, }, } M.group = { chatgpt = { -- ChatGPT lhs = "cx", group = "ChatGPT", icon = { icon = "", color = "blue" }, }, gist = { -- Gists menu lhs = "gn", group = "Gists", icon = { icon = "", color = "orange" }, }, minimap = { -- MiniMap menu lhs = "n", group = "MiniMap", icon = { icon = "", color = "green" }, }, nvimup = { { -- Neovim Updater menu lhs = "qu", group = "Neovim Updater", icon = { icon = "", color = "red" }, }, { -- Neovim Updater Commits menu lhs = "quc", group = "New Commits", icon = { icon = "", color = "green" }, }, { -- MultiCursor lhs = "m", group = "MultiCursor", icon = { icon = "󰬸", color = "green" }, }, }, } M.groups = { { -- Lazy menu lhs = "l", group = "Lazy", icon = { icon = "󰒲", color = "red" }, }, } M.multicursor = { { "", function() require("multicursor-nvim").addCursor("k") end, mode = { "n", "v" }, desc = "Add Cursor Above", }, { "", function() require("multicursor-nvim").addCursor("j") end, mode = { "n", "v" }, desc = "Add Cursor Below", }, { "", function() require("multicursor-nvim").addCursor("*") end, desc = "Add Cursor and Skip Word", mode = { "n", "v" }, }, { "", function() require("multicursor-nvim").skipCursor("*") end, desc = "Skip Word", mode = { "n", "v" }, }, { "", function() require("multicursor-nvim").nextCursor() end, desc = "Next Cursor", mode = { "n", "v" }, }, { "", function() require("multicursor-nvim").prevCursor() end, desc = "Previous Cursor", mode = { "n", "v" }, }, { "mx", function() require("multicursor-nvim").deleteCursor() end, desc = "Delete Cursor", mode = { "n", "v" }, }, { "", function() require("multicursor-nvim").handleMouse() end, desc = "Add/Remove Cursor", mode = "n", }, { "", function() if require("multicursor-nvim").cursorsEnabled() then require("multicursor-nvim").disableCursors() -- Stop other cursors from moving, allowing main cursor repositioning. else require("multicursor-nvim").addCursor() -- Add a cursor if none are enabled. end end, desc = "Add Cursor", mode = { "n", "v" }, }, { "", function() if not require("multicursor-nvim").cursorsEnabled() then require("multicursor-nvim").enableCursors() -- Enable cursors. elseif require("multicursor-nvim").hasCursors() then require("multicursor-nvim").clearCursors() -- Clear all cursors. else -- Default handler can be defined here if needed. end end, desc = "Escape Handler", mode = "n", }, { "ma", function() require("multicursor-nvim").alignCursors() end, desc = "Align Cursors", mode = "n", }, { "mS", function() require("multicursor-nvim").splitCursors() end, desc = "Split Cursors", mode = "v", }, { "mI", function() require("multicursor-nvim").insertVisual() end, desc = "Insert Visual", mode = "v", }, { "mA", function() require("multicursor-nvim").appendVisual() end, desc = "Append Visual", mode = "v", }, { "mM", function() require("multicursor-nvim").matchCursors() end, desc = "Match Cursors", mode = "v", }, { "mt", function() require("multicursor-nvim").transposeCursors(1) end, desc = "Transpose Cursors  ", mode = "v", }, { "mT", function() require("multicursor-nvim").transposeCursors(-1) end, desc = "Transpose Cursors  ", mode = "v", }, } M.nvimup = { { -- Update Neovim from source "quU", ":UpdateNeovim", desc = "Update Neovim", }, { -- Update Neovim from source in debug mode "quD", function() require("nvim_updater").update_neovim({ build_type = "Debug" }) end, desc = "Debug Build Neovim", }, { -- Update Neovim from source in release mode "quR", function() require("nvim_updater").update_neovim({ build_type = "Release" }) end, desc = "Release Build Neovim", }, { -- Remove Neovim Source directory "quX", function() require("nvim_updater").remove_source_dir() end, desc = "Remove Neovim Source", }, { -- Show new nvim source commits in Telescope "quct", function() require("nvim_updater").show_new_commits_in_telescope() end, desc = "Show New Commits in Telescope", }, { -- Show new nvim source commits in DiffView "qucd", function() require("nvim_updater").show_new_commits_in_diffview() end, desc = "Show New Commits in DiffView", }, { -- Show new nvim source commits in terminal "qucc", function() require("nvim_updater").show_new_commits() end, desc = "Show New Commits in terminal", }, } M.gx = { { -- Open URL/Link "gx", "Browse", mode = { "n", "x" }, desc = "Open URL/Link", }, } M.indentor = { { -- Indentor "", function() require("utils.indentor").insert_previous_line_indentation() end, "Insert Previous Line Indentation", { "i", "n" }, }, } M.lazygit = { { -- LazyGit "lg", "LazyGit", desc = "LazyGit", }, } ---@function Helper function to toggle mini.files explorer ---@param ... any Optional arguments to pass to mini.files.open local minifiles_toggle = function(...) if not require("mini.files").close() then require("mini.files").open(...) end end --- MiniFiles keymaps M.minifiles = { { "fm", function() minifiles_toggle(vim.api.nvim_buf_get_name(0), true) end, desc = "Open mini.files", }, { "fM", function() minifiles_toggle(vim.uv.cwd(), true) end, desc = "Open mini.files (CWD)", }, { -- Mini.files ".", function() minifiles_toggle(vim.api.nvim_buf_get_name(0), true) end, desc = "Open mini.files", }, { -- Mini.files "sf", function() minifiles_toggle(vim.api.nvim_buf_get_name(0), true) end, desc = "Open mini.files", }, } --- Misc keymaps M.misc = { { -- Yank line (without whitespace) lhs = "yo", rhs = function() rootiest.yank_line() end, desc = "Yank Line-text", }, { -- Hardmode lhs = "uH", rhs = function() rootiest.toggle_hardmode() end, desc = "Toggle Hardmode", }, { -- Reload config lhs = "qr", rhs = function() require("data.func").reload_config() end, desc = "Reload Config", }, { -- Yank buffer lhs = "Y", rhs = "%y", desc = "Yank buffer contents", }, { -- Select all lhs = "", rhs = "norm ggVG", desc = "Select all", }, { -- Neotree lhs = "|", rhs = "Neotree reveal toggle", desc = "Neotree toggle", }, { -- Neotree lhs = "\\", rhs = "Neotree reveal toggle", desc = "Neotree toggle", }, { -- Telescope Find Files lhs = "", rhs = function() LazyVim.pick("find_files")() end, desc = "Find Files", }, { -- Exit Neovim lhs = "Q", rhs = "lua require('data').func.exit()", desc = "Exit Neovim", }, { -- LazyVim lhs = "lv", rhs = "Lazy", desc = "LazyVim", }, { -- LazyExtras lhs = "lx", rhs = "LazyExtras", desc = "LazyExtras", }, { -- De-map Ctrl+Shift+LeftClick to avoid conflicts with WezTerm lhs = "", rhs = "", desc = "Prevent conflict with WezTerm hyperlinks", mode = "n", hidden = true, }, { -- Visual mode: Move selected block of text up lhs = "K", rhs = function() require("data.func").move_visual(true) end, desc = "Move block of text up", mode = "v", }, { -- Visual mode: Move selected block of text down lhs = "J", rhs = function() require("data.func").move_visual(false) end, desc = "Move block of text down", mode = "v", }, { -- Test Prompt: Enter your name lhs = "qP", rhs = function() require("data.func").InputPrompt("Enter your name: ", function(input) if input then -- trim whitespace from end of input input = input:gsub("%s+$", "") print("👋😎 Hello " .. input .. "!") else print("Input was canceled") end end) end, desc = "Test Prompt", }, { -- Paste over text with overwrite lhs = "cp", rhs = function() require("data.func").paste_overwrite() end, desc = "Paste overwrite", mode = "n", }, { -- Dump buffer contents to a table in register lhs = "bY", rhs = function() require("data.func").dump_buffer_to_table("+") end, desc = "Yank buffer as table", mode = "n", }, { -- Yank buffer lhs = "by", rhs = "%y", desc = "Yank buffer", mode = "n", }, } M.nekifoch = { { -- List Fonts "u,l", "Nekifoch list", desc = "Fonts list", }, { -- Check Font "u,c", "Nekifoch check", desc = "Check current font settings", }, { -- Set Font Family "u,f", function() require("nekifoch.nui_set_font")() end, desc = "Set font family", }, { -- Set Font Size "u,s", function() require("nekifoch.nui_set_size")() end, desc = "Set font size", }, } M.precog = { { -- Toggle Precognition "zk", function() require("config.rootiest").toggle_precognition() end, desc = "Toggle Precognition", }, } M.qalc = { -- { -- Open Qalc -- "qc", -- "Qalc", -- desc = "Qalc", -- }, { -- Set a key mapping to run :Qalc and enter insert mode "qc", function() -- Run the Qalc command vim.cmd("Qalc") -- Enter insert mode directly vim.cmd("startinsert") end, desc = "Qalc", }, } M.ripsub = { { -- Rip Substitute "fs", function() require("rip-substitute").sub() end, mode = { "n", "x" }, desc = "Rip Substitute", }, } M.splitjoin = { toggle = "gJ", } M.splits = { resize = { { -- Resize split leftwards "", function() require("smart-splits").resize_left() end, desc = "Resize split left", }, { -- Resize split downwards "", function() require("smart-splits").resize_down() end, desc = "Resize split down", }, { -- Resize split upwards "", function() require("smart-splits").resize_up() end, desc = "Resize split up", }, { -- Resize split rightwards "", function() require("smart-splits").resize_right() end, desc = "Resize split right", }, { -- Start interactive split resizing "", function() require("smart-splits").start_resize_mode() end, desc = "Resize split interactively", }, }, move = { { -- Move cursor to split left "", function() require("smart-splits").move_cursor_left() end, desc = "Move to split left", }, { -- Move cursor to split below "", function() require("smart-splits").move_cursor_down() end, desc = "Move to split below", }, { -- Move cursor to split above "", function() require("smart-splits").move_cursor_up() end, desc = "Move to split above", }, { -- Move cursor to split right "", function() require("smart-splits").move_cursor_right() end, desc = "Move to split right", }, { -- Move cursor to previous split "", function() require("smart-splits").move_cursor_previous() end, desc = "Move to previous split", }, }, swap = { { -- Swap buffer with the one to the left "", function() require("smart-splits").swap_buf_left() end, desc = "Swap buffer left", }, { -- Swap buffer with the one below "", function() require("smart-splits").swap_buf_down() end, desc = "Swap buffer down", }, { -- Swap buffer with the one above "", function() require("smart-splits").swap_buf_up() end, desc = "Swap buffer up", }, { -- Swap buffer with the one to the right "", function() require("smart-splits").swap_buf_right() end, desc = "Swap buffer right", }, }, } M.substitute = { { -- Substitute operator in normal mode "x", function() require("substitute").operator() end, desc = "Substitute operator", }, { -- Substitute line in normal mode "xx", function() require("substitute").line() end, desc = "Substitute line", }, { -- Substitute end of line in normal mode "X", function() require("substitute").eol() end, desc = "Substitute end of line", }, { -- Substitute visual selection in visual mode "x", function() require("substitute").visual() end, desc = "Substitute visual selection", mode = "x", }, { -- Substitute visual selection in visual mode "m", function() require("substitute").visual() end, desc = "Substitute", mode = "x", }, } M.overrides = { { -- De-map 's' to avoid conflicts with mini.surround lhs = "s", rhs = "", -- This disables the keymap desc = "Surround", mode = { "n", "x" }, }, } M.telescope = { cmdline = { { ":", function() require("telescope").extensions.cmdline.cmdline() end, desc = "Cmdline", }, }, lazy = { { "fz", function() require("telescope").extensions.lazy.lazy() end, desc = "Lazy Picker", }, }, symbols = { { -- Telescope Symbols "f.", function() require("telescope.builtin").symbols({ sources = { "emoji", "kaomoji", "gitmoji", "nerd", "math" }, }) end, desc = "Pick Icons", }, { -- Pick Icon in insert mode "", function() require("telescope.builtin").symbols({ sources = { "emoji", "kaomoji", "gitmoji", "nerd", "math" }, }) end, desc = "Pick Icon", mode = "i", }, }, toggleterm = { { -- Pick ToggleTerms "ft", function() require("toggleterm-manager").open({}) end, desc = "Pick Terminals", mode = "n", }, }, filebrowser = { { "e", function() require("telescope").extensions.file_browser.file_browser() end, desc = "Telescope File Browser", mode = "n", }, { "sF", function() require("telescope").extensions.file_browser.file_browser() end, desc = "Telescope File Browser", mode = "n", }, }, } M.toggleterm = { { -- Toggle Terminal "", "ToggleTerm", desc = "Toggle Terminal", mode = "n", }, } M.transparent = { { "wt", function() require("transparent").toggle() end, desc = "Toggle Transparency", }, } M.zen = { { -- Toggle ZenMode "z", function() require("zen-mode").toggle() end, desc = "Toggle ZenMode", }, } return M