pojokcodeid.nvim-lazy/lua/user/utils/cheatsheet.lua
2024-08-15 07:46:49 +07:00

56 lines
1.8 KiB
Lua

local M = {}
M.run = function()
local Popup = require("nui.popup")
local event = require("nui.utils.autocmd").event
-- Buat popup untuk menampilkan keymapping
local popup = Popup({
enter = true,
focusable = true,
border = {
style = "rounded",
text = {
top = " Key Mappings ",
},
},
position = "50%",
size = {
width = "80%",
height = "80%",
},
})
-- Daftar keymapping yang akan ditampilkan dalam dua kolom dengan section header
-- stylua: ignore
local key_mappings = {
{ "<leader>a ", "Toggle Dashboard ", "<leader>e ", "Toggle Explorer "},
{ "<leader>c ", "Chat AI ", "<leader>bb", ":Telescope buffers<CR> "},
{ " ", " ", "<leader>bd", ":bdelete<CR> "},
{ " ", " ", " ", " "},
{ "Terminal ", " ", " ", " "},
{ "<leader>tt ", ":ToggleTerm<CR> ", "<leader>tn", ":ToggleTerm direction=horizontal<CR>"},
}
-- Fungsi untuk mengubah daftar keymapping menjadi format string
local function format_key_mappings(mappings)
local formatted = {}
for _, mapping in ipairs(mappings) do
table.insert(formatted, string.format("%-20s %-20s %-20s %s", mapping[1], mapping[2], mapping[3], mapping[4]))
end
return formatted
end
-- Set konten popup dengan daftar keymapping yang diformat
vim.api.nvim_buf_set_lines(popup.bufnr, 0, -1, false, format_key_mappings(key_mappings))
-- Mount popup
popup:mount()
-- Unmount popup ketika cursor meninggalkan buffer
popup:on(event.BufLeave, function()
popup:unmount()
end)
end
return M