local Hydra = require('hydra') local pcmd = require('hydra.keymap-util').pcmd local splits = require('smart-splits') local M = {} local venn_hint = [[ Arrow^^^^^^ Select region with ^ ^ _K_ ^ ^ _f_: surround it with box _H_ ^ ^ _L_ ^ ^ _J_ ^ ^ __ ]] local window_hint = [[ ^^^^^^^^^^^^ Move ^^ Size ^^ ^^ Split ^^^^^^^^^^^^------------- ^^-----------^^ ^^--------------- ^ ^ _k_ ^ ^ ^ ^ _K_ ^ ^ ^ __ ^ _s_: horizontally _h_ ^ ^ _l_ _H_ ^ ^ _L_ __ __ _v_: vertically ^ ^ _j_ ^ ^ ^ ^ _J_ ^ ^ ^ __ ^ _q_: close focus^^^^^^ window^^^^^^ ^_=_: equalize^ _o_: close remaining ]] function M.setup() Hydra({ name = 'Draw Diagram', hint = venn_hint, config = { color = 'pink', invoke_on_body = true, hint = { border = 'rounded' }, on_enter = function() vim.o.virtualedit = 'all' end, }, mode = 'n', body = 'v', heads = { { 'H', 'h:VBox' }, { 'J', 'j:VBox' }, { 'K', 'k:VBox' }, { 'L', 'l:VBox' }, { 'f', ':VBox', { mode = 'v' } }, { '', nil, { exit = true } }, } }) vim.keymap.set("n", "", "") Hydra({ name = 'Windows', hint = window_hint, config = { invoke_on_body = true, hint = { border = 'rounded', offset = -1 } }, mode = 'n', body = '', heads = { { 'h', 'h' }, { 'j', 'j' }, { 'k', "k" }, { 'l', 'l' }, { 'H', 'H' }, { 'J', 'J' }, { 'K', 'K' }, { 'L', 'L' }, { '', function() splits.resize_left(2) end }, { '', function() splits.resize_down(2) end }, { '', function() splits.resize_up(2) end }, { '', function() splits.resize_right(2) end }, { '=', '=', { desc = 'equalize' } }, { 's', pcmd('split', 'E36') }, { '', pcmd('split', 'E36'), { desc = false } }, { 'v', pcmd('vsplit', 'E36') }, { '', pcmd('vsplit', 'E36'), { desc = false } }, { 'w', 'w', { exit = true, desc = false } }, { '', 'w', { exit = true, desc = false } }, { 'o', 'o', { exit = true, desc = 'remain only' } }, { '', 'o', { exit = true, desc = false } }, { 'q', pcmd('close', 'E444'), { desc = 'close window' } }, { '', pcmd('close', 'E444'), { desc = false } }, { '', nil, { exit = true, desc = false } } } }) end return M