local wk = require("which-key") local telescope = require("telescope.builtin") local gitsigns = require("gitsigns") -- local tree = require "nvim-tree.api" function FormatBuffer(command) -- Save the current cursor position local cursor_position = vim.fn.getpos(".") -- Run the formatter command on the current buffer vim.cmd(":%! " .. command) -- Restore the cursor position vim.fn.setpos(".", cursor_position) end function ToggleTree(source) require("neo-tree.command").execute({ toggle = true, source = source, position = "left", }) end wk.add({ { mode = "n", -- telescope { "ff", function() telescope.find_files() end, desc = "Find file", }, { "fg", function() telescope.live_grep() end, desc = "Live grep", }, { "fb", function() telescope.buffers() end, desc = "List buffers", }, { "fh", function() telescope.help_tags() end, desc = "Help", }, { "fs", function() telescope.lsp_document_symbols() end, desc = "Find symbols", }, { "zz", function() telescope.spell_suggest() end, desc = "Suggest spell", }, { "ft", function() FormatBuffer("typstfmt") end, desc = "Typst fmt", }, -- Centering cursor { "n", "nzzzv", desc = "Center cursor when n (next) during search" }, { "N", "Nzzzv", desc = "Center cursor when n (next) during search" }, -- tab { "", ":BufferLineCycleNext ", desc = "Next tab" }, { "", ":BufferLineCyclePrev", desc = "Previous tab" }, -- Comment { "/", "gcc", desc = "comment toggle", remap = true }, -- Format { "fm", function() require("conform").format({ lsp_fallback = true }) end, desc = "format files", }, -- nvim-tree -- { "", function() tree.tree.toggle() end, desc = "Toggle file tree" }, { "", function() ToggleTree("filesystem") end, desc = "Toggle file tree", }, -- Typst format { "ft", function() FormatBuffer("typstfmt") end, desc = "Typst formater", }, -- Lsp { "K", function() vim.lsp.buf.hover() end, desc = "LSP toggle", }, { "ca", function() vim.lsp.buf.code_action() end, desc = "LSP code action", }, { "cd", function() vim.diagnostic.setqflist() end, desc = "LSP code diagnostic", }, -- Gitsigns { "nc", function() gitsigns.nav_hunk("next") end, desc = "Next change", }, { "pc", function() gitsigns.nav_hunk("prev") end, desc = "Previous change", }, -- increment/decrement numbers { "+", "", desc = "Increment number" }, -- increment { "-", "", desc = "Decrement number" }, -- decrement { "to", "tabnew", desc = "Open new tab" }, -- open new tab { "tx", "tabclose", desc = "Close current tab" }, -- close current tab { "tn", "tabn", desc = "Go to next tab" }, -- go to next tab { "tp", "tabp", desc = "Go to previous tab" }, -- go to previous tab { "tf", "tabnew %", desc = "Open current buffer in new tab" }, -- move current buffer to new tab }, { mode = "v", { "", ":m '>+1gv=gv", desc = "Move selection down" }, { "", ":m '<-2gv=gv", desc = "Move selection up" }, -- Comment { "/", "gc", desc = "comment toggle", remap = true }, }, })