config/.config/nvim/lua/lazyvim/plugins/whichkey.lua
2025-01-08 12:52:06 +10:30

347 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" },
{ "<leader>a", group = "angular" },
{ "<leader>T", group = "term" },
})
-- 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,
}