aboutsummaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorGiuseppe Gadola <giusgadola@gmail.com>2023-02-14 17:33:13 +0100
committerGiuseppe Gadola <giusgadola@gmail.com>2023-02-14 19:17:20 +0100
commit092fa9dfbcbc4e74baec33c883648bfd0ff56f56 (patch)
tree88b282fdb36d75b0b7c8f84494d2be889e1f1e1b /lua
parentfeat(commands): autocomplete for PetsKill (diff)
refactor(warning): refactor warnings and add some command validation
Diffstat (limited to 'lua')
-rw-r--r--lua/pets.lua5
-rw-r--r--lua/pets/commands.lua18
-rw-r--r--lua/pets/utils.lua4
3 files changed, 22 insertions, 5 deletions
diff --git a/lua/pets.lua b/lua/pets.lua
index 7e4d4c2..01fbc6e 100644
--- a/lua/pets.lua
+++ b/lua/pets.lua
@@ -1,4 +1,5 @@
local M = {}
+local utils = require("pets.utils")
M.options = {
row = 5, -- the row (height) to display the pet at
@@ -27,7 +28,7 @@ end
-- create a Pet object and add it to the pets table
function M.create_pet(name, type, style)
if M.pets[name] ~= nil then
- vim.notify("Name already in use", vim.log.levels.WARN)
+ utils.warning('Name "' .. name .. '" already in use')
return
end
local pet = require("pets.pet").Pet.new(name, type, style, M.options)
@@ -40,7 +41,7 @@ function M.kill_pet(name)
M.pets[name]:kill()
M.pets[name] = nil
else
- vim.notify("Pet name not found", vim.log.levels.WARN)
+ utils.warning("Couldn't find a pet named \"" .. name .. '"')
end
end
diff --git a/lua/pets/commands.lua b/lua/pets/commands.lua
index d9c6745..975ec9b 100644
--- a/lua/pets/commands.lua
+++ b/lua/pets/commands.lua
@@ -1,18 +1,30 @@
local pets = require("pets")
local wd = debug.getinfo(1).source:sub(2):match("(.*nvim/)") .. "media/"
local available_pets = {}
-for _, pet in pairs(require("pets.utils").listdir(wd)) do
- local styles = require("pets.utils").listdir(wd .. pet)
+local utils = require("pets.utils")
+for _, pet in pairs(utils.listdir(wd)) do
+ local styles = utils.listdir(wd .. pet)
available_pets[pet] = styles
end
vim.api.nvim_create_user_command("PetsNew", function(input)
- --TODO: validate style and type options
local pet, style = pets.options.default_pet, pets.options.default_style
+
+ -- validate the pets and style options
+ if available_pets[pet] == nil then
+ utils.warning('The pet "' .. pet .. '" does not exist')
+ return
+ end
+ if available_pets[pet][style] then
+ utils.warning('The style "' .. style .. '" for "' .. pet .. '" does not exist')
+ return
+ end
+
if pets.options.random then
local styles = available_pets["cat"]
pet, style = "cat", styles[math.random(#styles)]
end
+
pets.create_pet(input.args, pet, style)
end, { nargs = 1 })
diff --git a/lua/pets/utils.lua b/lua/pets/utils.lua
index 9577911..0bf6e9b 100644
--- a/lua/pets/utils.lua
+++ b/lua/pets/utils.lua
@@ -24,4 +24,8 @@ function M.listdir(directory, suppress)
return t
end
+function M.warning(msg)
+ vim.notify(msg, vim.log.levels.WARN)
+end
+
return M