345 lines
12 KiB
Lua
345 lines
12 KiB
Lua
return {
|
|
"folke/which-key.nvim",
|
|
enabled = true,
|
|
dependencies = { "echasnovski/mini.icons" },
|
|
event = "VeryLazy",
|
|
opts = {
|
|
preset = "modern",
|
|
plugins = {
|
|
-- marks = true, -- shows a list of your marks on ' and `
|
|
-- registers = true, -- shows your registers on " in NORMAL or <C-r> in INSERT mode
|
|
spelling = {
|
|
enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions
|
|
suggestions = 20, -- how many suggestions should be shown in the list?
|
|
},
|
|
},
|
|
icons = {
|
|
breadcrumb = "»", -- symbol used in the command line area that shows your active key combo
|
|
separator = "➜", -- symbol used between a key and it's label
|
|
group = "+", -- symbol prepended to a group
|
|
},
|
|
keys = {
|
|
scroll_down = "<C-d>", -- binding to scroll down inside the popup
|
|
scroll_up = "<C-u>", -- binding to scroll up inside the popup
|
|
},
|
|
layout = {
|
|
height = { min = 4, max = 25 }, -- min and max height of the columns
|
|
width = { min = 20, max = 50 }, -- min and max width of the columns
|
|
spacing = 3, -- spacing between columns
|
|
align = "center", -- align columns left, center or right
|
|
},
|
|
},
|
|
config = function(_, opts)
|
|
local whichkey = require("which-key")
|
|
local utils = require("lazyvim.utils")
|
|
|
|
whichkey.setup(opts)
|
|
|
|
-- whichkey.add({
|
|
-- mode = { "n", "v" },
|
|
-- ["g"] = { name = "+goto" },
|
|
-- ["m"] = { name = "+harpoon" },
|
|
-- ["]"] = { name = "+next" },
|
|
-- ["["] = { name = "+previous" },
|
|
-- })
|
|
|
|
whichkey.add({
|
|
mode = { "n", "v" },
|
|
{ "g", group = "goto" },
|
|
{ "m", group = "harpoon" },
|
|
{ "]", group = "next" },
|
|
{ "[", group = "previous" }
|
|
})
|
|
|
|
-- b = { name = "+buffer" },
|
|
-- r = { name = "+replace" },
|
|
-- s = { name = "+search" },
|
|
-- h = { name = "+help" },
|
|
-- gh = { name = "+hunks" },
|
|
-- t = { name = "+todo" },
|
|
-- N = { name = "+noice" },
|
|
|
|
whichkey.add({
|
|
mode = { "n", "v" },
|
|
{ "<leader>b", group = "buffer" },
|
|
{ "<leader>r", group = "replace" },
|
|
{ "<leader>s", group = "search" },
|
|
{ "<leader>h", group = "help" },
|
|
{ "<leader>gh", group = "hunks" },
|
|
{ "<leader>t", group = "todo" },
|
|
{ "<leader>N", group = "noice" },
|
|
{ "<leader>f", group = "files" },
|
|
})
|
|
|
|
-- Z = { "<cmd>ZenMode<cr>", "Zen" },
|
|
-- u = { "<cmd>UndotreeToggle<cr>", "Undo Tree" },
|
|
-- ["'"] = { "<cmd>close<CR>", "Close split" },
|
|
|
|
whichkey.add({
|
|
mode = { "n", "v" },
|
|
{ "<leader>Z", "<cmd>ZenMode<cr>", desc = "Zen" },
|
|
{ "<leader>u", "<cmd>UndotreeToggle<cr>", desc = "Undetree" },
|
|
{ "<leader>'", "<cmd>close<CR>", desc = "Close Split" },
|
|
})
|
|
|
|
-- n = {
|
|
-- name = "+neorg",
|
|
-- n = { "<cmd>Neorg<cr>", "Open Neorg" },
|
|
-- c = { "<cmd>Neorg toggle-concealer<cr>", "Toggle Concealer" },
|
|
-- t = { "<cmd>Neorg tangle current-file<cr>", "Tangle Current File" },
|
|
-- j = { "<cmd>Neorg journal<cr>", "Open Neorg Journal" },
|
|
-- w = {
|
|
-- function()
|
|
-- require("lazyvim.utils.neorg").workspace_switcher()
|
|
-- end,
|
|
-- "Workspace Switcher",
|
|
-- },
|
|
-- },
|
|
|
|
whichkey.add({
|
|
mode = { "n", "v" },
|
|
{ "<leader>n", group = "neorg" },
|
|
{ "<leader>nn", "<cmd>Neorg<cr>", desc = "Open Neorg" },
|
|
{ "<leader>nc", "<cmd>Neorg toggle-concealer<cr>", desc = "Toggle Concealer" },
|
|
{ "<leader>nt", "<cmd>Neorg tangle current-file<cr>", desc = "Tangle Current File" },
|
|
{ "<leader>nj", "<cmd>Neorg journal<cr>", desc = "Open Neorg Journal" },
|
|
{
|
|
"<leader>nw",
|
|
function()
|
|
require("lazyvim.utils.neorg").workspace_switcher()
|
|
end
|
|
,
|
|
desc = "Workspace Switcher"
|
|
},
|
|
|
|
})
|
|
|
|
-- q = {
|
|
-- name = "+quit",
|
|
-- q = { "<cmd>wq<CR>", "Save and Quit Current" },
|
|
-- a = { "<cmd>wqa<cr>", "Save and Quit all" },
|
|
-- ['!'] = { "<cmd>qa!<cr>", "Force Quit all" },
|
|
-- },
|
|
|
|
whichkey.add({
|
|
mode = { "n", "v" },
|
|
{ "<leader>q", group = "quit" },
|
|
{ "<leader>qq", "<cmd>wq<CR>", desc = "Save and Quit Current" },
|
|
{ "<leader>qa", "<cmd>wqa<cr>", desc = "Save and Quit all" },
|
|
{ "<leader>q!", "<cmd>qa!<cr>", desc = "Force Quit all" },
|
|
})
|
|
|
|
-- l = {
|
|
-- name = "+lsp",
|
|
-- l = { "<cmd>lopen<cr>", "Open Location List" },
|
|
-- q = { "<cmd>copen<cr>", "Open Quickfix List" },
|
|
-- x = { "<cmd>cclose<cr>", "Close Quickfix List" },
|
|
-- },
|
|
|
|
whichkey.add({
|
|
mode = { "n", "v" },
|
|
{ "<leader>l", group = "lsp" },
|
|
{ "<leader>ll", "<cmd>lopen<cr>", desc = "Open Location List" },
|
|
{ "<leader>lq", "<cmd>copen<cr>", desc = "Open Quickfix List" },
|
|
{ "<leader>lx", function() vim.diagnostic.setqflist() end, desc = "Open Quickfix List" },
|
|
})
|
|
|
|
-- C = {
|
|
-- name = "+compiler",
|
|
-- c = { "<cmd>w! | !compiler %<cr>", "Compile File" },
|
|
-- b = { "<cmd>w! | !pandoc % -t beamer -o presentation.pdf<cr>", "Beamer Presentation" },
|
|
-- p = { "<cmd>!opout %<cr><cr>", "Preview Document" },
|
|
-- },
|
|
|
|
whichkey.add({
|
|
mode = { "n", "v" },
|
|
{ "<leader>c", group = "compiler" },
|
|
{ "<leader>cc", "<cmd>w! | !compiler %<cr>", desc = "Compile File" },
|
|
{ "<leader>cb", "<cmd>w! | !pandoc % -t beamer -o presentation.pdf<cr>", desc = "Beamer Presentation" },
|
|
{ "<leader>cp", "<cmd>!opout %<cr><cr>", desc = "Preview Document" },
|
|
|
|
})
|
|
|
|
-- w = {
|
|
-- name = "+window",
|
|
-- w = { "<C-W>p", "Other window" },
|
|
-- d = { "<C-W>c", "Delete Window" },
|
|
-- h = { "<C-W>s", "Split Below" },
|
|
-- v = { "<C-W>v", "Split Right" },
|
|
-- },
|
|
|
|
whichkey.add({
|
|
mode = { "n", "v" },
|
|
{ "<leader>w", group = "window" },
|
|
{ "<leader>ww", "<C-W>p", desc = "Other window" },
|
|
{ "<leader>wd", "<C-W>c", desc = "Delete Window" },
|
|
{ "<leader>wh", "<C-W>s", desc = "Split Below" },
|
|
{ "<leader>wv", "<C-W>v", desc = "Split Right" },
|
|
})
|
|
|
|
-- o = {
|
|
-- name = "+option",
|
|
-- f = {
|
|
-- function()
|
|
-- require("lazyvim.plugins.lsp.format").toggle()
|
|
-- end,
|
|
-- "Toggle format on save",
|
|
-- },
|
|
-- s = {
|
|
-- function()
|
|
-- utils.toggle("spell")
|
|
-- end,
|
|
-- "Toggle spelling",
|
|
-- },
|
|
-- w = {
|
|
-- function()
|
|
-- utils.toggle("wrap")
|
|
-- end,
|
|
-- "Toggle word wrap",
|
|
-- },
|
|
-- n = {
|
|
-- function()
|
|
-- utils.toggle("relativenumber", true)
|
|
-- utils.toggle("number")
|
|
-- end,
|
|
-- "Toggle line numbers",
|
|
-- },
|
|
-- d = {
|
|
-- function()
|
|
-- utils.toggle_diagnostics()
|
|
-- end,
|
|
-- "Toggle Diagnostics",
|
|
-- },
|
|
-- c = {
|
|
-- function()
|
|
-- local conceallevel = vim.o.conceallevel > 0 and vim.o.conceallevel or 3
|
|
-- utils.toggle("conceallevel", false, { 0, conceallevel })
|
|
-- end,
|
|
-- "Toggle conceal",
|
|
-- },
|
|
-- h = {
|
|
-- function()
|
|
-- local sidescrolloff = vim.o.sidescrolloff > 0 and vim.o.sidescrolloff or 8
|
|
-- utils.toggle("sidescrolloff", false, { 0, sidescrolloff })
|
|
-- end,
|
|
-- "Toggle side scroll off",
|
|
-- },
|
|
-- },
|
|
|
|
whichkey.add({
|
|
mode = { "n", "v" },
|
|
{ "<leader>o", group = "option" },
|
|
{
|
|
"<leader>of",
|
|
function()
|
|
require("lazyvim.plugins.lsp.format").toggle()
|
|
end,
|
|
desc = "Toggle format on save"
|
|
},
|
|
{
|
|
"<leader>os",
|
|
function()
|
|
utils.toggle("spell")
|
|
end,
|
|
desc = "Toggle spelling"
|
|
},
|
|
{
|
|
"<leader>ow",
|
|
function()
|
|
utils.toggle("wrap")
|
|
end,
|
|
desc = "Toggle word wrap"
|
|
},
|
|
{
|
|
"<leader>on",
|
|
function()
|
|
utils.toggle("relativenumber", true)
|
|
utils.toggle("number")
|
|
end,
|
|
desc = "Toggle line numbers"
|
|
},
|
|
{
|
|
"<leader>od",
|
|
function()
|
|
utils.toggle_diagnostics()
|
|
end,
|
|
desc = "Toggle diagnostics"
|
|
},
|
|
{
|
|
"<leader>oc",
|
|
function()
|
|
utils.toggle("conceallevel", false, { 0, 3 })
|
|
end,
|
|
desc = "Toggle conceal"
|
|
},
|
|
{
|
|
"<leader>oh",
|
|
function()
|
|
local sidescrolloff = vim.o.sidescrolloff > 0 and vim.o.sidescrolloff or 8
|
|
utils.toggle("sidescrolloff", false, { 0, sidescrolloff })
|
|
end,
|
|
desc = "Toggle side scroll"
|
|
},
|
|
|
|
})
|
|
|
|
-- g = {
|
|
-- name = "+git",
|
|
-- g = {
|
|
-- function()
|
|
-- utils.float_term({ "lazygit" })
|
|
-- end,
|
|
-- "Lazygit (cwd)",
|
|
-- },
|
|
-- G = {
|
|
-- function()
|
|
-- utils.float_term({ "lazygit" }, { cwd = utils.get_root() })
|
|
-- end,
|
|
-- "Lazygit (root dir)",
|
|
-- },
|
|
-- },
|
|
|
|
whichkey.add({
|
|
mode = { "n", "v" },
|
|
{ "<leader>g", group = "git" },
|
|
{
|
|
"<leader>gg",
|
|
function()
|
|
utils.float_term({ "lazygit" })
|
|
end
|
|
,
|
|
desc = "Lazygit (cwd)"
|
|
},
|
|
{
|
|
"<leader>gG",
|
|
function()
|
|
utils.float_term({ "lazygit" }, { cwd = utils.get_root() })
|
|
end
|
|
,
|
|
desc = "Lazygit (root)"
|
|
},
|
|
})
|
|
|
|
-- z = {
|
|
-- name = "+zk",
|
|
-- I = { "<cmd>ZkIndex<cr>", "Index Notebook" },
|
|
-- s = { "<cmd>ZkNotes<cr>", "List Notes" },
|
|
-- b = { "<cmd>ZkBacklinks<cr>", "Backlinks" },
|
|
-- l = { "<cmd>ZkLinks<cr>", "Links" },
|
|
-- i = {
|
|
-- { "<cmd>ZkInsertLink<cr>", "Insert Link" },
|
|
-- },
|
|
-- },
|
|
|
|
whichkey.add({
|
|
mode = { "n", "v" },
|
|
{ "<leader>z", group = "zk" },
|
|
{ "<leader>zI", "<cmd>ZkIndex<cr>", desc = "Index Notebook" },
|
|
{ "<leader>zs", "<cmd>ZkNotes<cr>", desc = "List Notes" },
|
|
{ "<leader>zb", "<cmd>ZkBacklinks<cr>", desc = "Backlinks" },
|
|
{ "<leader>zl", "<cmd>ZkLinks<cr>", desc = "Links" },
|
|
{ "<leader>zi", "<cmd>ZkInsertLink<cr>", desc = "Insert Link" },
|
|
})
|
|
end,
|
|
}
|