68 lines
1.7 KiB
Lua
68 lines
1.7 KiB
Lua
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<CR>",
|
|
i = ":PaqInstall<CR>",
|
|
a = ":edit ~/.config/nvim/lua/plugins.lua<CR>",
|
|
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.18",
|
|
"========================",
|
|
"",
|
|
" [n] New File",
|
|
" [r] Recent Files",
|
|
" [p] Plugins...",
|
|
" [q] Quit",
|
|
"",
|
|
"========================",
|
|
}
|
|
local keys = {
|
|
n = ":ene | startinsert<CR>",
|
|
r = ":oldfiles<CR>",
|
|
p = function() M.open_plugins_menu() end,
|
|
q = ":q!<CR>",
|
|
}
|
|
draw_menu(lines, keys)
|
|
end
|
|
|
|
return M
|