local M = { "jbyuki/venn.nvim", -- draw ascii diagrams dependencies = { "anuvyklack/hydra.nvim", }, keys = { "V" }, } local venn_hint_old = [[ ^^^Draw arrow^^^ Select region with ^ ^ _K_ ^ ^ _f_: surround it with box _H_ ^ ^ _L_ ^ ^ _J_ ^ ^ __ ]] local H = require("my.plugins.hydra").hint local venn_hint = H.concat_many_h({ H.add_title("Draw arrows", H.directional("H", "J", "K", "L", 3)), H.add_title( "Actions", H.concat_many_w({ H.concat_h("", ": select region"), H.concat_h(H.pad_right(H.highlight("f"), 5), ": surround with box"), H.concat_h(H.pad_right(H.highlight(""), 5), ": quit"), }, { justify = "left" }) ), }, 3).value function M.config() -- local r = "V" -- vim.keymap.set("n", r .. "H", "h:VBox", { desc = "left" }) -- vim.keymap.set("n", r .. "J", "j:VBox", { desc = "down" }) -- vim.keymap.set("n", r .. "K", "k:VBox", { desc = "up" }) -- vim.keymap.set("n", r .. "L", "l:VBox", { desc = "right" }) -- vim.keymap.set("v", r .. "f", ":VBox", { desc = "box" }) local Hydra = require("hydra") Hydra({ name = "Draw Diagram", hint = venn_hint, config = { color = "pink", invoke_on_body = true, hint = { border = "single", }, on_enter = function() vim.opt.virtualedit = "all" vim.g.inside_venn = true vim.opt.cmdheight = 1 end, on_exit = function() vim.opt.virtualedit = "" vim.g.inside_venn = false vim.opt.cmdheight = 0 end, desc = "[V]enn mode", }, mode = "n", body = "V", heads = { { "H", "h:VBox", { silent = true, desc = "test description" } }, { "J", "j:VBox", { silent = true, desc = "test description" } }, { "K", "k:VBox", { silent = true, desc = "test description" } }, { "L", "l:VBox", { silent = true, desc = "test description" } }, { "f", "VBox", { mode = "v" } }, { "", nil, { exit = true } }, }, }) end function M.init() require("which-key").register({ ["V"] = { name = "[V]enn mode" }, }) end return M