diff options
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/pets.lua | 49 | ||||
| -rw-r--r-- | lua/pets/commands.lua | 9 | ||||
| -rw-r--r-- | lua/pets/popup.lua | 28 | ||||
| -rw-r--r-- | lua/pets/setup.lua | 10 | ||||
| -rw-r--r-- | lua/pets/utils.lua | 8 |
5 files changed, 65 insertions, 39 deletions
diff --git a/lua/pets.lua b/lua/pets.lua index 3038b83..8a0058c 100644 --- a/lua/pets.lua +++ b/lua/pets.lua @@ -1,23 +1,48 @@ local M = {} +M.stack = { + popups = {}, + images = {}, +} + function M.setup(options) - options = options or {} - require("pets.setup") + options = options or {} + + -- init hologram + local ok = pcall(require, "hologram") + if ok then + require("hologram").setup({ auto_display = false }) + end + + require("pets.commands") -- init autocommands end function M.show() - local popup = require("pets.popup").popup - local utils = require("pets.utils") - popup:mount() + local popup = require("pets.popup").popup + local utils = require("pets.utils") + popup:mount() - -- insert lines to avoid the image being stretched - vim.api.nvim_buf_set_lines(popup.bufnr, 1, -1, false, { "", "", "", "", "", "", "", "", "", "", "" }) - popup.buf_options = { -- then set the buffer to be readonly - modifiable = false, - readonly = true, - } + -- insert lines to avoid the image being stretched + vim.api.nvim_buf_set_lines(popup.bufnr, 0, -1, false, { "", "", "", "", "", "", "", "", "", "" }) + popup.buf_options = { -- then set the buffer to be readonly + modifiable = false, + readonly = true, + } + + local image = utils.ShowPet(popup.bufnr) + table.insert(M.stack.popups, popup) + table.insert(M.stack.images, image) +end - utils.ShowPet(popup.bufnr) +function M.closeAll() + for _, image in pairs(M.stack.images) do + image:delete(0, { + free = false, + }) + end + for _, popup in pairs(M.stack.popups) do + popup:unmount() + end end return M diff --git a/lua/pets/commands.lua b/lua/pets/commands.lua new file mode 100644 index 0000000..8124cbc --- /dev/null +++ b/lua/pets/commands.lua @@ -0,0 +1,9 @@ +local pets = require("pets") + +vim.api.nvim_create_user_command("Pets", function() + pets.show() +end, {}) -- use nargs = 1 to accept arguments + +vim.api.nvim_create_user_command("PetsCloseAll", function() + pets.closeAll() +end, {}) diff --git a/lua/pets/popup.lua b/lua/pets/popup.lua index f044218..8fe7ebf 100644 --- a/lua/pets/popup.lua +++ b/lua/pets/popup.lua @@ -1,19 +1,19 @@ local M = {} local Popup = require("nui.popup") M.popup = Popup({ - position = { - row = "100%", -- FIX: set row for different sizes / implement offset - col = "100%", - }, - relative = "editor", - size = { - width = 60, - height = 10, - }, - focusable = false, - enter = false, - win_options = { - winblend = 100, -- TODO: set to 100 for transparent background - }, + position = { + row = "100%", -- FIX: set row for different sizes / implement offset + col = "100%", + }, + relative = "editor", + size = { + width = "25%", + height = 10, + }, + focusable = false, + enter = false, + win_options = { + winblend = 10, + }, }) return M diff --git a/lua/pets/setup.lua b/lua/pets/setup.lua deleted file mode 100644 index 94f4d5e..0000000 --- a/lua/pets/setup.lua +++ /dev/null @@ -1,10 +0,0 @@ -local pets = require("pets") - -local ok = pcall(require, "hologram") -if ok then - require("hologram").setup({ auto_display = false }) -end - -vim.api.nvim_create_user_command("PetsShow", function() - pets.show() -end, {}) -- use nargs = 1 to accept arguments diff --git a/lua/pets/utils.lua b/lua/pets/utils.lua index 28c57b8..4325928 100644 --- a/lua/pets/utils.lua +++ b/lua/pets/utils.lua @@ -1,9 +1,11 @@ local M = {} function M.ShowPet(buf) - local source = "/mnt/shared/coding/lua/plugins/pets.nvim/media/test/brown_idle-0.png" - local image = require("hologram.image"):new(source, {}) - image:display(5, 1, buf, {}) -- TODO: set offset to show the pet at the desired height + local source = "/mnt/shared/coding/lua/plugins/pets.nvim/media/test/brown_idle-0.png" + local image = require("hologram.image"):new(source, {}) + + image:display(5, 0, buf, {}) -- TODO: offset option to show the pet at the desired height + return image end return M |