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 = { { "a ", "Toggle Dashboard ", "e ", "Toggle Explorer "}, { "c ", "Chat AI ", "bb", ":Telescope buffers "}, { " ", " ", "bd", ":bdelete "}, { " ", " ", " ", " "}, { "Terminal ", " ", " ", " "}, { "tt ", ":ToggleTerm ", "tn", ":ToggleTerm direction=horizontal"}, } -- 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