aboutsummaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/pets.lua49
-rw-r--r--lua/pets/commands.lua9
-rw-r--r--lua/pets/popup.lua28
-rw-r--r--lua/pets/setup.lua10
-rw-r--r--lua/pets/utils.lua8
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