2025-03-27 08:18:20 +00:00
|
|
|
return {
|
2025-03-27 10:47:46 +00:00
|
|
|
"folke/which-key.nvim",
|
2025-03-27 08:18:20 +00:00
|
|
|
|
2025-03-27 10:47:46 +00:00
|
|
|
init = function()
|
|
|
|
|
local wk = require("which-key")
|
|
|
|
|
wk.add({
|
|
|
|
|
{ "<A-j>", ":m .+1<cr>==", desc = "Move line down" },
|
|
|
|
|
{ "<A-k>", ":m .-2<cr>==", desc = "Move line up" },
|
|
|
|
|
{
|
|
|
|
|
mode = "v",
|
|
|
|
|
{ "<A-j>", ":m '>+1<CR>gv=gv", desc = "Move line down" },
|
|
|
|
|
{ "<A-k>", ":m '<-2<CR>gv=gv", desc = "Move line up" },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode = "i",
|
|
|
|
|
{ "<A-j>", "<Esc>:m .+1<CR>==gi", desc = "Move line down" },
|
|
|
|
|
{ "<A-k>", "<Esc>:m .-2<CR>==gi", desc = "Move line up" },
|
|
|
|
|
},
|
2025-03-27 08:18:20 +00:00
|
|
|
|
2025-03-27 10:47:46 +00:00
|
|
|
{ "<c-\\>", "<cmd>Commander<cr>", desc = "Commander" },
|
2025-03-27 08:18:20 +00:00
|
|
|
|
2025-03-28 01:40:21 +00:00
|
|
|
{ "<C-p>", ":lua Snacks.picker.git_files()<cr>", desc = "Find git files" },
|
2025-03-27 08:18:20 +00:00
|
|
|
|
2025-03-27 10:47:46 +00:00
|
|
|
{ ",", group = "Search" },
|
2025-03-28 01:40:21 +00:00
|
|
|
{ ",p", ":lua Snacks.picker.files()<cr>", desc = "Files files" },
|
|
|
|
|
{ ",b", ":lua Snacks.picker.buffers()<cr>", desc = "Buffer List" },
|
|
|
|
|
{ ",q", ":lua Snacks.picker.qflist()<cr>", desc = "Quickfix" },
|
|
|
|
|
{ ",c", ":lua Snacks.picker.command_history()<cr>", desc = "Quickfix" },
|
2025-03-27 10:47:46 +00:00
|
|
|
{ ",e", ":e **/*<C-z><S-Tab>", desc = "Open with autocomplete" },
|
|
|
|
|
{ ",f", ":find **/*<C-z><S-Tab>", desc = "Find with autocomplete" },
|
2025-03-27 08:18:20 +00:00
|
|
|
|
2025-03-27 10:47:46 +00:00
|
|
|
{ "<leader>p", group = "Search" },
|
2025-03-28 01:40:21 +00:00
|
|
|
{ "<leader>pc", ":lua Snacks.picker.git_log()<cr>", desc = "Git commits" },
|
|
|
|
|
{ "<leader>pf", ":lua Snacks.picker.git_log_file()<cr>", desc = "Git file history" },
|
|
|
|
|
{ "<leader>pb", ":lua Snacks.picker.git_branches()<cr>", desc = "Git branches" },
|
|
|
|
|
{ "<leader>ph", ":lua Snacks.picker.git_status()<cr>", desc = "Git status" },
|
2025-03-27 10:47:46 +00:00
|
|
|
{
|
|
|
|
|
"<leader>ps",
|
2025-03-28 01:40:21 +00:00
|
|
|
":lua Snacks.picker.grep()<cr>",
|
2025-03-27 10:47:46 +00:00
|
|
|
desc = "Project search"
|
|
|
|
|
},
|
2025-03-27 08:18:20 +00:00
|
|
|
|
2025-03-27 10:47:46 +00:00
|
|
|
-- {
|
|
|
|
|
-- "<leader>ds",
|
|
|
|
|
-- function()
|
|
|
|
|
-- require("utils.telescope").search_dotfiles()
|
|
|
|
|
-- end,
|
|
|
|
|
-- desc = "Search dot files 🔭",
|
|
|
|
|
-- },
|
2025-03-27 08:18:20 +00:00
|
|
|
|
2025-03-27 10:47:46 +00:00
|
|
|
{ "K", "<cmd>Lspsaga hover_doc<cr>", desc = "Show documentation" },
|
|
|
|
|
{ "<C-k>", "<cmd>Lspsaga hover_doc ++keep<cr>", desc = "Show documentation (keep)" },
|
|
|
|
|
{ "grn", "<cmd>Lspsaga rename<cr>", desc = "Rename variable" },
|
|
|
|
|
{ "g", group = "Go to" },
|
|
|
|
|
{ "gd", ":Lspsaga goto_definition<cr>", desc = "Go to definition" },
|
|
|
|
|
{
|
|
|
|
|
"gD",
|
|
|
|
|
function()
|
|
|
|
|
vim.lsp.buf.declaration()
|
|
|
|
|
end,
|
|
|
|
|
desc = "Go to declaration",
|
|
|
|
|
},
|
|
|
|
|
{ "gt", ":Lspsaga goto_type_definition<cr>", desc = "Go to type definition" },
|
|
|
|
|
{ "gh", ":Lspsaga finder<cr>", desc = "LSP Finder" },
|
|
|
|
|
{ "gH", ":Lspsaga finder ++normal<cr>", desc = "LSP Finder (keep)" },
|
|
|
|
|
{ "<localleader>a", group = "Local File Actions" },
|
|
|
|
|
{ "gra", mode = { "n", "v" }, "<cmd>Lspsaga code_action<cr>", desc = "Code action" },
|
|
|
|
|
{
|
|
|
|
|
"<localleader>ag",
|
|
|
|
|
function()
|
|
|
|
|
vim.diagnostic.open_float(0,
|
|
|
|
|
{ scope = "line", focusable = false })
|
|
|
|
|
end,
|
|
|
|
|
desc = "Show line diagnostics",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"grd",
|
|
|
|
|
"<cmd>Glance definitions<cr>",
|
|
|
|
|
desc = "Definitions",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"grr",
|
|
|
|
|
"<cmd>Glance references<cr>",
|
|
|
|
|
desc = "References",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"gri",
|
|
|
|
|
"<cmd>Glance implementations<cr>",
|
|
|
|
|
desc = "Implementations",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"grt",
|
|
|
|
|
"<cmd>Glance type_definitions<cr>",
|
|
|
|
|
desc = "Type definitions",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"grI",
|
|
|
|
|
"<cmd>Lspsaga incoming_calls<cr>",
|
|
|
|
|
desc = "Incoming calls",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"grO",
|
|
|
|
|
"<cmd>Lspsaga outgoing_calls<cr>",
|
|
|
|
|
desc = "Outgoing calls",
|
|
|
|
|
},
|
2025-03-27 08:18:20 +00:00
|
|
|
|
2025-03-27 10:47:46 +00:00
|
|
|
{
|
|
|
|
|
"gO",
|
|
|
|
|
"<cmd>Lspsaga outline<cr>",
|
|
|
|
|
desc = "Toggle Outline",
|
|
|
|
|
icon = "",
|
|
|
|
|
},
|
2025-03-27 08:18:20 +00:00
|
|
|
|
2025-03-27 10:47:46 +00:00
|
|
|
{
|
|
|
|
|
"<leader>g",
|
|
|
|
|
group = "Git",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"<leader>gd",
|
|
|
|
|
"<cmd>DiffviewOpen<cr>",
|
|
|
|
|
desc = "Diff view",
|
|
|
|
|
},
|
2025-03-27 08:18:20 +00:00
|
|
|
|
2025-03-27 10:47:46 +00:00
|
|
|
{
|
2025-03-29 01:53:04 +00:00
|
|
|
"»",
|
2025-03-27 10:47:46 +00:00
|
|
|
"]",
|
|
|
|
|
noremap = false,
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-03-29 01:53:04 +00:00
|
|
|
"«",
|
2025-03-27 10:47:46 +00:00
|
|
|
"[",
|
|
|
|
|
noremap = false,
|
|
|
|
|
},
|
2025-03-31 09:36:28 +01:00
|
|
|
{ "<localleader>g", group = "git signs" },
|
2025-03-27 10:47:46 +00:00
|
|
|
{
|
2025-03-31 09:36:28 +01:00
|
|
|
"<localleader>gs",
|
2025-03-27 10:47:46 +00:00
|
|
|
function()
|
|
|
|
|
require("gitsigns").stage_hunk()
|
|
|
|
|
end,
|
|
|
|
|
desc = "Stage hunk",
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-03-31 09:36:28 +01:00
|
|
|
"<localleader>gu",
|
2025-03-27 10:47:46 +00:00
|
|
|
function()
|
|
|
|
|
require("gitsigns").undo_stage_hunk()
|
|
|
|
|
end,
|
|
|
|
|
desc = "Undo stage hunk",
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-03-31 09:36:28 +01:00
|
|
|
"<localleader>gv",
|
2025-03-27 10:47:46 +00:00
|
|
|
function()
|
|
|
|
|
require("gitsigns").preview_hunk()
|
|
|
|
|
end,
|
|
|
|
|
desc = "Preview hunk",
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-03-31 09:36:28 +01:00
|
|
|
"<localleader>gb",
|
2025-03-27 10:47:46 +00:00
|
|
|
function()
|
|
|
|
|
require("gitsigns").blame_line()
|
|
|
|
|
end,
|
|
|
|
|
desc = "Blame line",
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-03-31 09:36:28 +01:00
|
|
|
"<localleader>gB",
|
|
|
|
|
function()
|
|
|
|
|
require("gitsigns").blame()
|
|
|
|
|
end,
|
|
|
|
|
desc = "Blame line",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"<localleader>gR",
|
2025-03-27 10:47:46 +00:00
|
|
|
function()
|
|
|
|
|
require("gitsigns").reset_buffer()
|
|
|
|
|
end,
|
|
|
|
|
desc = "Reset buffer",
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-03-31 09:36:28 +01:00
|
|
|
"<localleader>gr",
|
2025-03-27 10:47:46 +00:00
|
|
|
function()
|
|
|
|
|
require("gitsigns").reset_hunk()
|
|
|
|
|
end,
|
|
|
|
|
desc = "Reset hunk",
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-03-31 09:36:28 +01:00
|
|
|
"<localleader>gS",
|
2025-03-27 10:47:46 +00:00
|
|
|
function()
|
|
|
|
|
require("gitsigns").stage_buffer()
|
|
|
|
|
end,
|
|
|
|
|
desc = "Stage buffer",
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-03-31 09:36:28 +01:00
|
|
|
"<localleader>gU",
|
2025-03-27 10:47:46 +00:00
|
|
|
function()
|
|
|
|
|
require("gitsigns").reset_buffer_index()
|
|
|
|
|
end,
|
|
|
|
|
desc = "Reset buffer index",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode = "v",
|
2025-03-27 08:18:20 +00:00
|
|
|
{
|
2025-03-31 09:36:28 +01:00
|
|
|
"<localleader>gs",
|
2025-03-27 08:18:20 +00:00
|
|
|
function()
|
2025-03-27 10:47:46 +00:00
|
|
|
require("gitsigns").stage_hunk({ vim.fn.line("."),
|
|
|
|
|
vim.fn.line("v") })
|
2025-03-27 08:18:20 +00:00
|
|
|
end,
|
|
|
|
|
desc = "Stage hunk",
|
|
|
|
|
},
|
|
|
|
|
{
|
2025-03-31 09:36:28 +01:00
|
|
|
"<localleader>gr",
|
2025-03-27 08:18:20 +00:00
|
|
|
function()
|
2025-03-27 10:47:46 +00:00
|
|
|
require("gitsigns").reset_hunk({ vim.fn.line("."),
|
|
|
|
|
vim.fn.line("v") })
|
2025-03-27 08:18:20 +00:00
|
|
|
end,
|
|
|
|
|
desc = "Reset hunk",
|
|
|
|
|
},
|
2025-03-27 10:47:46 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
"]c",
|
|
|
|
|
function()
|
|
|
|
|
if vim.wo.diff then
|
|
|
|
|
vim.cmd.normal({ "]c", bang = true })
|
|
|
|
|
else
|
|
|
|
|
vim.schedule(function()
|
|
|
|
|
require("gitsigns").nav_hunk("next")
|
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
end,
|
|
|
|
|
desc = "Next hunk",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"[c",
|
|
|
|
|
function()
|
|
|
|
|
if vim.wo.diff then
|
|
|
|
|
vim.cmd.normal({ "[c", bang = true })
|
|
|
|
|
else
|
|
|
|
|
vim.schedule(function()
|
|
|
|
|
require("gitsigns").nav_hunk("prev")
|
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
end,
|
|
|
|
|
desc = "Previous hunk",
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
{ "<leader>u", "<cmd>UndotreeToggle<cr>", desc = "Undotree", icon = "" },
|
|
|
|
|
|
|
|
|
|
{ "<leader>c", group = "quickfix" },
|
|
|
|
|
{ "<leader>co", "<cmd>copen<cr>", desc = "Open" },
|
|
|
|
|
{ "<leader>cc", "<cmd>cclose<cr>", desc = "Close" },
|
|
|
|
|
|
|
|
|
|
{ "<localleader>c", group = "Location List" },
|
|
|
|
|
{ "<localleader>co", "<cmd>lopen<cr>", desc = "Open" },
|
|
|
|
|
{ "<localleader>cc", "<cmd>lclose<cr>", desc = "Close" },
|
|
|
|
|
|
|
|
|
|
{ "<C-n>", "<cmd>Neotree toggle<cr>", desc = "Toggle neo-tree" },
|
|
|
|
|
|
|
|
|
|
{ "<leader>t", "<cmd>lua Snacks.terminal.toggle()<cr>", desc = "Toggle Terminal" },
|
|
|
|
|
{ mode = { "t" }, { "<leader>t", "<cmd>lua Snacks.terminal.toggle()<cr>", desc = "Toggle Terminal" } },
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
mode = { "n", "x", "o" },
|
2025-03-27 08:18:20 +00:00
|
|
|
{
|
2025-03-27 10:47:46 +00:00
|
|
|
"s",
|
2025-03-27 08:18:20 +00:00
|
|
|
function()
|
2025-03-27 10:47:46 +00:00
|
|
|
require("flash").jump()
|
2025-03-27 08:18:20 +00:00
|
|
|
end,
|
2025-03-27 10:47:46 +00:00
|
|
|
desc = "Flash ⚡",
|
2025-03-27 08:18:20 +00:00
|
|
|
},
|
|
|
|
|
{
|
2025-03-27 10:47:46 +00:00
|
|
|
"S",
|
2025-03-27 08:18:20 +00:00
|
|
|
function()
|
2025-03-27 10:47:46 +00:00
|
|
|
require("flash").treesitter()
|
2025-03-27 08:18:20 +00:00
|
|
|
end,
|
2025-03-27 10:47:46 +00:00
|
|
|
desc = "Flash Treesitter ⚡",
|
2025-03-27 08:18:20 +00:00
|
|
|
},
|
2025-03-27 10:47:46 +00:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode = { "o", "x" },
|
2025-03-27 08:18:20 +00:00
|
|
|
{
|
2025-03-27 10:47:46 +00:00
|
|
|
"R",
|
2025-03-27 08:18:20 +00:00
|
|
|
function()
|
2025-03-27 10:47:46 +00:00
|
|
|
require("flash").treesitter_search()
|
2025-03-27 08:18:20 +00:00
|
|
|
end,
|
2025-03-27 10:47:46 +00:00
|
|
|
desc = "Flash Treesitter search ⚡",
|
2025-03-27 08:18:20 +00:00
|
|
|
},
|
2025-03-27 10:47:46 +00:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode = "c",
|
2025-03-27 08:18:20 +00:00
|
|
|
{
|
2025-03-27 10:47:46 +00:00
|
|
|
"<C-s>",
|
2025-03-27 08:18:20 +00:00
|
|
|
function()
|
2025-03-27 10:47:46 +00:00
|
|
|
require("flash").toggle()
|
2025-03-27 08:18:20 +00:00
|
|
|
end,
|
2025-03-27 10:47:46 +00:00
|
|
|
desc = "Toggle Flash Search ⚡",
|
2025-03-27 08:18:20 +00:00
|
|
|
},
|
2025-03-27 10:47:46 +00:00
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
end,
|
2025-03-27 08:18:20 +00:00
|
|
|
}
|