mirror of
https://github.com/pojokcodeid/nvim-lazy.git
synced 2025-06-21 16:39:04 +02:00
56 lines
1.8 KiB
Lua
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
|