local M = {} -- Helper function to draw the menu local function draw_menu(lines, keymaps) local buf = vim.api.nvim_create_buf(false, true) vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines) vim.api.nvim_set_current_buf(buf) -- Local settings for the menu window vim.opt_local.number = false vim.opt_local.relativenumber = false vim.opt_local.buftype = "nofile" vim.opt_local.bufhidden = "wipe" vim.opt_local.cursorline = true -- Set keymaps for this menu local opts = { buffer = buf, noremap = true, silent = true } for key, cmd in pairs(keymaps) do vim.keymap.set("n", key, cmd, opts) end end -- The plugin sub-menu (called with 'p') function M.open_plugins_menu() local lines = { " MANAGE PLUGINS", "========================", "", " [u] Update (Sync)", " [i] Install", " [a] Add (Open List)", " [b] Back", "", "========================", } local keys = { u = ":PaqSync", i = ":PaqInstall", a = ":edit ~/.config/nvim/lua/plugins.lua", b = function() M.open() end, -- Returns to the main menu } draw_menu(lines, keys) end -- The main menu function M.open() local lines = { " Mono VIM - 0.17", "========================", "", " [n] New File", " [r] Recent Files", " [p] Plugins...", " [q] Quit", "", "========================", } local keys = { n = ":ene | startinsert", r = ":oldfiles", p = function() M.open_plugins_menu() end, q = ":q!", } draw_menu(lines, keys) end return M