nvim/lua/pika/core/custom/hugopaste.lua
2025-04-10 11:19:28 +02:00

34 lines
1.3 KiB
Lua

function SaveScreenshotAndInsertLink()
-- Prompt for Hugo base directory if needed
-- Define the Hugo base directory and screenshot subfolder path
local base_dir
local current_file_dir = vim.fn.expand("%:p:h")
-- Detect base dir by looking for the Hugo structure, or prompt if not found
if current_file_dir:match("/content/") then
base_dir = current_file_dir:match("(.*)/content/")
else
-- Prompt for Hugo base directory if automatic detection fails
base_dir = vim.fn.input("Enter base directory of your Hugo site: ", "", "file")
end
local img_folder = base_dir .. "/static/images/screenshots/"
vim.fn.mkdir(img_folder, "p") -- Ensure the directory exists
-- Define the image name and full path
local img_name = os.date("%Y-%m-%d_%H-%M-%S") .. ".png"
local full_path = img_folder .. img_name
-- Save clipboard image as binary PNG file using wl-paste
os.execute("wl-paste --type image/png > " .. full_path)
-- Insert markdown image link at cursor position
local img_markdown = "![](/images/screenshots/" .. img_name .. ")\n"
vim.api.nvim_put({ img_markdown }, "c", true, true)
print("Screenshot saved and link added: " .. full_path)
end
-- Keybind for saving clipboard screenshot and inserting a Markdown link
vim.api.nvim_set_keymap("n", "<leader>ps", ":lua SaveScreenshotAndInsertLink()<CR>", { noremap = true, silent = true })